messages_view_backward_delta: {
type: Number,
minCount: 1,
- defaultValue: '1209600000', // 2 weeks
+ defaultValue: '1209600000', // 14 days
}
};
return new Counter(counterName, Messages.find(query));
});
+Meteor.publish('messages/count?backDelta&level&env', function (backDelta, level, env) {
+ const counterName = `messages/count?backDelta=${backDelta}&level=${level}&env=${env}`;
+ console.log(`subscribe - counter: ${counterName}`);
+
+ let begining = moment().subtract(backDelta);
+ let query = {
+ level: level,
+ environment: env,
+ timestamp: { $gte: begining.toDate() }
+ };
+
+ console.log(`query: ${R.toString(query)}`);
+
+ return new Counter(counterName, Messages.find(query));
+});
+
Meteor.publish('messages/count?level&env', function (level, env) {
const counterName = `messages/count?level=${level}&env=${env}`;
console.log(`subscribe - counter: ${counterName}`);
<form>
<div class="cl-field-group">
<label class="cl-field-label">Message view backward delta</label>
- <input name="msgsViewBackDelta"
- value="{{ getModelField 'messages_view_backward_delta' }}"
- class="cl-msgs-view-back-delta cl-input"
- type="number"
- placeholder="" />
- <div class="cl-field-desc">Backward duration of {{ durationHumanize (getModelField 'messages_view_backward_delta') }} from current date (miliseconds)</div>
+ <div class="input-box">
+ <input name="msgsViewBackDelta"
+ value="{{ getModelField 'messages_view_backward_delta' }}"
+ class="sm-msgs-view-back-delta cl-input"
+ type="number"
+ placeholder="" />
+ <div class="input-hint">
+ {{ durationAsText (getModelField 'messages_view_backward_delta') }}
+ </div>
+ </div>
+ <div class="cl-field-desc">Change the start duration of message display (miliseconds)</div>
</div>
-
<button type="button"
class="js-submit-button mdl-button mdl-js-button mdl-button--raised
mdl-js-ripple-effect mdl-button--colored"
Template.Configuration.events({
'click .js-submit-button': function (event, instance) {
event.preventDefault();
- let msgsViewBackDelta = instance.$('.cl-msgs-view-back-delta')[0].value;
+ let msgsViewBackDelta = Number.parseInt(instance.$('.sm-msgs-view-back-delta')[0].value);
saveForm(instance, msgsViewBackDelta);
- }
+ },
+
+ 'input .sm-msgs-view-back-delta': function (_e, instance) {
+ let msgsViewBackDelta = Number.parseInt(instance.$('.sm-msgs-view-back-delta')[0].value);
+ let model = instance.state.get('model');
+ model = R.assoc('messages_view_backward_delta', msgsViewBackDelta, model);
+ instance.state.set('model', model);
+ },
});
/*
return instance.state.get('actionResult') === 'success';
},
- durationHumanize: function (duration) {
- return moment.duration(duration).humanize();
- }
+ durationAsText: function (delta) {
+ let duration = moment.duration(delta);
+ let text = `${duration.years()} years, ${duration.months()} months, ${duration.days()} days, ${duration.hours()} hours and ${duration.minutes()} minutes from current time.`;
+ return text;
+ },
}); // end: helpers
function saveForm(instance, msgsViewBackDelta) {
width: 120px;
margin: 0 5px;
- >.cl-input
+ .input-box
display: block;
- width: 100%;
- min-height: 34px;
- padding: 6px 12px;
- font-size: 14px;
- line-height: 1.42857143;
- color: #555;
- background-color: #fff;
- background-image: none;
- border: 1px solid #ccc;
- border-radius: 4px;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
width: 400px;
margin: 0 5px;
+ .cl-input
+ display: block;
+ width: 100%;
+ min-height: 34px;
+ padding: 6px 12px;
+ font-size: 14px;
+ line-height: 1.42857143;
+ color: #555;
+ background-color: #fff;
+ background-image: none;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+ width: 400px;
+
+ .input-hint
+ position: absolute;
+ margin: 5px 0;
+
+
.cl-field-desc
margin: 0 5px;
(vconnectorsCount envItem.name)
) }}
</div>
- {{/each}} <!-- envItem in envList -->
+ {{/each}} <!-- envItem in envList -->
</div> <!-- flex box for environment cards -->
{{#each messagesInfoBox in (getListMessagesInfoBox) }}
<div class="sm-message-box">
{{> MessagesInfoBox (argsMessagesInfoBox messagesInfoBox
- (messageCount messagesInfoBox.level)) }}
+ (countOf (msgCounterName messagesInfoBox.level))) }}
</div>
{{/each }}
</div>
import { Template } from 'meteor/templating';
import { Inventory } from '/imports/api/inventories/inventories';
import { Counts } from 'meteor/tmeasday:publish-counts';
-import { Counter } from 'meteor/natestrauser:publish-performant-counts';
+//import { Counter } from 'meteor/natestrauser:publish-performant-counts';
//import { Messages } from '/imports/api/messages/messages';
import { store } from '/imports/ui/store/store';
import { setMainAppSelectedEnvironment } from '/imports/ui/actions/main-app.actions';
+import { Configurations } from '/imports/api/configurations/configurations';
import '/imports/ui/components/messages-info-box/messages-info-box';
import '/imports/ui/components/environment-box/environment-box';
Template.Dashboard.onCreated(function () {
var instance = this;
+ instance.state = new ReactiveDict();
+ instance.state.setDefault({
+ msgsViewBackDelta: 1
+ });
+
instance.autorun(function () {
instance.subscribe('environments_config');
store.dispatch(setMainAppSelectedEnvironment(null));
});
+
+ instance.autorun(function () {
+ instance.subscribe('configurations?user');
+ Configurations.find({user_id: Meteor.userId()}).forEach((conf) => {
+ instance.state.set('msgsViewBackDelta', conf.messages_view_backward_delta);
+ });
+ });
+
+ instance.autorun(function () {
+ let msgsViewBackDelta = instance.state.get('msgsViewBackDelta');
+
+ instance.subscribe('messages/count?backDelta&level', msgsViewBackDelta, 'info');
+ instance.subscribe('messages/count?backDelta&level', msgsViewBackDelta, 'warning');
+ instance.subscribe('messages/count?backDelta&level', msgsViewBackDelta, 'error');
+ });
});
Template.Dashboard.rendered = function(){
return Counts.get('messages?level!counter?' +
'level=' + 'error');
},
-/*
+ /*
notificationsTimestamp: function(){
var msgTimestamp = Messages.findOne({state:'added'},{fields: {'timestamp': 1} });
return msgTimestamp.timestamp;
];
},
- messageCount: function (level) {
- return Counter.get(`messages/count?level=${level}`);
+ msgCounterName: function (level) {
+ let instance = Template.instance();
+ let msgsViewBackDelta = instance.state.get('msgsViewBackDelta');
+ let counterName = `messages/count?backDelta=${msgsViewBackDelta}&level=${level}`;
+
+ return counterName;
},
argsMessagesInfoBox: function(boxDef, messageCount) {
import { Counts } from 'meteor/tmeasday:publish-counts';
import { Roles } from 'meteor/alanning:roles';
//import { idToStr } from '/imports/lib/utilities';
+import { Configurations } from '/imports/api/configurations/configurations';
import { Counter } from 'meteor/natestrauser:publish-performant-counts';
import '/imports/ui/components/data-cubic/data-cubic';
_id: null,
envName: null,
allowEdit: false,
+ msgsViewBackDelta: 1,
});
instance.autorun(function () {
instance.subscribe('inventory?env+type', env.name, 'project');
instance.subscribe('inventory?env+type', env.name, 'region');
+ /*
instance.subscribe('messages/count?level&env', 'info', env.name);
instance.subscribe('messages/count?level&env', 'warning', env.name);
instance.subscribe('messages/count?level&env', 'error', env.name);
+ */
let vConnectorCounterName = 'inventory?env+type!counter?env=' +
env.name + '&type=' + 'vconnector';
});
});
+
+ instance.autorun(function () {
+ instance.subscribe('configurations?user');
+ Configurations.find({user_id: Meteor.userId()}).forEach((conf) => {
+ instance.state.set('msgsViewBackDelta', conf.messages_view_backward_delta);
+ });
+ });
+
+ instance.autorun(function () {
+ let msgsViewBackDelta = instance.state.get('msgsViewBackDelta');
+ let env = instance.state.get('envName');
+
+ instance.subscribe('messages/count?backDelta&level&env', msgsViewBackDelta, 'info', env);
+ instance.subscribe('messages/count?backDelta&level&env', msgsViewBackDelta, 'warning', env);
+ instance.subscribe('messages/count?backDelta&level&env', msgsViewBackDelta, 'error', env);
+ });
});
/*
argsMessagesInfoBox: function(boxDef, env) {
let instance = Template.instance();
let envName = instance.state.get('envName');
+ let msgsViewBackDelta = instance.state.get('msgsViewBackDelta');
+
if (R.isNil(envName)) {
return {
title: '', count: 0, lastScanTimestamp: '', onMoreDetailsReq: function () {}
};
}
- let counterName = `messages/count?level=${boxDef.level}&env=${envName}`;
+ //let counterName = `messages/count?level=${boxDef.level}&env=${envName}`;
+ let counterName = `messages/count?backDelta=${msgsViewBackDelta}&level=${boxDef.level}&env=${envName}`;
let count = Counter.get(counterName);
//let count = Counts.get('messages?env+level!counter?env=' +