|
|
|
@ -87,13 +87,28 @@ function setUserSetting(setting, value) {
|
|
|
|
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
/******************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
function updateMatrixSnapshot() {
|
|
|
|
var matrixSnapshotChanged = function() {
|
|
|
|
var snapshotReady = function() {
|
|
|
|
if ( typeof matrixSnapshot !== 'object' ) {
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( matrixSnapshot.mtxContentModified ) {
|
|
|
|
|
|
|
|
makeMenu();
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( matrixSnapshot.mtxCountModified ) {
|
|
|
|
|
|
|
|
updateMatrixCounts();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( matrixSnapshot.mtxColorModified ) {
|
|
|
|
updateMatrixColors();
|
|
|
|
updateMatrixColors();
|
|
|
|
updateMatrixBehavior();
|
|
|
|
updateMatrixBehavior();
|
|
|
|
updateMatrixButtons();
|
|
|
|
updateMatrixButtons();
|
|
|
|
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
matrixSnapshotPoller.mustFetch(snapshotReady);
|
|
|
|
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function updateMatrixSnapshot() {
|
|
|
|
|
|
|
|
matrixSnapshotPoller.pollNow(matrixSnapshotChanged);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
/******************************************************************************/
|
|
|
|
@ -316,6 +331,35 @@ function toggleSpecificCollapseState(uelem) {
|
|
|
|
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
/******************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Update count value of matrix cells(s)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function updateMatrixCounts() {
|
|
|
|
|
|
|
|
var matCells = uDom('.matrix .matRow.rw > .matCell');
|
|
|
|
|
|
|
|
var i = matCells.length;
|
|
|
|
|
|
|
|
var matRow, matCell, count, counts;
|
|
|
|
|
|
|
|
var headers = matrixSnapshot.headers;
|
|
|
|
|
|
|
|
var rows = matrixSnapshot.rows;
|
|
|
|
|
|
|
|
while ( i-- ) {
|
|
|
|
|
|
|
|
matCell = matCells.nodeAt(i);
|
|
|
|
|
|
|
|
if ( matCell.hostname === '*' ) {
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( matCell.reqType === '*' ) {
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
matRow = matCell.parentNode;
|
|
|
|
|
|
|
|
counts = matRow.classList.contains('meta') ? 'totals' : 'counts';
|
|
|
|
|
|
|
|
count = rows[matCell.hostname][counts][headers[matCell.reqType]];
|
|
|
|
|
|
|
|
if ( count === matCell.count) {
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
matCell.count = count;
|
|
|
|
|
|
|
|
matCell.textContent = count ? count : '\u00A0';
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
// Update color of matrix cells(s)
|
|
|
|
// Update color of matrix cells(s)
|
|
|
|
// Color changes when rules change
|
|
|
|
// Color changes when rules change
|
|
|
|
|
|
|
|
|
|
|
|
@ -1169,38 +1213,45 @@ var matrixSnapshotPoller = (function() {
|
|
|
|
timer = null;
|
|
|
|
timer = null;
|
|
|
|
if ( typeof response === 'object' ) {
|
|
|
|
if ( typeof response === 'object' ) {
|
|
|
|
matrixSnapshot = response;
|
|
|
|
matrixSnapshot = response;
|
|
|
|
makeMenu();
|
|
|
|
matrixSnapshotChanged();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
pollSnapshotAsync();
|
|
|
|
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
var pollSnapshot = function() {
|
|
|
|
var pollNow = function(callback) {
|
|
|
|
timer = null;
|
|
|
|
unpollAsync();
|
|
|
|
|
|
|
|
var onPolled = function(response) {
|
|
|
|
|
|
|
|
callback(response);
|
|
|
|
|
|
|
|
pollAsync();
|
|
|
|
|
|
|
|
};
|
|
|
|
messager.send({
|
|
|
|
messager.send({
|
|
|
|
what: 'matrixSnapshot',
|
|
|
|
what: 'matrixSnapshot',
|
|
|
|
tabId: matrixSnapshot.tabId,
|
|
|
|
tabId: matrixSnapshot.tabId,
|
|
|
|
|
|
|
|
mtxColorModifiedTime: matrixSnapshot.mtxColorModifiedTime,
|
|
|
|
mtxContentModifiedTime: matrixSnapshot.mtxContentModifiedTime,
|
|
|
|
mtxContentModifiedTime: matrixSnapshot.mtxContentModifiedTime,
|
|
|
|
mtxCountModifiedTime: matrixSnapshot.mtxCountModifiedTime
|
|
|
|
mtxCountModifiedTime: matrixSnapshot.mtxCountModifiedTime
|
|
|
|
}, snapshotPolled);
|
|
|
|
}, onPolled);
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var poll = function() {
|
|
|
|
|
|
|
|
timer = null;
|
|
|
|
|
|
|
|
pollNow(snapshotPolled);
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
var pollSnapshotAsync = function() {
|
|
|
|
var pollAsync = function() {
|
|
|
|
if ( timer !== null ) {
|
|
|
|
if ( timer !== null ) {
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
timer = setTimeout(pollSnapshot, 1414);
|
|
|
|
timer = setTimeout(poll, 1414);
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
var cancelSnapshotAsync = function() {
|
|
|
|
var unpollAsync = function() {
|
|
|
|
if ( timer !== null ) {
|
|
|
|
if ( timer !== null ) {
|
|
|
|
clearTimeout(timer);
|
|
|
|
clearTimeout(timer);
|
|
|
|
timer = null;
|
|
|
|
timer = null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
var mustFetch = function(callback) {
|
|
|
|
(function() {
|
|
|
|
cancelSnapshotAsync();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var tabId = matrixSnapshot.tabId;
|
|
|
|
var tabId = matrixSnapshot.tabId;
|
|
|
|
|
|
|
|
|
|
|
|
// If no tab id yet, see if there is one specified in our URL
|
|
|
|
// If no tab id yet, see if there is one specified in our URL
|
|
|
|
@ -1215,28 +1266,21 @@ var matrixSnapshotPoller = (function() {
|
|
|
|
if ( typeof response === 'object' ) {
|
|
|
|
if ( typeof response === 'object' ) {
|
|
|
|
matrixSnapshot = response;
|
|
|
|
matrixSnapshot = response;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
callback();
|
|
|
|
onMatrixSnapshotReady();
|
|
|
|
pollSnapshotAsync();
|
|
|
|
pollAsync();
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
messager.send({
|
|
|
|
messager.send({
|
|
|
|
what: 'matrixSnapshot',
|
|
|
|
what: 'matrixSnapshot',
|
|
|
|
tabId: tabId
|
|
|
|
tabId: tabId
|
|
|
|
}, snapshotFetched);
|
|
|
|
}, snapshotFetched);
|
|
|
|
};
|
|
|
|
})();
|
|
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
return pollNow;
|
|
|
|
mustFetch: mustFetch
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
})();
|
|
|
|
})();
|
|
|
|
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
/******************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
// Make menu only when popup html is fully loaded
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
uDom.onLoad(function() {
|
|
|
|
|
|
|
|
matrixSnapshotPoller.mustFetch(onMatrixSnapshotReady);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Below is UI stuff which is not key to make the menu, so this can
|
|
|
|
// Below is UI stuff which is not key to make the menu, so this can
|
|
|
|
// be done without having to wait for a tab to be bound to the menu.
|
|
|
|
// be done without having to wait for a tab to be bound to the menu.
|
|
|
|
|
|
|
|
|
|
|
|
@ -1277,7 +1321,6 @@ uDom.onLoad(function() {
|
|
|
|
.hasClass('g4Collapsed');
|
|
|
|
.hasClass('g4Collapsed');
|
|
|
|
setUserSetting('popupHideBlacklisted', collapsed);
|
|
|
|
setUserSetting('popupHideBlacklisted', collapsed);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
/******************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|