From b88c78e3cf2bef22aa2f1c4d0bf305e303bc15f0 Mon Sep 17 00:00:00 2001 From: Koren Lev Date: Thu, 27 Jul 2017 16:42:15 +0300 Subject: adding calipso ui Change-Id: Ifa6f63daebb07f45580f747341960e898fdb00c4 Signed-off-by: Koren Lev --- .../components/top-navbar-menu/top-navbar-menu.js | 129 +++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 ui/imports/ui/components/top-navbar-menu/top-navbar-menu.js (limited to 'ui/imports/ui/components/top-navbar-menu/top-navbar-menu.js') diff --git a/ui/imports/ui/components/top-navbar-menu/top-navbar-menu.js b/ui/imports/ui/components/top-navbar-menu/top-navbar-menu.js new file mode 100644 index 0000000..6968060 --- /dev/null +++ b/ui/imports/ui/components/top-navbar-menu/top-navbar-menu.js @@ -0,0 +1,129 @@ +///////////////////////////////////////////////////////////////////////////////////////// +// 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: TopNavbarMenu + */ + +import { Template } from 'meteor/templating'; +import { ReactiveDict } from 'meteor/reactive-dict'; +//import * as R from 'ramda'; + +import { store } from '/imports/ui/store/store'; +//import { setSearchTerm } from '/imports/ui/actions/search-interested-parties'; +//import { notifySearchAutoCompleteTermChanged } from '/imports/ui/actions/search-interested-parties'; +import { idToStr } from '/imports/lib/utilities'; +import factory from 'reactive-redux'; + +import '/imports/ui/components/search-auto-complete-list/search-auto-complete-list'; +import '/imports/ui/components/get-started/get-started'; +import '/imports/ui/components/env-form/env-form'; +import '/imports/ui/components/alarm-icons/alarm-icons'; + +import './top-navbar-menu.html'; + +/* + * Lifecycles + */ + +Template.TopNavbarMenu.onCreated(function () { + let instance = this; + + instance.state = new ReactiveDict(); + instance.state.setDefault({ + isAutoCompleteOpen: false, + searchTerm: null + }); + + const mainEnvIdSelector = (state) => (state.components.mainApp.selectedEnvironment._id); + instance.rdxMainEnvId = factory(mainEnvIdSelector, store); + + instance.tempSearchTerm = null; + instance.searchDebounced = _.debounce(function () { + instance.state.set('searchTerm', instance.tempSearchTerm); + instance.state.set('isAutoCompleteOpen', true); + }, 250); +}); + +Template.TopNavbarMenu.onDestroyed(function () { + //let instance = this; +}); + +Template.TopNavbarMenu.events = { + 'keyup #search': function (event) { + let instance = Template.instance(); + let searchTerm = instance.$(event.target).val(); + + instance.tempSearchTerm = searchTerm; + instance.searchDebounced(); + }, + + 'click .os-nav-link': function () { + let instance = Template.instance(); + instance.state.set('isAutoCompleteOpen', false); + }, + + 'click .sm-dashboard-link': function () { + Router.go('Dashboard'); + }, + + 'click .sm-get-started-link': function () { + Router.go('getstarted'); + } +}; + +Template.TopNavbarMenu.helpers({ + envId: function () { + let instance = Template.instance(); + return instance.rdxMainEnvId.get(); + }, + + searchTerm: function () { + let instance = Template.instance(); + return instance.state.get('searchTerm'); + }, + + argsSearch: function (envId, searchTerm) { + let instance = Template.instance(); + + return { + isOpen: instance.state.get('isAutoCompleteOpen'), + envId: envId, + searchTerm: searchTerm, + onResultSelected(node) { + instance.state.set('isAutoCompleteOpen', false); + + let searchInput = instance.$('input#search'); + searchInput.val(node.name_path); + + Router.go('environment', { _id: idToStr(node._envId) }, { + query: { selectedNodeId: idToStr(node._id) } + }); + }, + onCloseReq() { + instance.state.set('isAutoCompleteOpen', false); + + let searchInput = instance.$('input#search'); + searchInput.val(null); + }, + }; + }, + + argsEnvForm: function () { + let instance = Template.instance(); + let selectedEnvironment = instance.state.get('selectedEnvironment'); + + return { + selectedEnvironment: selectedEnvironment, + onEnvSelected: function (env) { + Router.go('environment', { _id: idToStr(env._id) }, { }); + } + }; + } + +}); // end: helpers -- cgit 1.2.3-korg