aboutsummaryrefslogtreecommitdiffstats
path: root/ui/imports/ui/components/general-folder-node-dashboard
diff options
context:
space:
mode:
Diffstat (limited to 'ui/imports/ui/components/general-folder-node-dashboard')
-rw-r--r--ui/imports/ui/components/general-folder-node-dashboard/general-folder-node-dashboard.html24
-rw-r--r--ui/imports/ui/components/general-folder-node-dashboard/general-folder-node-dashboard.js112
-rw-r--r--ui/imports/ui/components/general-folder-node-dashboard/general-folder-node-dashboard.styl12
3 files changed, 148 insertions, 0 deletions
diff --git a/ui/imports/ui/components/general-folder-node-dashboard/general-folder-node-dashboard.html b/ui/imports/ui/components/general-folder-node-dashboard/general-folder-node-dashboard.html
new file mode 100644
index 0000000..81aaaa0
--- /dev/null
+++ b/ui/imports/ui/components/general-folder-node-dashboard/general-folder-node-dashboard.html
@@ -0,0 +1,24 @@
+<!--
+########################################################################################
+# 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="GeneralFolderNodeDashboard">
+<div class="os-general-folder-node-dashboard">
+ <div class="sm-main-cubic">
+ {{> DataCubic (argsMainCubic childrenCount)}}
+ </div>
+ <div class="sm-children-section">
+ {{#each child in children }}
+ <div class="sm-child-info-box">
+ {{> GeneralNodeInfoBox (argsGeneralNodeInfoBox child) }}
+ </div>
+ {{/each }}
+ </div>
+</div>
+</template>
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
new file mode 100644
index 0000000..f383877
--- /dev/null
+++ b/ui/imports/ui/components/general-folder-node-dashboard/general-folder-node-dashboard.js
@@ -0,0 +1,112 @@
+/////////////////////////////////////////////////////////////////////////////////////////
+// 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: GeneralFolderNodeDashboard
+ */
+
+//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 { store } from '/imports/ui/store/store';
+import { InventoryTreeNodeBehavior } from '/imports/ui/lib/inventory-tree-node-behavior';
+import { Inventory } from '/imports/api/inventories/inventories';
+import { Icon } from '/imports/lib/icon';
+
+import '/imports/ui/components/data-cubic/data-cubic';
+import '/imports/ui/components/general-node-info-box/general-node-info-box';
+
+import './general-folder-node-dashboard.html';
+
+/*
+ * Lifecycles
+ */
+
+Template.GeneralFolderNodeDashboard.onCreated(function() {
+ let instance = this;
+
+ instance.state = new ReactiveDict();
+ instance.state.setDefault({
+ _id: null,
+ node: null,
+ childrenCount: 0,
+ });
+
+ instance.autorun(function () {
+ let data = Template.currentData();
+ new SimpleSchema({
+ _id: { type: { _str: { type: String, regEx: SimpleSchema.RegEx.Id } } },
+ onNodeSelected: { type: Function },
+ }).validate(data);
+
+ instance.state.set('_id', data._id);
+ });
+
+ instance.autorun(function () {
+ let _id = instance.state.get('_id');
+ if (R.isNil(_id)) { return; }
+
+ Inventory.find({ _id: _id}).forEach((node) => {
+ InventoryTreeNodeBehavior.subscribeGetChildrenFn(instance, node);
+ let childrenCount = InventoryTreeNodeBehavior.getChildrenFn(node).count();
+ instance.state.set('childrenCount', childrenCount);
+ instance.state.set('node', node);
+ });
+ });
+});
+
+/*
+Template.GeneralFolderNodeDashboard.rendered = function() {
+};
+*/
+
+/*
+ * Events
+ */
+
+Template.GeneralFolderNodeDashboard.events({
+});
+
+/*
+ * Helpers
+ */
+
+Template.GeneralFolderNodeDashboard.helpers({
+ argsMainCubic: function (childrenCount) {
+ return {
+ header: R.path(['components', 'generalFolderNodeDashboard', 'mainCubic', 'header']
+ )(store.getState().api.i18n),
+ dataInfo: R.toString(childrenCount),
+ icon: new Icon({ type: 'fa', name: 'desktop' }),
+ };
+ },
+
+ argsGeneralNodeInfoBox: function (node) {
+ return {
+ objectName: node.object_name,
+ type: node.type,
+ lastScanned: node.last_scanned,
+ description: node.description,
+ };
+ },
+
+ childrenCount: function () {
+ let instance = Template.instance();
+ return instance.state.get('childrenCount');
+ },
+
+ children: function () {
+ let instance = Template.instance();
+ let node = instance.state.get('node');
+ return InventoryTreeNodeBehavior.getChildrenFn(node);
+ }
+}); // end: helpers
+
+
diff --git a/ui/imports/ui/components/general-folder-node-dashboard/general-folder-node-dashboard.styl b/ui/imports/ui/components/general-folder-node-dashboard/general-folder-node-dashboard.styl
new file mode 100644
index 0000000..49967c6
--- /dev/null
+++ b/ui/imports/ui/components/general-folder-node-dashboard/general-folder-node-dashboard.styl
@@ -0,0 +1,12 @@
+.os-general-folder-node-dashboard
+ display: flex;
+ flex-flow: column nowrap;
+ align-items: center;
+
+ .sm-children-section
+ display: flex;
+ flex-flow: row wrap;
+ justify-content: center;
+
+ >.sm-child-info-box
+ padding: 10px;