From a9691f5fe78af32c474754f841a71a68e2d2a484 Mon Sep 17 00:00:00 2001 From: Koren Lev Date: Mon, 2 Oct 2017 11:37:03 +0300 Subject: ui move to docker Change-Id: Iff31ebb3fff782e848704801b7800fdf480264a1 Signed-off-by: Koren Lev --- .../ui/components/scheduled-scan/scheduled-scan.js | 515 --------------------- 1 file changed, 515 deletions(-) delete mode 100644 ui/imports/ui/components/scheduled-scan/scheduled-scan.js (limited to 'ui/imports/ui/components/scheduled-scan/scheduled-scan.js') diff --git a/ui/imports/ui/components/scheduled-scan/scheduled-scan.js b/ui/imports/ui/components/scheduled-scan/scheduled-scan.js deleted file mode 100644 index 3970db0..0000000 --- a/ui/imports/ui/components/scheduled-scan/scheduled-scan.js +++ /dev/null @@ -1,515 +0,0 @@ -/* - * Template Component: ScheduledScan - */ - -//import { Meteor } from 'meteor/meteor'; -import { Template } from 'meteor/templating'; -import { SimpleSchema } from 'meteor/aldeed:simple-schema'; -import { ReactiveDict } from 'meteor/reactive-dict'; -import * as R from 'ramda'; -import { RRule } from 'rrule'; -import { ScheduledScans, - scansOnlyFields, - subsScheduledScansId, -} from '/imports/api/scheduled-scans/scheduled-scans'; -import { Environments } from '/imports/api/environments/environments'; -import { Constants } from '/imports/api/constants/constants'; -import { insert, remove, update } from '/imports/api/scheduled-scans/methods'; - -import '/imports/ui/components/mt-select/mt-select'; -import '/imports/ui/components/mt-input/mt-input'; -import '/imports/ui/components/mt-radios/mt-radios'; - -import './scheduled-scan.html'; - -/* - * Lifecycles - */ - -Template.ScheduledScan.onCreated(function() { - var instance = this; - - instance.state = new ReactiveDict(); - instance.state.setDefault({ - action: null, - _id: null, - model: null, - isError: false, - isSuccess: false, - isMessage: false, - message: null, - envsAsOptions: [], - logLevelsAsOptions: [], - pageHeader: 'Schedule a Scan', - reload: null, - }); - - instance.autorun(function () { - let data = Template.currentData(); - instance.state.get('reload'); - - new SimpleSchema({ - _id: { - type: { _str: { type: String, regEx: SimpleSchema.RegEx.Id } }, - optional: true - }, - action: { type: String }, - env: { type: String, optional: true }, - }).validate(data); - - instance.state.set('action', data.action); - instance.state.set('isError', false); - instance.state.set('isSuccess', false); - instance.state.set('isMessage', false); - instance.state.set('message', null); - instance.state.set('disabled', false); - - R.when(R.pipe(R.isNil, R.not), x => instance.state.set('_id', x))(data._id); - R.when(R.pipe(R.isNil, R.not), x => instance.state.set('env', x))(data.env); - }); - - instance.autorun(function () { - let currentOptions = instance.state.get('envsAsOptions'); - instance.subscribe('environments_config'); - let tempOptions = []; - - let addToOptionsDebounced = _.debounce(() => { - if (currentOptions.length === tempOptions.length) { - let result = R.intersectionWith(R.eqBy(R.prop('value')), tempOptions, currentOptions); - if (result.length === currentOptions.length) { - return; - } - } - - instance.state.set('envsAsOptions', tempOptions); - }, 250); - - Environments.find({}).forEach((env) => { - let option = envToOption(env); - tempOptions = R.unionWith(R.eqBy(R.prop('value')), [option], tempOptions); - addToOptionsDebounced(); - }); - }); - - instance.autorun(function () { - let currentOptions = instance.state.get('logLevelsAsOptions'); - instance.subscribe('constants'); - - let tempOptions = []; - - let addToOptionsDebounced = _.debounce(() => { - if (currentOptions.length === tempOptions.length) { - let result = R.intersectionWith(R.eqBy(R.prop('value')), tempOptions, currentOptions); - if (result.length === currentOptions.length) { - return; - } - } - - instance.state.set('logLevelsAsOptions', tempOptions); - }, 250); - - Constants.find({ name: 'log_levels' }).forEach((logLevelsRec) => { - let logLevels = logLevelsRec.data; - R.map((logLevel) => { - let option = logLevelToOption(logLevel); - tempOptions = R.unionWith(R.eqBy(R.prop('value')), [option], tempOptions); - addToOptionsDebounced(); - }, logLevels); - }); - - }); - - instance.autorun(function () { - let action = instance.state.get('action'); - let _id = instance.state.get('_id'); - let env = instance.state.get('env'); - - R.cond([ - [R.equals('insert'), _x => initInsertView(instance, env)], - [R.equals('update'), _x => initUpdateView(instance, _id)], - [R.equals('view'), _x => initViewView(instance, _id)], - [R.equals('remove'), _x => initRemoveView(instance, _id)], - [R.T, x => { throw `unimplemented action: ${R.toString(x)}`; }] - ])(action); - }); -}); - -/* -Template.ScheduledScan.rendered = function() { -}; -*/ - -/* - * Events - */ - -Template.ScheduledScan.events({ - 'submit .sm-item-form': function(event, instance) { - event.preventDefault(); - let model = instance.state.get('model'); - - submitItem(instance, model); - } -}); - -/* - * Helpers - */ - -Template.ScheduledScan.helpers({ - isUpdateableAction() { - let instance = Template.instance(); - let action = instance.state.get('action'); - - return R.contains(action, ['insert', 'update', 'remove']); - }, - - actionLabel: function () { - let instance = Template.instance(); - let action = instance.state.get('action'); - return calcActionLabel(action); - }, - - asJson: function (val) { - return JSON.stringify(val); - }, - - getState: function (key) { - let instance = Template.instance(); - return instance.state.get(key); - }, - - modelField: function (fieldName) { - let instance = Template.instance(); - return R.path([fieldName], instance.state.get('model')); - }, - - envsAsOptions: function () { - let instance = Template.instance(); - return instance.state.get('envsAsOptions'); - }, - - onInputInventoryFn: function () { - let instance = Template.instance(); - return { fn: createSetModelFn(instance, 'inventory') }; - }, - - onInputObjectIdFn: function () { - let instance = Template.instance(); - return { fn: createSetModelFn(instance, 'object_id') }; - }, - - onInputClearFn: function () { - let instance = Template.instance(); - return { fn: createSetModelFn(instance, 'clear') }; - }, - - onInputEnvFn: function () { - let instance = Template.instance(); - return { fn: createSetModelFn(instance, 'environment') }; - }, - - onInputLogLevelFn: function () { - let instance = Template.instance(); - return { fn: createSetModelFn(instance, 'log_level') }; - }, - - onInputFreqFn: function () { - let instance = Template.instance(); - return { fn: createSetModelFn(instance, 'freq') }; - }, - - argsSelect: function (args) { - //let instance = Template.instance(); - let classStr = args.hash.classStr; - let options = args.hash.options; - let selectedValue = args.hash.selectedValue; - let onInput = args.hash.onInput; - let disabled = args.hash.disabled; - - return { - classStr: classStr, - selectedValue: selectedValue, - isDisabled: disabled, - options: options, - onInput: onInput, - }; - }, - - scanOnlyFieldOptions: function () { - return [ - { label: 'Full scan', value: '_full_scan' }, - { label: 'Scan only inventory', value: 'scan_only_inventory' }, - { label: 'Scan only links', value: 'scan_only_links' }, - { label: 'Scan only cliques', value: 'scan_only_cliques' }, - ]; - }, - - scanOnlyFieldInputFn: function () { - let instance = Template.instance(); - - return { - fn: function (newFieldName) { - let model = instance.state.get('model'); - model = R.reduce((acc, fieldName) => { - return R.assoc(fieldName, false, acc); - }, model, scansOnlyFields); - - if (newFieldName === '_full_scan') { - console.log('full scan selected. all scan_only_ fields are reset'); - } else { - model = R.assoc(newFieldName, true, model); - } - instance.state.set('model', model); - } - }; - }, - - scanOnlyFieldsSelectedValue: function () { - let instance = Template.instance(); - let model = instance.state.get('model'); - if (R.isNil(model)) { return null; } - - let selectedValue = R.find((fieldName) => { - return R.prop(fieldName, model) === true; - }, scansOnlyFields); - - if (R.isNil(selectedValue)) { - selectedValue = '_full_scan'; - } - return selectedValue; - }, - - argsRadios: function (options, onInputFn, selectedValue) { - return { - inputClasses: 'cl-input', - options: options, - selectedValue: selectedValue, - onInput: onInputFn, - }; - }, - - freqsAsOptions: function () { - return [ - { label: 'Yearly', value: 'YEARLY' }, - { label: 'Monthly', value: 'MONTHLY' }, - { label: 'Weekly', value: 'WEEKLY' }, - { label: 'Daily', value: 'DAILY' }, - { label: 'Hourly', value: 'HOURLY' }, - ]; - }, - - argsInput: function (args) { - let classStr = args.hash.classStr; - let placeholder = args.hash.placeholder; - let inputValue = args.hash.inputValue; - let inputType = args.hash.inputType; - let onInput = args.hash.onInput; - let disabled = args.hash.disabled; - - return { - inputValue: inputValue, - inputType: inputType, - classStr: classStr, - placeholder: placeholder, - isDisabled: disabled, - onInput: onInput, - }; - }, - - getEnvsAsOptions: function () { - let instance = Template.instance(); - return instance.state.get('envsAsOptions'); - }, - - logLevelsAsOptions: function () { - let instance = Template.instance(); - return instance.state.get('logLevelsAsOptions'); - }, - - isGenDisabled: function () { - let instance = Template.instance(); - let action = instance.state.get('action'); - if (R.contains(action, ['view', 'remove'])) { - return true; - } - - return false; - }, - - getRecurrenceText: function (model) { - if (R.isNil(model)) { return ''; } - - let rule = new RRule({ - freq: RRule[model.freq] - }); - - return rule.toText(); - }, - - getNextRunText: function (model) { - if (R.isNil(model)) { return ''; } - if (R.isNil(model.scheduled_timestamp)) { return ''; } - - let next = moment(model.scheduled_timestamp); - return next.fromNow(); - }, -}); // end: helpers - - -function initInsertView(instance, env) { - instance.state.set('model', ScheduledScans.schema.clean({ - environment: env, - })); - - subscribeToOptionsData(instance); -} - -function initExistingItemView(instance, _id) { - subscribeToOptionsData(instance); - instance.subscribe(subsScheduledScansId, _id); - - ScheduledScans.find({ _id: _id }).forEach((model) => { - instance.state.set('model', model); - }); -} - -function initViewView(instance, _id) { - initExistingItemView(instance, _id); -} - -function initUpdateView(instance, _id) { - initExistingItemView(instance, _id); -} - -function initRemoveView(instance, _id) { - initExistingItemView(instance, _id); -} - -function subscribeToOptionsData(_instance) { - -} - -function envToOption(env) { - return { value: env.name, label: env.name }; -} - -function logLevelToOption(logLevel) { - return { value: logLevel.value, label: logLevel.label }; -} - -function createSetModelFn(instance, fieldName) { - return function (value) { - let model = instance.state.get('model'); - model = R.assoc(fieldName, value, model); - instance.state.set('model', model); - }; -} - -function calcActionLabel(action) { - switch (action) { - case 'insert': - return 'Add'; - case 'remove': - return 'Remove'; - case 'update': - return 'Update'; - default: - return 'Submit'; - } -} - -function submitItem( - instance, - model -) { - - let action = instance.state.get('action'); - - instance.state.set('isError', false); - instance.state.set('isSuccess', false); - instance.state.set('isMessage', false); - instance.state.set('message', null); - - switch (action) { - case 'insert': - insert.call({ - environment: model.environment, - object_id: model.object_id, - log_level: model.log_level, - clear: model.clear, - scan_only_inventory: model.scan_only_inventory, - scan_only_links: model.scan_only_links, - scan_only_cliques: model.scan_only_cliques, - freq: model.freq, - }, processActionResult.bind(null, instance)); - break; - - case 'update': - update.call({ - _id: model._id, - environment: model.environment, - object_id: model.object_id, - log_level: model.log_level, - clear: model.clear, - scan_only_inventory: model.scan_only_inventory, - scan_only_links: model.scan_only_links, - scan_only_cliques: model.scan_only_cliques, - freq: model.freq, - }, processActionResult.bind(null, instance)); - break; - - case 'remove': - remove.call({ - _id: model._id, - }, processActionResult.bind(null, instance)); - break; - - default: - // todo - break; - } -} - -function processActionResult(instance, error) { - let action = instance.state.get('action'); - - 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 { - instance.state.set('message', error.message); - } - - return; - } - - instance.state.set('isError', false); - instance.state.set('isSuccess', true); - instance.state.set('isMessage', true); - - switch (action) { - case 'insert': - instance.state.set('message', 'Record had been added successfully'); - instance.state.set('disabled', true); - break; - - case 'remove': - instance.state.set('message', 'Record had been removed successfully'); - instance.state.set('disabled', true); - break; - - case 'update': - instance.state.set('message', 'Record had been updated successfully'); - break; - } - - //Router.go('/link-types-list'); - setTimeout(() => { - instance.state.set('reload', Date.now()); - }, 7000); -} -- cgit 1.2.3-korg