diff options
Diffstat (limited to 'ui/imports/ui/components/env-form')
-rw-r--r-- | ui/imports/ui/components/env-form/env-form.html | 37 | ||||
-rw-r--r-- | ui/imports/ui/components/env-form/env-form.js | 94 | ||||
-rw-r--r-- | ui/imports/ui/components/env-form/env-form.styl | 0 |
3 files changed, 131 insertions, 0 deletions
diff --git a/ui/imports/ui/components/env-form/env-form.html b/ui/imports/ui/components/env-form/env-form.html new file mode 100644 index 0000000..a0fd3bd --- /dev/null +++ b/ui/imports/ui/components/env-form/env-form.html @@ -0,0 +1,37 @@ +<!-- +######################################################################################## +# Copyright (c) 2017 Koren Lev (Cisco Systems), Yaron Yogev (Cisco Systems) and others # +# # +# All rights reserved. This program and the accompanying materials # +# are made available under the terms of the Apache License, Version 2.0 # +# which accompanies this distribution, and is available at # +# http://www.apache.org/licenses/LICENSE-2.0 # +######################################################################################## + --> +<template name="envForm"> + +<!-- li class dropdown --> +<a id="dLabel" data-target="#" href="#" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> + {{ selectedEnvName }} + <span class="caret"></span> +</a> + +<ul class="os-env-form-dropdown-menu dropdown-menu" + aria-labelledby="dLabel" + style="color: black; padding: 10px;" > + + <li><a href="{{pathFor route='wizard'}}" class="droplist">Add new environment</a></li> + <li class="divider"></li> + <li style="border-bottom: 3px solid #2196f3;">Existing environments:</li> + {{#each envItem in envList}} + <li><a class="sm-env-item envList droplist" + data-env-name="{{ envItem.name }}" + data-env-id="{{ idToStr envItem._id }}" + >{{envItem.name}}</a></li> + {{/each}} +</ul> + +</template> + + + diff --git a/ui/imports/ui/components/env-form/env-form.js b/ui/imports/ui/components/env-form/env-form.js new file mode 100644 index 0000000..3007021 --- /dev/null +++ b/ui/imports/ui/components/env-form/env-form.js @@ -0,0 +1,94 @@ +///////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2017 Koren Lev (Cisco Systems), Yaron Yogev (Cisco Systems) and others / +// / +// All rights reserved. This program and the accompanying materials / +// are made available under the terms of the Apache License, Version 2.0 / +// which accompanies this distribution, and is available at / +// http://www.apache.org/licenses/LICENSE-2.0 / +///////////////////////////////////////////////////////////////////////////////////////// +/* + * Template Component: envForm + */ + +import * as R from 'ramda'; +import { SimpleSchema } from 'meteor/aldeed:simple-schema'; +import { Environments } from '/imports/api/environments/environments'; +import { parseReqId } from '/imports/lib/utilities'; + +import './env-form.html'; + +/* + * Lifecycle methods + */ + +Template.envForm.onCreated(function () { + var instance = this; + instance.state = new ReactiveDict(); + instance.state.setDefault({ + selectedEnv: null + }); + + + instance.autorun(function() { + let data = R.when(R.isNil, R.always({}), Template.currentData()); + + new SimpleSchema({ + selectedEnvironment: { + type: Object, + blackbox: true, + optional: true + }, + onEnvSelected: { type: Function } + }).validate(data); + + instance.state.set('selectedEnv', data.selectedEnvironment); + + instance.subscribe('environments_config'); + }); +}); + +/* + * Events + */ + +Template.envForm.events = { + 'click .os-env-form-dropdown-menu .sm-env-item': function (event, _instance) { + event.preventDefault(); + + let envName = R.path(['target','dataset', 'envName'], event); + let _id = R.path(['target', 'dataset', 'envId'], event); + + if (R.isNil(envName)) { return; } + _id = parseReqId(_id); + + let data = Template.currentData(); + if (data.onEnvSelected) { + data.onEnvSelected({ + _id: _id.id, + name: envName + }); + } + } +}; + +/* + * Helpers + */ + +Template.envForm.helpers({ + selectedEnvName: function () { + let instance = Template.instance(); + let selectedEnv = instance.state.get('selectedEnv'); + + let envName = R.when( + R.isNil, + R.always('My Environments') + )(R.path(['name'], selectedEnv)); + + return envName; + }, + + envList: function () { + return Environments.find({}); + }, +}); diff --git a/ui/imports/ui/components/env-form/env-form.styl b/ui/imports/ui/components/env-form/env-form.styl new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/ui/imports/ui/components/env-form/env-form.styl |