aboutsummaryrefslogtreecommitdiffstats
path: root/ui/imports/ui/components/input-model/input-model.js
diff options
context:
space:
mode:
Diffstat (limited to 'ui/imports/ui/components/input-model/input-model.js')
-rw-r--r--ui/imports/ui/components/input-model/input-model.js116
1 files changed, 116 insertions, 0 deletions
diff --git a/ui/imports/ui/components/input-model/input-model.js b/ui/imports/ui/components/input-model/input-model.js
new file mode 100644
index 0000000..9c515c5
--- /dev/null
+++ b/ui/imports/ui/components/input-model/input-model.js
@@ -0,0 +1,116 @@
+/////////////////////////////////////////////////////////////////////////////////////////
+// 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: InputModel
+ */
+
+//import { Meteor } from 'meteor/meteor';
+import { Template } from 'meteor/templating';
+//import { ReactiveDict } from 'meteor/reactive-dict';
+import * as R from 'ramda';
+
+import './input-model.html';
+
+/*
+ * Lifecycles
+ */
+
+Template.InputModel.onCreated(function() {
+});
+
+/*
+Template.InputModel.rendered = function() {
+};
+*/
+
+/*
+ * Events
+ */
+
+Template.InputModel.events({
+ 'input .inputField': function (event, instance) {
+ if (instance.data.type === 'checkbox') { return; }
+
+ let value;
+ switch (event.target.type) {
+ case 'number':
+ value = event.target.valueAsNumber;
+ break;
+
+ default:
+ value = event.target.value;
+ }
+
+ instance.data.setModel(value);
+ },
+ 'click .inputField': function (event, instance) {
+ if (instance.data.type !== 'checkbox') { return; }
+
+ let element = instance.$('.inputField')[0];
+ instance.data.setModel(element.checked);
+ }
+});
+
+/*
+ * Helpers
+ */
+
+Template.InputModel.helpers({
+ calcAttrs: function () {
+ let instance = Template.instance();
+ let attrs = {};
+
+ if (instance.data.type === 'checkbox') {
+ if (instance.data.value) {
+ attrs.checked = true;
+ }
+ } else {
+ attrs.value = instance.data.value;
+ }
+
+ return attrs;
+ },
+
+ calcType: function () {
+ let instance = Template.instance();
+ return instance.data.type;
+ },
+
+ calcId: function () {
+ },
+
+ calcName: function () {
+ },
+
+ calcClass: function () {
+ let instance = Template.instance();
+ if (R.isNil(instance.data.classes)) {
+ return 'form-control';
+ } else {
+ return instance.data.classes;
+ }
+ },
+
+ calcPlaceholder: function () {
+ let instance = Template.instance();
+ if (R.isNil(instance.data.placeholder)) { return ''; }
+
+ return instance.data.placeholder;
+ },
+
+ markIfDisabled: function () {
+ let instance = Template.instance();
+ let attrs = {};
+ if (instance.data.disabled) {
+ attrs = R.assoc('disabled', true, attrs);
+ }
+
+ return attrs;
+ }
+});