fix(cockpit/firefox): fix bug with entities in firefox (ordering)

This commit is contained in:
Jonathan Rainville 2019-03-12 16:20:47 -04:00 committed by Iuri Matias
parent 447f3eda06
commit dddc9d0cf6
2 changed files with 12 additions and 8 deletions

View File

@ -88,7 +88,7 @@ const sorter = {
},
};
const filtrer = {
const filters = {
processes: function(process, index, self) {
if (["embark", "blockchain"].indexOf(process.name) === -1) return false;
return index === self.findIndex((t) => t.name === process.name);
@ -151,8 +151,8 @@ function entities(state = entitiesDefaultState, action) {
return {...state, files: action.files};
}
for (let name of Object.keys(state)) {
let filter = filtrer[name] || (() => true);
let sort = sorter[name] || (() => true);
let filter = filters[name] || (() => true);
let sort = sorter[name] || (() => 0);
if (action[name] && action[name].length > 1) {
return {...state, [name]: [...action[name], ...state[name]].sort(sort).filter(filter)};
}
@ -160,8 +160,8 @@ function entities(state = entitiesDefaultState, action) {
let entity = action[name][0];
let nested = Object.keys(state).reduce((acc, entityName) => {
if (entity && entity[entityName] && entity[entityName].length > 0) {
let entityFilter = filtrer[entityName] || (() => true);
let entitySort = sorter[entityName] || (() => true);
let entityFilter = filters[entityName] || (() => true);
let entitySort = sorter[entityName] || (() => 0);
acc[entityName] = [...entity[entityName], ...state[entityName]].sort(entitySort).filter(entityFilter);
}
return acc;

View File

@ -1,4 +1,5 @@
let async = require('../utils/async_extend.js');
const async = require('../utils/async_extend.js');
const deepEqual = require('deep-equal');
class ServicesMonitor {
constructor(options) {
@ -32,9 +33,12 @@ ServicesMonitor.prototype.initCheck = function (checkName) {
if (check && check.status === 'on' && obj.status === 'off') {
self.events.emit('check:wentOffline:' + checkName);
}
self.checkState[checkName] = {name: obj.name, status: obj.status, serviceName: checkName};
check.status = obj.status;
self.events.emit("servicesState", self.checkState);
const newState = {name: obj.name, status: obj.status, serviceName: checkName};
if (!deepEqual(newState, self.checkState[checkName])) {
self.checkState[checkName] = {name: obj.name, status: obj.status, serviceName: checkName};
self.events.emit("servicesState", self.checkState);
}
});
if (check.interval !== 0) {