aboutsummaryrefslogtreecommitdiffstats
path: root/ui/imports/ui/components/breadcrumb/breadcrumb.js
diff options
context:
space:
mode:
Diffstat (limited to 'ui/imports/ui/components/breadcrumb/breadcrumb.js')
-rw-r--r--ui/imports/ui/components/breadcrumb/breadcrumb.js83
1 files changed, 83 insertions, 0 deletions
diff --git a/ui/imports/ui/components/breadcrumb/breadcrumb.js b/ui/imports/ui/components/breadcrumb/breadcrumb.js
new file mode 100644
index 0000000..642797f
--- /dev/null
+++ b/ui/imports/ui/components/breadcrumb/breadcrumb.js
@@ -0,0 +1,83 @@
+/////////////////////////////////////////////////////////////////////////////////////////
+// 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: breadcrumb
+ */
+
+import { Template } from 'meteor/templating';
+import { ReactiveDict } from 'meteor/reactive-dict';
+import { SimpleSchema } from 'meteor/aldeed:simple-schema';
+import * as R from 'ramda';
+//import { Inventory } from '/imports/api/inventories/inventories';
+
+import '../breadcrumbNode/breadcrumbNode';
+import './breadcrumb.html';
+
+Template.breadcrumb.onCreated(function () {
+ let instance = this;
+ instance.state = new ReactiveDict();
+ instance.state.setDefault({
+ nodeId: null,
+ nodesList: [],
+ });
+
+ instance.autorun(function () {
+ let data = Template.currentData();
+ new SimpleSchema({
+ nodeId: { type: { _str: { type: String, regEx: SimpleSchema.RegEx.Id } } },
+ onNodeSelected: { type: Function },
+ }).validate(data);
+
+ instance.state.set('nodeId', data.nodeId);
+ });
+
+ instance.autorun(function () {
+ let nodeId = instance.state.get('nodeId');
+
+ if (R.isNil(nodeId)) {
+ return;
+ }
+
+ Meteor.apply('expandNodePath', [ nodeId ], { wait: false }, function (err, res) {
+ if (err) {
+ console.error(err);
+ return;
+ }
+
+ if (R.isNil(res)) {
+ instance.state.set('nodesList', []);
+ return;
+ }
+
+ instance.state.set('nodesList', res);
+ });
+ });
+});
+
+Template.breadcrumb.onDestroyed(function () {
+});
+
+Template.breadcrumb.helpers({
+ nodesList: function () {
+ let instance = Template.instance();
+ return instance.state.get('nodesList');
+ },
+
+ argsNode: function (node) {
+ //let instance = Template.instance();
+ let data = Template.currentData();
+
+ return {
+ node: node,
+ onClick: function () {
+ data.onNodeSelected(node);
+ }
+ };
+ },
+}); // end: helpers