diff options
Diffstat (limited to 'ui/imports/ui/components')
39 files changed, 541 insertions, 164 deletions
diff --git a/ui/imports/ui/components/alarm-icons/alarm-icons.html b/ui/imports/ui/components/alarm-icons/alarm-icons.html index e59414e..b20ccac 100644 --- a/ui/imports/ui/components/alarm-icons/alarm-icons.html +++ b/ui/imports/ui/components/alarm-icons/alarm-icons.html @@ -74,7 +74,7 @@ {{/if }} <li class="dropdown-header"> - <a href="{{pathFor route='configuration' query=''}}" >Configuration</a> + <a href="{{pathFor route='user-settings' query=''}}" >User Settings</a> </li> </ul> </div> diff --git a/ui/imports/ui/components/alarm-icons/alarm-icons.js b/ui/imports/ui/components/alarm-icons/alarm-icons.js index e86f8d8..e379007 100644 --- a/ui/imports/ui/components/alarm-icons/alarm-icons.js +++ b/ui/imports/ui/components/alarm-icons/alarm-icons.js @@ -15,7 +15,7 @@ import { Messages } from '/imports/api/messages/messages'; import { Roles } from 'meteor/alanning:roles'; import { ReactiveDict } from 'meteor/reactive-dict'; -import { Configurations } from '/imports/api/configurations/configurations'; +import { UserSettings } from '/imports/api/user-settings/user-settings'; import './alarm-icons.html'; @@ -32,9 +32,9 @@ Template.alarmIcons.onCreated(function () { }); 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.subscribe('user_settings?user'); + UserSettings.find({user_id: Meteor.userId()}).forEach((userSettings) => { + instance.state.set('msgsViewBackDelta', userSettings.messages_view_backward_delta); }); }); diff --git a/ui/imports/ui/components/dashboard/dashboard.js b/ui/imports/ui/components/dashboard/dashboard.js index fb42d70..625f8ee 100644 --- a/ui/imports/ui/components/dashboard/dashboard.js +++ b/ui/imports/ui/components/dashboard/dashboard.js @@ -23,7 +23,7 @@ import { Counts } from 'meteor/tmeasday:publish-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 { UserSettings } from '/imports/api/user-settings/user-settings'; import '/imports/ui/components/messages-info-box/messages-info-box'; import '/imports/ui/components/environment-box/environment-box'; @@ -62,9 +62,9 @@ Template.Dashboard.onCreated(function () { }); 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.subscribe('user_settings?user'); + UserSettings.find({user_id: Meteor.userId()}).forEach((userSettings) => { + instance.state.set('msgsViewBackDelta', userSettings.messages_view_backward_delta); }); }); diff --git a/ui/imports/ui/components/detailed-node-info-box/detailed-node-info-box.html b/ui/imports/ui/components/detailed-node-info-box/detailed-node-info-box.html index f8c7221..27e2780 100644 --- a/ui/imports/ui/components/detailed-node-info-box/detailed-node-info-box.html +++ b/ui/imports/ui/components/detailed-node-info-box/detailed-node-info-box.html @@ -48,6 +48,11 @@ <div class="cl-data"><div class="">{{ node.admin_state_up }}</div></div> </div> </div> + + <div class="sm-info-json"> + <div class="cl-label">All Fields</div> + <div class="cl-data">{{ jsonAsString node }}</div> + </div> </div> </div> </template> diff --git a/ui/imports/ui/components/detailed-node-info-box/detailed-node-info-box.styl b/ui/imports/ui/components/detailed-node-info-box/detailed-node-info-box.styl index d51b393..e49ea6e 100644 --- a/ui/imports/ui/components/detailed-node-info-box/detailed-node-info-box.styl +++ b/ui/imports/ui/components/detailed-node-info-box/detailed-node-info-box.styl @@ -9,6 +9,7 @@ flex: 1; display: flex; flex-flow: column nowrap; + overflow: auto; .sm-info-title color: #0a9ad7; @@ -31,3 +32,10 @@ color: black; font-weight: bold; + .sm-info-json + >.cl-label + color: black; + font-weight: bold; + + >.cl-data + white-space: pre; diff --git a/ui/imports/ui/components/env-aci-info/env-aci-info.html b/ui/imports/ui/components/env-aci-info/env-aci-info.html index 51b7afa..dc22ac4 100644 --- a/ui/imports/ui/components/env-aci-info/env-aci-info.html +++ b/ui/imports/ui/components/env-aci-info/env-aci-info.html @@ -71,7 +71,7 @@ </div> <div class="form-group"> - <div class="col-sm-offset-2 col-sm-10"> + <div class="col-sm-offset-2"> <button type="button" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--colored toast" >Test connection</button> diff --git a/ui/imports/ui/components/env-aci-info/env-aci-info.js b/ui/imports/ui/components/env-aci-info/env-aci-info.js index 7d93687..bfe8935 100644 --- a/ui/imports/ui/components/env-aci-info/env-aci-info.js +++ b/ui/imports/ui/components/env-aci-info/env-aci-info.js @@ -39,7 +39,11 @@ Template.EnvAciInfo.events({ 'click .sm-next-button': function () { let instance = Template.instance(); instance.data.onNextRequested(); - } + }, + + 'click .js-test-connection' : function (e, instance) { + instance.data.onTestConnection(); + }, }); /* diff --git a/ui/imports/ui/components/env-amqp-credentials-info/env-amqp-credentials-info.html b/ui/imports/ui/components/env-amqp-credentials-info/env-amqp-credentials-info.html index 02b923d..e925f9e 100644 --- a/ui/imports/ui/components/env-amqp-credentials-info/env-amqp-credentials-info.html +++ b/ui/imports/ui/components/env-amqp-credentials-info/env-amqp-credentials-info.html @@ -93,9 +93,9 @@ </div> <div class="form-group"> - <div class="col-sm-offset-2 col-sm-2"> + <div class="col-sm-offset-2"> <button type="button" - class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--colored toast" + class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--colored toast js-test-connection" >Test connection</button> </div> diff --git a/ui/imports/ui/components/env-amqp-credentials-info/env-amqp-credentials-info.js b/ui/imports/ui/components/env-amqp-credentials-info/env-amqp-credentials-info.js index 3e1522a..498a403 100644 --- a/ui/imports/ui/components/env-amqp-credentials-info/env-amqp-credentials-info.js +++ b/ui/imports/ui/components/env-amqp-credentials-info/env-amqp-credentials-info.js @@ -38,7 +38,11 @@ Template.EnvAmqpCredentialsInfo.events({ 'click .sm-next-button': function () { let instance = Template.instance(); instance.data.onNextRequested(); - } + }, + + 'click .js-test-connection' : function (e, instance) { + instance.data.onTestConnection(); + }, }); /* diff --git a/ui/imports/ui/components/env-main-info/env-main-info.html b/ui/imports/ui/components/env-main-info/env-main-info.html index b8b7d26..f5d5df7 100644 --- a/ui/imports/ui/components/env-main-info/env-main-info.html +++ b/ui/imports/ui/components/env-main-info/env-main-info.html @@ -72,6 +72,26 @@ <div class="form-group"> <label for="" class="col-sm-2 control-label" + >Distribution Version</label> + + <div class="col-sm-3"> + {{> SelectModel(createSelectArgs + values=model.distribution_version + key="distribution_version" + disabled=(isFieldDisabled 'distribution_version' disabled) + options=distributionVersionOptions + showNullOption=true) + }} + </div> + + <div class="col-sm-4"> + <p>Enter type of the distribution</p> + </div> + </div> + + <div class="form-group"> + <label for="" + class="col-sm-2 control-label" >Type Drivers</label> <div class="col-sm-3"> diff --git a/ui/imports/ui/components/env-main-info/env-main-info.js b/ui/imports/ui/components/env-main-info/env-main-info.js index d866c0e..a5ed0d6 100644 --- a/ui/imports/ui/components/env-main-info/env-main-info.js +++ b/ui/imports/ui/components/env-main-info/env-main-info.js @@ -75,6 +75,12 @@ Template.EnvMainInfo.helpers({ return item.data; }, + distributionVersionOptions: function () { + let item = Constants.findOne({ name: 'distribution_versions' }); + if (R.isNil(item)) { return []; } + return item.data; + }, + /* depracated networkOptions: function () { let item = Constants.findOne({ name: 'network_plugins' }); @@ -118,6 +124,10 @@ function isDisabledByField(fieldName, actionName) { if (R.contains(fieldName, ['name', 'distribution']) && actionName !== 'insert') { return true; } + + if (R.contains(fieldName, ['name', 'distribution_version']) && actionName !== 'insert') { + return true; + } return false; } diff --git a/ui/imports/ui/components/env-master-host-credentials-info/env-master-host-credentials-info.html b/ui/imports/ui/components/env-master-host-credentials-info/env-master-host-credentials-info.html index e24c016..95c52a0 100644 --- a/ui/imports/ui/components/env-master-host-credentials-info/env-master-host-credentials-info.html +++ b/ui/imports/ui/components/env-master-host-credentials-info/env-master-host-credentials-info.html @@ -93,9 +93,9 @@ </div> <div class="form-group"> - <div class="col-sm-offset-2 col-sm-2"> + <div class="col-sm-offset-2"> <button type="button" - class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--colored toast" + class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--colored toast js-test-connection" >Test connection</button> </div> diff --git a/ui/imports/ui/components/env-master-host-credentials-info/env-master-host-credentials-info.js b/ui/imports/ui/components/env-master-host-credentials-info/env-master-host-credentials-info.js index 89b9fba..8aaefe4 100644 --- a/ui/imports/ui/components/env-master-host-credentials-info/env-master-host-credentials-info.js +++ b/ui/imports/ui/components/env-master-host-credentials-info/env-master-host-credentials-info.js @@ -38,7 +38,11 @@ Template.EnvMasterHostCredentialsInfo.events({ 'click .sm-next-button': function () { let instance = Template.instance(); instance.data.onNextRequested(); - } + }, + + 'click .js-test-connection' : function (e, instance) { + instance.data.onTestConnection(); + }, }); /* diff --git a/ui/imports/ui/components/env-monitoring-info/env-monitoring-info.html b/ui/imports/ui/components/env-monitoring-info/env-monitoring-info.html index ee0cc04..d114ffa 100644 --- a/ui/imports/ui/components/env-monitoring-info/env-monitoring-info.html +++ b/ui/imports/ui/components/env-monitoring-info/env-monitoring-info.html @@ -279,5 +279,12 @@ </div> </div> + <div class="form-group"> + <div class="col-sm-offset-2"> + <button type="button" + class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--colored toast js-test-connection">Test connection</button> + </div> + </div> + </div> </template> diff --git a/ui/imports/ui/components/env-monitoring-info/env-monitoring-info.js b/ui/imports/ui/components/env-monitoring-info/env-monitoring-info.js index cbe5e47..9e15c45 100644 --- a/ui/imports/ui/components/env-monitoring-info/env-monitoring-info.js +++ b/ui/imports/ui/components/env-monitoring-info/env-monitoring-info.js @@ -43,6 +43,9 @@ Template.EnvMonitoringInfo.rendered = function() { */ Template.EnvMonitoringInfo.events({ + 'click .js-test-connection' : function (e, instance) { + instance.data.onTestConnection(); + }, }); /* diff --git a/ui/imports/ui/components/env-nfv-info/env-nfv-info.html b/ui/imports/ui/components/env-nfv-info/env-nfv-info.html index 9b820ba..0d92bcd 100644 --- a/ui/imports/ui/components/env-nfv-info/env-nfv-info.html +++ b/ui/imports/ui/components/env-nfv-info/env-nfv-info.html @@ -111,9 +111,9 @@ </div> <div class="form-group"> - <div class="col-sm-offset-2 col-sm-10"> + <div class="col-sm-offset-2"> <button type="button" - class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--colored toast" + class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--colored toast js-test-connection" >Test connection</button> </div> diff --git a/ui/imports/ui/components/env-nfv-info/env-nfv-info.js b/ui/imports/ui/components/env-nfv-info/env-nfv-info.js index 296379c..7a32ab9 100644 --- a/ui/imports/ui/components/env-nfv-info/env-nfv-info.js +++ b/ui/imports/ui/components/env-nfv-info/env-nfv-info.js @@ -39,7 +39,11 @@ Template.EnvNfvInfo.events({ 'click .sm-next-button': function () { let instance = Template.instance(); instance.data.onNextRequested(); - } + }, + + 'click .js-test-connection' : function (e, instance) { + instance.data.onTestConnection(); + }, }); /* diff --git a/ui/imports/ui/components/env-open-stack-db-credentials-info/env-open-stack-db-credentials-info.html b/ui/imports/ui/components/env-open-stack-db-credentials-info/env-open-stack-db-credentials-info.html index 13967d5..f679918 100644 --- a/ui/imports/ui/components/env-open-stack-db-credentials-info/env-open-stack-db-credentials-info.html +++ b/ui/imports/ui/components/env-open-stack-db-credentials-info/env-open-stack-db-credentials-info.html @@ -93,9 +93,9 @@ </div> <div class="form-group"> - <div class="col-sm-offset-2 col-sm-2"> + <div class="col-sm-offset-2"> <button type="button" - class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--colored toast" + class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--colored toast js-test-connection" >Test connection</button> </div> diff --git a/ui/imports/ui/components/env-open-stack-db-credentials-info/env-open-stack-db-credentials-info.js b/ui/imports/ui/components/env-open-stack-db-credentials-info/env-open-stack-db-credentials-info.js index 961e5b6..b8b80c0 100644 --- a/ui/imports/ui/components/env-open-stack-db-credentials-info/env-open-stack-db-credentials-info.js +++ b/ui/imports/ui/components/env-open-stack-db-credentials-info/env-open-stack-db-credentials-info.js @@ -38,7 +38,11 @@ Template.EnvOpenStackDbCredentialsInfo.events({ 'click .sm-next-button': function () { let instance = Template.instance(); instance.data.onNextRequested(); - } + }, + + 'click .js-test-connection' : function (e, instance) { + instance.data.onTestConnection(); + }, }); /* diff --git a/ui/imports/ui/components/env-os-api-endpoint-info/env-os-api-endpoint-info.html b/ui/imports/ui/components/env-os-api-endpoint-info/env-os-api-endpoint-info.html index 3f35b9a..26594e4 100644 --- a/ui/imports/ui/components/env-os-api-endpoint-info/env-os-api-endpoint-info.html +++ b/ui/imports/ui/components/env-os-api-endpoint-info/env-os-api-endpoint-info.html @@ -111,9 +111,9 @@ </div> <div class="form-group"> - <div class="col-sm-offset-2 col-sm-2"> + <div class="col-sm-offset-2"> <button type="button" - class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--colored toast">Test connection</button> + class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--colored js-test-connection toast js-test-connection">Test connection</button> </div> <div class="col-sm-offset-2 col-sm-10 btn-mgt-5"> diff --git a/ui/imports/ui/components/env-os-api-endpoint-info/env-os-api-endpoint-info.js b/ui/imports/ui/components/env-os-api-endpoint-info/env-os-api-endpoint-info.js index 0f503f1..0bc640b 100644 --- a/ui/imports/ui/components/env-os-api-endpoint-info/env-os-api-endpoint-info.js +++ b/ui/imports/ui/components/env-os-api-endpoint-info/env-os-api-endpoint-info.js @@ -38,7 +38,11 @@ Template.EnvOsApiEndpointInfo.events({ 'click .sm-next-button': function () { let instance = Template.instance(); instance.data.onNextRequested(); - } + }, + + 'click .js-test-connection' : function (e, instance) { + instance.data.onTestConnection(); + }, }); /* diff --git a/ui/imports/ui/components/environment-dashboard/environment-dashboard.js b/ui/imports/ui/components/environment-dashboard/environment-dashboard.js index 4fb6366..da0d631 100644 --- a/ui/imports/ui/components/environment-dashboard/environment-dashboard.js +++ b/ui/imports/ui/components/environment-dashboard/environment-dashboard.js @@ -26,7 +26,7 @@ import { calcIconForMessageLevel, lastMessageTimestamp, calcColorClassForMessage 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 { UserSettings } from '/imports/api/user-settings/user-settings'; import { Counter } from 'meteor/natestrauser:publish-performant-counts'; import '/imports/ui/components/data-cubic/data-cubic'; @@ -167,9 +167,9 @@ Template.EnvironmentDashboard.onCreated(function() { }); 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.subscribe('user_settings?user'); + UserSettings.find({user_id: Meteor.userId()}).forEach((userSettings) => { + instance.state.set('msgsViewBackDelta', userSettings.messages_view_backward_delta); }); }); diff --git a/ui/imports/ui/components/environment-wizard/environment-wizard.js b/ui/imports/ui/components/environment-wizard/environment-wizard.js index ddc97cf..bc6cc55 100644 --- a/ui/imports/ui/components/environment-wizard/environment-wizard.js +++ b/ui/imports/ui/components/environment-wizard/environment-wizard.js @@ -9,11 +9,12 @@ /* */ -import { Meteor } from 'meteor/meteor'; +//import { Meteor } from 'meteor/meteor'; import { Session } from 'meteor/session'; import { Template } from 'meteor/templating'; import { ReactiveDict } from 'meteor/reactive-dict'; import * as R from 'ramda'; +import { ConnectionTests } from '/imports/api/connection-tests/connection-tests'; import { Environments } from '/imports/api/environments/environments'; import { subsNameSupportedEnvs, @@ -39,6 +40,8 @@ import { update } from '/imports/api/environments/methods'; +import { insert as insertConnectionTests } from '/imports/api/connection-tests/methods'; + /* * Lifecycles */ @@ -54,6 +57,7 @@ Template.EnvironmentWizard.onCreated(function(){ isMessage: false, message: null, disabled: false, + connectionTestId: null }); instance.autorun(function () { @@ -77,19 +81,40 @@ Template.EnvironmentWizard.onCreated(function(){ let action = instance.state.get('action'); if (action === 'update') { Environments.find({'name': envName}) - .forEach(function (envItem) { - instance.state.set('environmentModel', R.clone(envItem)); - }); + .forEach(function (envItem) { + instance.state.set('environmentModel', R.clone(envItem)); + }); } else if (action === 'insert') { instance.state.set('environmentModel', generateNewEnv()); } }); + instance.autorun(function () { + let connectionTestId = instance.state.get('connectionTestId'); + if (R.isNil(connectionTestId)) { return; } + + instance.subscribe('connection_tests?_id', connectionTestId); + ConnectionTests.find({ _id: connectionTestId }).forEach((connTest) => { + if (connTest.status !== 'response') { + return; + } + + R.mapObjIndexed((success, groupName) => { + if (success) { + toastr.success(`${groupName} connection is OK`, { timeOut: 5000 }); + } else { + toastr.error(`${groupName} connection is DOWN`, { timeOut: 5000 }); + } + }, connTest.test_results); + }); + }); + instance.storeUnsubscribe = store.subscribe(() => { let i18n = store.getState().api.i18n; instance.state.set('i18n', i18n); }); + let i18n = store.getState().api.i18n; instance.state.set('i18n', i18n); }); @@ -135,6 +160,7 @@ Template.EnvironmentWizard.helpers({ let isMonSupportedRes = isMonitoringSupported( environmentModel.distribution, + environmentModel.distribution_version, environmentModel.type_drivers, environmentModel.mechanism_drivers ); @@ -149,6 +175,7 @@ Template.EnvironmentWizard.helpers({ let isListeningSupportedRes = isListeningSupported( environmentModel.distribution, + environmentModel.distribution_version, environmentModel.type_drivers, environmentModel.mechanism_drivers ); @@ -171,6 +198,28 @@ Template.EnvironmentWizard.helpers({ isMonitoringDisabled: isMonitoringDisabled, setModel: function (newModel) { Session.set('isDirty', true); + + if (newModel.aci_enabled) { + let monitoringGroup = getGroupInArray('Monitoring', newModel.configuration); + newModel = setConfigurationGroup('Monitoring', monitoringGroup, newModel); + } else { + newModel = removeConfigurationGroup('Monitoring', newModel); + } + + if (newModel.enable_monitoring) { + let monitoringGroup = getGroupInArray('ACI', newModel.configuration); + newModel = setConfigurationGroup('ACI', monitoringGroup, newModel); + } else { + newModel = removeConfigurationGroup('ACI', newModel); + } + + if (newModel.listen) { + let monitoringGroup = getGroupInArray('AMQP', newModel.configuration); + newModel = setConfigurationGroup('AMQP', monitoringGroup, newModel); + } else { + newModel = removeConfigurationGroup('AMQP', newModel); + } + instance.state.set('environmentModel', newModel); }, onNextRequested: activateNextTab.bind(null, 'endpoint-panel'), @@ -192,6 +241,9 @@ Template.EnvironmentWizard.helpers({ }, onNextRequested: activateNextTab.bind(null, 'db-credentials'), action: action, + onTestConnection: function () { + testConnection(instance); + }, } }, { label: 'OS DB Credentials', @@ -209,6 +261,9 @@ Template.EnvironmentWizard.helpers({ }, onNextRequested: activateNextTab.bind(null, 'master-host'), action: action, + onTestConnection: function () { + testConnection(instance); + }, } }, { label: 'Master Host Credentials', @@ -226,6 +281,9 @@ Template.EnvironmentWizard.helpers({ }, onNextRequested: activateNextTab.bind(null, 'amqp'), action: action, + onTestConnection: function () { + testConnection(instance); + }, } }, { label: 'AMQP Credentials', @@ -243,6 +301,9 @@ Template.EnvironmentWizard.helpers({ }, onNextRequested: activateNextTab.bind(null, 'aci'), action: action, + onTestConnection: function () { + testConnection(instance); + }, } }, /* { @@ -279,6 +340,9 @@ Template.EnvironmentWizard.helpers({ }, onNextRequested: activateNextTab.bind(null, 'monitoringInfo'), action: action, + onTestConnection: function () { + testConnection(instance); + }, } }, { label: 'Monitoring', @@ -296,6 +360,9 @@ Template.EnvironmentWizard.helpers({ instance.state.set('environmentModel', newModel); }, action: action, + onTestConnection: function () { + testConnection(instance); + }, } }]; }, @@ -327,14 +394,18 @@ Template.EnvironmentWizard.helpers({ */ Template.EnvironmentWizard.events({ + /* 'click .toast' : function () { toastr.success('Have fun storming the castle!', 'Open Stack server says'); }, + */ // todo: research: seems not implemented + /* 'click .fa-trash' : function () { Meteor.call('deleteRecipe', this._id); }, + */ 'click .sm-submit-button': function () { let instance = Template.instance(); @@ -391,6 +462,36 @@ function processActionResult(instance, error) { } } +function processInsertTestConnnectionResult(instance, error, itemId) { + if (error) { + instance.state.set('isError', true); + instance.state.set('isSuccess', false); + instance.state.set('isMessage', true); + + if (typeof error === 'string') { + instance.state.set('message', error); + } else { + let message = error.message; + if (error.errors) { + message = R.reduce((acc, errorItem) => { + return acc + '\n- ' + errorItem.name; + }, message, error.errors); + } + instance.state.set('message', message); + } + + return; + } + + instance.state.set('connectionTestId', itemId); + + instance.state.set('isError', false); + instance.state.set('isSuccess', true); + instance.state.set('isMessage', true); + + instance.state.set('message', 'Connection send to be tested'); +} + function getGroupInArray(groupName, array) { let group = R.find(R.propEq('name', groupName), array); return group ? group : createNewConfGroup(groupName); @@ -407,6 +508,12 @@ function setConfigurationGroup(groupName, group, model) { return newModel; } +function removeConfigurationGroup(groupName, model) { + let newConfiguration = removeGroupInArray(groupName, model.configuration); + let newModel = R.assoc('configuration', newConfiguration, model); + return newModel; +} + function doSubmit(instance) { let action = instance.state.get('action'); let environment = instance.state.get( @@ -422,6 +529,7 @@ function doSubmit(instance) { insert.call({ configuration: environment.configuration, distribution: environment.distribution, + distribution_version: environment.distribution_version, name: environment.name, type_drivers: environment.type_drivers, mechanism_drivers: environment.mechanism_drivers, @@ -450,3 +558,11 @@ function doSubmit(instance) { break; } } + +function testConnection(instance) { + let environmentModel = instance.state.get('environmentModel'); + insertConnectionTests.call({ + environment: environmentModel.name, + test_configurations: environmentModel.configuration, + }, processInsertTestConnnectionResult.bind(null, instance)); +} diff --git a/ui/imports/ui/components/environment/environment.html b/ui/imports/ui/components/environment/environment.html index 96bc48c..e12921b 100644 --- a/ui/imports/ui/components/environment/environment.html +++ b/ui/imports/ui/components/environment/environment.html @@ -24,37 +24,44 @@ <div class="sm-main-content-segment"> - {{#if selectedNodeType }} - {{#if (getShow 'dashboard') }} - <div class="sm-dashboard"> - {{> UI.dynamic template=dashboardTemplate - data=(argsDashboard rdxSelectedNodeId) }} - </div> - {{/if }} - {{#if (getShow 'graph') }} - {{#if isSelectedNodeAGraph }} + {{#if isLoading }} + + <div class="sm-loading-message"></div> - <!--div class="sm-graph"> - > d3graph argsD3Graph - </div--> + {{else }} - <div class="sm-network-graph"> - {{> NetworkGraphManager argsNetworkGraphManager }} + {{#if selectedNodeType }} + {{#if (getShow 'dashboard') }} + <div class="sm-dashboard"> + {{> UI.dynamic template=dashboardTemplate + data=(argsDashboard rdxSelectedNodeId) }} </div> + {{/if }} + {{#if (getShow 'graph') }} + {{#if isSelectedNodeAGraph }} - {{> GraphTooltipWindow (argsGraphTooltipWindow graphTooltipWindow) }} + <!--div class="sm-graph"> + > d3graph argsD3Graph + </div--> - {{#if showVedgeInfoWindow }} - {{> VedgeInfoWindow (argsVedgeInfoWindow vedgeInfoWindow) }} - {{/if }} - - {{else }} + <div class="sm-network-graph"> + {{> NetworkGraphManager argsNetworkGraphManager }} + </div> - <div class="sm-node-no-graph-data-msg">{{ rPath i18n 'components.environment.noGraphForLeafMsg' }}</div> + {{> GraphTooltipWindow (argsGraphTooltipWindow graphTooltipWindow) }} + {{#if showVedgeInfoWindow }} + {{> VedgeInfoWindow (argsVedgeInfoWindow vedgeInfoWindow) }} + {{/if }} + + {{else }} + + <div class="sm-node-no-graph-data-msg">{{ rPath i18n 'components.environment.noGraphForLeafMsg' }}</div> + + {{/if }} {{/if }} {{/if }} - {{/if }} + {{/if }} <!-- if isLoading --> </div> </div> diff --git a/ui/imports/ui/components/environment/environment.js b/ui/imports/ui/components/environment/environment.js index 1f0e723..9df6046 100644 --- a/ui/imports/ui/components/environment/environment.js +++ b/ui/imports/ui/components/environment/environment.js @@ -96,6 +96,7 @@ Template.Environment.onCreated(function () { vedgeInfoWindow: { node: null, left: 0, top: 0, show: false }, dashboardName: 'environment', collapsedSideMenu: instance.collapsedSideMenu, + isLoading: false, }); instance.currentData = new ReactiveVar(null, EJSON.equals); @@ -226,27 +227,44 @@ Template.Environment.onCreated(function () { }); - /* - (() => { - if (R.isNil(controller.params.query.selectedNodeId) && - R.isNil(selectedNodeId)) { - return; - } + /* + (() => { + if (R.isNil(controller.params.query.selectedNodeId) && + R.isNil(selectedNodeId)) { + return; + } - let srlSelectedNodeId = idToStr(selectedNodeId); - if (R.equals(controller.params.query.selectedNodeId, srlSelectedNodeId)) { - return; - } + let srlSelectedNodeId = idToStr(selectedNodeId); + if (R.equals(controller.params.query.selectedNodeId, srlSelectedNodeId)) { + return; + } - setTimeout(() => { - Router.go('environment', - { _id: controller.params._id }, - { query: { selectedNodeId: srlSelectedNodeId } }); - }, 1); + setTimeout(() => { + Router.go('environment', + { _id: controller.params._id }, + { query: { selectedNodeId: srlSelectedNodeId } }); + }, 1); + + })(); + */ - })(); - */ + let prevIdPath = null; + instance.autorun(function () { + let idPath = instance.rdxSelectedNodeIdPath.get(); + if (prevIdPath !== idPath) { + prevIdPath = idPath; + instance.state.set('isLoading', true); + } + }); + instance.autorun(function () { + let isLoading = instance.state.get('isLoading'); + if (isLoading) { + setTimeout(() => { + instance.state.set('isLoading', false); + }, 200); + } + }); }); Template.Environment.onDestroyed(function () { @@ -294,6 +312,11 @@ Template.Environment.helpers({ return instance.state.get(key); }, + isLoading: function () { + let instance = Template.instance(); + return instance.state.get('isLoading'); + }, + argsNavMenu: function (envName, mainNode) { let instance = Template.instance(); return { diff --git a/ui/imports/ui/components/general-folder-node-dashboard/general-folder-node-dashboard.js b/ui/imports/ui/components/general-folder-node-dashboard/general-folder-node-dashboard.js index f383877..5a3b309 100644 --- a/ui/imports/ui/components/general-folder-node-dashboard/general-folder-node-dashboard.js +++ b/ui/imports/ui/components/general-folder-node-dashboard/general-folder-node-dashboard.js @@ -82,7 +82,7 @@ Template.GeneralFolderNodeDashboard.helpers({ argsMainCubic: function (childrenCount) { return { header: R.path(['components', 'generalFolderNodeDashboard', 'mainCubic', 'header'] - )(store.getState().api.i18n), + )(store.getState().api.i18n), dataInfo: R.toString(childrenCount), icon: new Icon({ type: 'fa', name: 'desktop' }), }; diff --git a/ui/imports/ui/components/graph-tooltip-window/graph-tooltip-window.js b/ui/imports/ui/components/graph-tooltip-window/graph-tooltip-window.js index dbeb55c..371a983 100644 --- a/ui/imports/ui/components/graph-tooltip-window/graph-tooltip-window.js +++ b/ui/imports/ui/components/graph-tooltip-window/graph-tooltip-window.js @@ -25,6 +25,9 @@ import './graph-tooltip-window.html'; Template.GraphTooltipWindow.onCreated(function() { let instance = this; + instance.simpleState = { + gotIn: false, + }; instance.autorun(() => { new SimpleSchema({ @@ -47,14 +50,19 @@ Template.GraphTooltipWindow.rendered = function() { */ Template.GraphTooltipWindow.events({ - 'mouseout .os-graph-tooltip-window': function(_e, _instance) { - /* + 'mouseenter .os-graph-tooltip-window': function(e, instance) { + instance.simpleState.gotIn = true; + }, + + 'mouseleave .os-graph-tooltip-window': function(e, instance) { if (!instance.data.show) { return; } - e.preventDefault(); - e.stopPropagation(); - store.dispatch(closeGraphTooltipWindow()); - */ + //e.preventDefault(); + //e.stopPropagation(); + if (instance.simpleState.gotIn) { + instance.simpleState.gotIn = false; + store.dispatch(closeGraphTooltipWindow()); + } }, 'click .os-graph-tooltip-window': function(e, instance) { diff --git a/ui/imports/ui/components/index.styl b/ui/imports/ui/components/index.styl index 877d68b..11485fd 100644 --- a/ui/imports/ui/components/index.styl +++ b/ui/imports/ui/components/index.styl @@ -56,4 +56,4 @@ @import 'network-graph-manager/*'; @import 'network-graph/*'; @import 'environment-box/*'; -@import 'configuration/*'; +@import 'user-settings/*'; diff --git a/ui/imports/ui/components/message/message.html b/ui/imports/ui/components/message/message.html index d720be1..3508372 100644 --- a/ui/imports/ui/components/message/message.html +++ b/ui/imports/ui/components/message/message.html @@ -70,7 +70,7 @@ {{ getAttrDisabled }} class="sm-input-message cl-input" rows="10" - >{{ asString (getModelField 'message') }}</textarea> + >{{ jsonAsString (getModelField 'message') }}</textarea> <div class="cl-field-desc">Message</div> </div> diff --git a/ui/imports/ui/components/message/message.js b/ui/imports/ui/components/message/message.js index 41ea53d..10ff830 100644 --- a/ui/imports/ui/components/message/message.js +++ b/ui/imports/ui/components/message/message.js @@ -151,7 +151,7 @@ Template.Message.helpers({ sourceSystemsList: function () { return R.ifElse(R.isNil, R.always([]), R.prop('data') - )(Constants.findOne({ name: 'message_source_systems' })); + )(Constants.findOne({ name: 'message_source_systems' })); }, getAttrDisabled: function () { @@ -204,11 +204,6 @@ Template.Message.helpers({ return calcActionLabel(action); }, - asString: function (val) { - let str = JSON.stringify(val, null, 4); - return str; - }, - argsInvPropDisplay: function (env, nodeId) { return { env: env, diff --git a/ui/imports/ui/components/network-graph-manager/network-graph-manager.js b/ui/imports/ui/components/network-graph-manager/network-graph-manager.js index ed556c0..5cd4f35 100644 --- a/ui/imports/ui/components/network-graph-manager/network-graph-manager.js +++ b/ui/imports/ui/components/network-graph-manager/network-graph-manager.js @@ -14,6 +14,7 @@ import { store } from '/imports/ui/store/store'; import { activateGraphTooltipWindow } from '/imports/ui/actions/graph-tooltip-window.actions'; import { closeGraphTooltipWindow } from '/imports/ui/actions/graph-tooltip-window.actions'; //import { activateVedgeInfoWindow } from '/imports/ui/actions/vedge-info-window.actions'; +import { EJSON } from 'meteor/ejson'; import '/imports/ui/components/network-graph/network-graph'; @@ -31,7 +32,14 @@ Template.NetworkGraphManager.onCreated(function() { id_path: null, graphDataChanged: null, isReady: false, + inventoriesToFind: [], + cliquesToFind: [], + linksToFind: [], + nodesToFind: [], + graphLinks: [], + graphNodes: [], }); + instance.simpleState = { graphData: { links: [], @@ -55,10 +63,116 @@ Template.NetworkGraphManager.onCreated(function() { let id_path = instance.state.get('id_path'); instance.simpleState.graphData = generateGraphData(); + instance.state.set('graphDataChanged', null); instance.state.set('isReady', false); + instance.state.set('inventoriesToFind', []); + instance.state.set('cliquesToFind', []); + instance.state.set('linksToFind', []); + instance.state.set('nodesToFind', []); + instance.state.set('graphLinks', []); + instance.state.set('graphNodes', []); + + //instance.subscribe('attributes_for_hover_on_data'); + //subscribeToNodeAndRelatedData(id_path, instance, instance.simpleState); + instance.state.set('inventoriesToFind', [id_path]); + }); + + instance.autorun(function () { + let inventories = instance.state.get('inventoriesToFind'); + if (inventories.length <= 0) { + return; + } + + instance.subscribe('inventory?id_path', inventories[0]); + + // id_path: assumption - unique + Inventory.find({ id_path: inventories[0] }).forEach((inventory) => { + if (! inventory.clique) { + return; + } + + instance.state.set('cliquesToFind', [inventory._id]); + }); + }); + + instance.autorun(function () { + let cliques = instance.state.get('cliquesToFind'); + if (cliques.length <= 0) { + return; + } - instance.subscribe('attributes_for_hover_on_data'); - subscribeToNodeAndRelatedData(id_path, instance, instance.simpleState); + // focal point: assumption - unique per inventory node. + let mainNodeIdStr = cliques[0]._str; + instance.subscribe('cliques?focal_point', mainNodeIdStr); + + Cliques.find({ focal_point: new Mongo.ObjectID(mainNodeIdStr) }).forEach( function (cliqueItem) { + instance.state.set('linksToFind', cliqueItem.links); + }); + }); + + instance.autorun(function () { + let linksToFind = instance.state.get('linksToFind'); + if (linksToFind.length <= 0) { + return; + } + + // Find links for focal point. + instance.subscribe('links?_id-in', linksToFind); + + Links.find({ _id: {$in: linksToFind} }).forEach(function(link) { + let graphLinks = EJSON.parse(instance.state.keys['graphLinks']); + graphLinks = R.concat([link], graphLinks); + instance.state.set('graphLinks', graphLinks); + }); + }); + + instance.autorun(function () { + let graphLinks = instance.state.get('graphLinks'); + if (graphLinks.length <= 0) { + return; + } + + instance.simpleState.graphData = addLinksToGraph(graphLinks, instance.simpleState.graphData); + instance.state.set('graphDataChanged', Date.now()); + + // Find nodes for link + // todo: remove dubplicates. + let nodesIds = R.chain(link => { + return [ link['source'], link['target'] ]; + }, graphLinks); + + let nodesToFind = EJSON.parse(instance.state.keys['nodesToFind']); + nodesToFind = R.concat(nodesIds, nodesToFind); + instance.state.set('nodesToFind', nodesToFind); + }); + + instance.autorun(function () { + let nodesToFind = instance.state.get('nodesToFind'); + if (nodesToFind.length <= 0) { + return; + } + + instance.subscribe('inventory?_id-in', nodesToFind); + + Inventory.find({ _id: { $in: nodesToFind } }).forEach(function (node) { + let graphNodes = EJSON.parse(instance.state.keys['graphNodes']); + graphNodes = R.concat([node], graphNodes); + instance.state.set('graphNodes', graphNodes); + }); + + }); + + instance.autorun(function () { + let graphNodes = instance.state.get('graphNodes'); + if (graphNodes.length <= 0) { + return; + } + + instance.simpleState.graphData = addNodesToGraph(graphNodes, instance.simpleState.graphData); + + let isReady = calcIsReady(instance.simpleState.graphData); + instance.state.set('graphDataChanged', Date.now()); + instance.state.set('isReady', isReady); }); }); @@ -111,7 +225,7 @@ Template.NetworkGraphManager.helpers({ } store.dispatch( - activateGraphTooltipWindow(res.nodeName, res.attributes, x - 30, y - 10)); + activateGraphTooltipWindow(res.nodeName, res.attributes, x + 30, y - 10)); }); }, onNodeOut: function (_nodeId) { @@ -127,8 +241,8 @@ Template.NetworkGraphManager.helpers({ isDragging = false; }, onGroupOver: function () { - instance.simpleState.itemOfInterest = null; - store.dispatch(closeGraphTooltipWindow()); + //instance.simpleState.itemOfInterest = null; + //store.dispatch(closeGraphTooltipWindow()); }, onLinkOver: function (linkId, x, y) { if (isDragging) { @@ -162,46 +276,6 @@ Template.NetworkGraphManager.helpers({ } }); // end: helpers -function subscribeToNodeAndRelatedData(id_path, instance, simpleState) { - instance.subscribe('inventory?id_path', id_path); - - // id_path: assumption - unique - Inventory.find({ id_path: id_path }).forEach((inventory) => { - if (! inventory.clique) { - return; - } - - // focal point: assumption - unique per inventory node. - let mainNodeIdStr = inventory._id._str; - instance.subscribe('cliques?focal_point', mainNodeIdStr); - - Cliques.find({ focal_point: new Mongo.ObjectID(mainNodeIdStr) }).forEach( function (cliqueItem) { - - // Find links for focal point. - instance.subscribe('links?_id-in', cliqueItem.links); - - Links.find({ _id: {$in: cliqueItem.links} }).forEach(function(link) { - simpleState.graphData = addLinkToGraph(link, simpleState.graphData); - instance.state.set('graphDataChanged', Date.now()); - - // Find nodes for link - let nodesIds = [ link['source'], link['target'] ]; - instance.subscribe('inventory?_id-in', nodesIds); - - Inventory.find({ _id: { $in: nodesIds } }).forEach(function (node) { - simpleState.graphData = addNodeToGraph(node, simpleState.graphData); - let isReady = calcIsReady(simpleState.graphData); - instance.state.set('graphDataChanged', Date.now()); - instance.state.set('isReady', isReady); - - // Find nodes attributes for links nodes. - instance.subscribe('attributes_for_hover_on_data?type', node.type); - }); - }); - }); - }); -} - function generateGraphData() { return { nodes: [], @@ -210,7 +284,7 @@ function generateGraphData() { }; } -function addLinkToGraph(link, graphData) { +function genGraphLink(link) { let newLink = { sourceId: link.source, targetId: link.target, @@ -222,6 +296,24 @@ function addLinkToGraph(link, graphData) { } }; + return newLink; +} + +function addLinksToGraph(linksInfo, graphData) { + let newLinks = R.map(link => genGraphLink(link), linksInfo); + + let links = R.unionWith(R.eqBy(R.prop('_osid')), graphData.links, newLinks); + links = expandLinks(links, graphData.nodes); + + return R.merge(graphData, { + links: links + }); +} + +/* +function addLinkToGraph(link, graphData) { + let newLink = genGraphLink(link); + let links = R.unionWith(R.eqBy(R.prop('_osid')), graphData.links, [newLink]); links = expandLinks(links, graphData.nodes); @@ -229,6 +321,7 @@ function addLinkToGraph(link, graphData) { links: links }); } +*/ function expandLinks(links, nodes) { return R.map((link) => { @@ -248,7 +341,7 @@ function expandLinks(links, nodes) { }, links); } -function addNodeToGraph(node, graphData) { +function genGraphNode(node) { let newNode = { _osid: node._id, _osmeta: { @@ -268,8 +361,30 @@ function addNodeToGraph(node, graphData) { })(groupMarkers); if (groupKey) { newNode = R.assocPath(['_osmeta', 'groupId'], node[groupKey], newNode); + newNode = R.assocPath(['_osmeta', 'groupType'], groupKey, newNode); } + return newNode; +} + +function addNodesToGraph(nodesInfo, graphData) { + let newNodes = R.map((node) => genGraphNode(node), nodesInfo); + + let nodes = R.unionWith(R.eqBy(R.prop('_osid')), graphData.nodes, newNodes); + let links = expandLinks(graphData.links, nodes); + let groups = calcGroups(nodes); + + return R.merge(graphData, { + nodes: nodes, + links: links, + groups: groups, + }); +} + +/* +function addNodeToGraph(node, graphData) { + let newNode = genGraphNode(node); + let nodes = R.unionWith(R.eqBy(R.prop('_osid')), graphData.nodes, [newNode]); let links = expandLinks(graphData.links, nodes); let groups = calcGroups(nodes); @@ -280,6 +395,7 @@ function addNodeToGraph(node, graphData) { groups: groups, }); } +*/ function calcIsReady(graphData) { return R.all((link) => { @@ -302,6 +418,7 @@ function calcGroups(nodes) { leaves: [node], isExpanded: true, name: groupId, + type: node._osmeta.groupType, }; accGroups = R.append(group, accGroups); diff --git a/ui/imports/ui/components/network-graph/network-graph.js b/ui/imports/ui/components/network-graph/network-graph.js index 68b3a57..04b69e3 100644 --- a/ui/imports/ui/components/network-graph/network-graph.js +++ b/ui/imports/ui/components/network-graph/network-graph.js @@ -27,6 +27,7 @@ Template.NetworkGraph.onCreated(function() { instance.simpleState = { graphData: null }; + instance.prevForce = null; instance.autorun(function () { let data = Template.currentData(); @@ -73,11 +74,27 @@ Template.NetworkGraph.rendered = function() { instance.onDragStart, instance.onDragEnd, instance.onGroupOver, - instance.onLinkOver + instance.onLinkOver, + function onNewForce(newForce) { + if (instance.prevForce) { + instance.prevForce.stop(); + } + instance.prevForce = newForce; + } ); }); }; +Template.NetworkGraph.onDestroyed(function () { + let instance = Template.instance(); + let graphEl = instance.$('.sm-graph')[0]; + let svg = d3.select(graphEl).select('svg'); + if (instance.prevForce) { + instance.prevForce.stop(); + } + + svg.remove(); +}); /* * Events */ @@ -138,10 +155,13 @@ function renderGraph( onDragStart, onDragEnd, onGroupOver, - onLinkOver + onLinkOver, + onNewForce ) { let force = genForceCola(cola, d3, w, h); + onNewForce(force); + let drag = force.drag() .on('start', function (_d) { onDragStart(); @@ -295,7 +315,8 @@ function genSvgNodes(g, nodes, drag, onNodeOver, onNodeOut, onNodeClick, onGroup onNodeOut(d._osmeta.nodeId); }) .on('click', function (d) { - if (R.path(['_osmeta', 'type'], d) === 'view_group') { + let type = R.defaultTo('', R.path(['_osmeta', 'type'], d)); + if (R.contains(type, ['view_group-host', 'view_group-switch'])) { onGroupNodeClick(d._osmeta.nodeId); } onNodeClick(d._osmeta.nodeId); @@ -624,7 +645,7 @@ function calcClosedGroupsNodes(rejectedGroups, prevViewNodes) { return R.append({ _osid: nodeId, _osmeta: { - type: 'view_group', + type: `view_group-${group.type}`, nodeId: group._osid, }, width: 60, diff --git a/ui/imports/ui/components/new-scanning/new-scanning.js b/ui/imports/ui/components/new-scanning/new-scanning.js index 891d2b3..27b72c2 100644 --- a/ui/imports/ui/components/new-scanning/new-scanning.js +++ b/ui/imports/ui/components/new-scanning/new-scanning.js @@ -2,10 +2,11 @@ * Template Component: NewScanning */ -//import { Meteor } from 'meteor/meteor'; +import * as R from 'ramda'; import { Template } from 'meteor/templating'; import { SimpleSchema } from 'meteor/aldeed:simple-schema'; import { ReactiveDict } from 'meteor/reactive-dict'; +import { ScheduledScans, subsScheduledScansEnv } from '/imports/api/scheduled-scans/scheduled-scans'; import './new-scanning.html'; @@ -18,15 +19,24 @@ Template.NewScanning.onCreated(function() { instance.state = new ReactiveDict(); instance.state.setDefault({ env: null, + scheduledScanId: null }); - instance.autorun(function (env) { + instance.autorun(function () { let data = Template.currentData(); new SimpleSchema({ env: { type: String, optional: true }, }).validate(data); - instance.state.set('env', env); + instance.state.set('env', data.env); + }); + + instance.autorun(function () { + let env = instance.state.get('env'); + instance.subscribe(subsScheduledScansEnv, env); + ScheduledScans.find({ environment: env }).forEach((schedule) => { + instance.state.set('scheduledScanId', schedule._id); + }); }); }); @@ -55,9 +65,14 @@ Template.NewScanning.helpers({ }, argsScheduledScan: function (env) { + let instance = Template.instance(); + let scheduledScanId = instance.state.get('scheduledScanId'); + let action = R.ifElse(R.isNil, R.always('insert'), R.always('update'))(scheduledScanId); + return { - action: 'insert', + action: action, env: env, + _id: scheduledScanId, }; }, }); // end: helpers diff --git a/ui/imports/ui/components/scanning-request/scanning-request.js b/ui/imports/ui/components/scanning-request/scanning-request.js index 6e6d3e4..44b2f79 100644 --- a/ui/imports/ui/components/scanning-request/scanning-request.js +++ b/ui/imports/ui/components/scanning-request/scanning-request.js @@ -283,7 +283,7 @@ function submitItem(instance) { }, processActionResult.bind(null, instance)); break; default: - // todo + // todo break; } } diff --git a/ui/imports/ui/components/scheduled-scan/scheduled-scan.js b/ui/imports/ui/components/scheduled-scan/scheduled-scan.js index 56622dc..3970db0 100644 --- a/ui/imports/ui/components/scheduled-scan/scheduled-scan.js +++ b/ui/imports/ui/components/scheduled-scan/scheduled-scan.js @@ -466,7 +466,7 @@ function submitItem( break; default: - // todo + // todo break; } } diff --git a/ui/imports/ui/components/scheduled-scans-list/scheduled-scans-list.html b/ui/imports/ui/components/scheduled-scans-list/scheduled-scans-list.html index 2f986f5..a796562 100644 --- a/ui/imports/ui/components/scheduled-scans-list/scheduled-scans-list.html +++ b/ui/imports/ui/components/scheduled-scans-list/scheduled-scans-list.html @@ -44,7 +44,7 @@ <td>{{ scan.environment }}</td> <td>{{ scan.inventory }}</td> <td>{{ scan.object_id }}</td> - <td>{{ scan.frequency }}</td> + <td>{{ scan.freq }}</td> <td>{{ scan.submit_timestamp }}</td> <td> <a href="{{pathFor route='scheduled-scan' diff --git a/ui/imports/ui/components/configuration/configuration.html b/ui/imports/ui/components/user-settings/user-settings.html index c8d81b2..a157d52 100644 --- a/ui/imports/ui/components/configuration/configuration.html +++ b/ui/imports/ui/components/user-settings/user-settings.html @@ -1,6 +1,6 @@ -<template name="Configuration"> -<div class="os-configuration cards white"> - <h3>Configurations</h3> +<template name="UserSettings"> +<div class="os-user-settings cards white"> + <h3>UserSettings</h3> <form> <div class="cl-field-group"> <label class="cl-field-label">Message view backward delta</label> diff --git a/ui/imports/ui/components/configuration/configuration.js b/ui/imports/ui/components/user-settings/user-settings.js index a3582df..953a6fb 100644 --- a/ui/imports/ui/components/configuration/configuration.js +++ b/ui/imports/ui/components/user-settings/user-settings.js @@ -1,5 +1,5 @@ /* - * Template Component: Configuration + * Template Component: UserSettings */ //import { Meteor } from 'meteor/meteor'; @@ -8,20 +8,20 @@ import { ReactiveDict } from 'meteor/reactive-dict'; //import { SimpleSchema } from 'meteor/aldeed:simple-schema'; import * as R from 'ramda'; -import { save } from '/imports/api/configurations/methods'; -import { Configurations } from '/imports/api/configurations/configurations'; +import { save } from '/imports/api/user-settings/methods'; +import { UserSettings } from '/imports/api/user-settings/user-settings'; -import './configuration.html'; +import './user-settings.html'; /* * Lifecycles */ -Template.Configuration.onCreated(function() { +Template.UserSettings.onCreated(function() { let instance = this; instance.state = new ReactiveDict(); instance.state.setDefault({ - model: Configurations.schema.clean({}), + model: UserSettings.schema.clean({}), actionResult: 'none', message: null, }); @@ -36,15 +36,15 @@ Template.Configuration.onCreated(function() { */ instance.autorun(function () { - instance.subscribe('configurations?user'); - Configurations.find({user_id: Meteor.userId()}).forEach((conf) => { - instance.state.set('model', conf); + instance.subscribe('user_settings?user'); + UserSettings.find({user_id: Meteor.userId()}).forEach((userSettings) => { + instance.state.set('model', userSettings); }); }); }); /* -Template.Configuration.rendered = function() { +Template.UserSettings.rendered = function() { }; */ @@ -52,7 +52,7 @@ Template.Configuration.rendered = function() { * Events */ -Template.Configuration.events({ +Template.UserSettings.events({ 'click .js-submit-button': function (event, instance) { event.preventDefault(); let msgsViewBackDelta = Number.parseInt(instance.$('.sm-msgs-view-back-delta')[0].value); @@ -71,7 +71,7 @@ Template.Configuration.events({ * Helpers */ -Template.Configuration.helpers({ +Template.UserSettings.helpers({ getModelField: function (fieldName) { let instance = Template.instance(); return R.path([fieldName], instance.state.get('model')); diff --git a/ui/imports/ui/components/configuration/configuration.styl b/ui/imports/ui/components/user-settings/user-settings.styl index b14ce7d..edf5e5c 100644 --- a/ui/imports/ui/components/configuration/configuration.styl +++ b/ui/imports/ui/components/user-settings/user-settings.styl @@ -1,6 +1,4 @@ -/* Set the component style here */ -// "Configuration" -.os-configuration +.os-user-settings display: flex; flex-flow: column nowrap; margin: 20px; |