summaryrefslogtreecommitdiffstats
path: root/dgbuilder/public/red/ui/menu.js
diff options
context:
space:
mode:
authorChinthakayala, Sheshashailavas (sc2914) <sc2914@us.att.com>2017-08-28 05:25:46 -0900
committerChinthakayala, Sheshashailavas (sc2914) <sc2914@att.com>2017-08-28 05:36:52 -0900
commitd1569975bb18f4359fac18aa98f55b69c248a3ad (patch)
treec8681eeac12dca8673ccf841705daac88bf01ca6 /dgbuilder/public/red/ui/menu.js
parenta016ea661ff5767a3539734c4c07ef974a6e4614 (diff)
[CCSDK-28] populated the seed code for dgbuilder
updated the code to point to the new package name for sli Change-Id: I3b5a1d05dc5193664fd4a667afdcd0b2354010a4 Issue-ID:{CCSDK-28} Signed-off-by: Chinthakayala, Sheshashailavas (sc2914) <sc2914@att.com> Signed-off-by: Chinthakayala, Sheshashailavas (sc2914) <sc2914@att.com>
Diffstat (limited to 'dgbuilder/public/red/ui/menu.js')
-rw-r--r--dgbuilder/public/red/ui/menu.js122
1 files changed, 122 insertions, 0 deletions
diff --git a/dgbuilder/public/red/ui/menu.js b/dgbuilder/public/red/ui/menu.js
new file mode 100644
index 00000000..07ea5fd2
--- /dev/null
+++ b/dgbuilder/public/red/ui/menu.js
@@ -0,0 +1,122 @@
+/**
+ * Copyright 2014 IBM Corp.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ **/
+
+
+
+RED.menu = (function() {
+
+ var menuItems = {};
+
+ function createMenuItem(opt) {
+ var item;
+ if (opt === null) {
+ item = $('<li class="divider"></li>');
+ } else {
+ item = $('<li></li>');
+ var link = $('<a '+(opt.id?'id="'+opt.id+'" ':'')+'tabindex="-1" href="#">'+
+ (opt.toggle?'<i class="fa fa-check pull-right"></i>':'')+
+ (opt.icon?'<i class="'+opt.icon+'"></i> ':'')+
+ opt.label+
+ '</a>').appendTo(item);
+
+ menuItems[opt.id] = opt;
+
+ if (opt.onselect) {
+ link.click(function() {
+ if ($(this).parent().hasClass("disabled")) {
+ return;
+ }
+ if (opt.toggle) {
+ setSelected(opt.id,!isSelected(opt.id));
+ } else {
+ opt.onselect.call(opt);
+ }
+ })
+ } else if (opt.href) {
+ link.attr("target","_blank").attr("href",opt.href);
+ }
+ if (opt.options) {
+ item.addClass("dropdown-submenu pull-left");
+ var submenu = $('<ul id="'+opt.id+'-submenu" class="dropdown-menu"></ul>').appendTo(item);
+
+ for (var i=0;i<opt.options.length;i++) {
+ createMenuItem(opt.options[i]).appendTo(submenu);
+ }
+ }
+ if (opt.disabled) {
+ item.addClass("disabled");
+ }
+ }
+
+
+ return item;
+
+ }
+ function createMenu(options) {
+
+ var button = $("#"+options.id);
+
+ var topMenu = $("<ul/>",{class:"dropdown-menu"}).insertAfter(button);
+
+ for (var i=0;i<options.options.length;i++) {
+ var opt = options.options[i];
+ createMenuItem(opt).appendTo(topMenu);
+ }
+ }
+
+ function isSelected(id) {
+ return $("#"+id).hasClass("active");
+ }
+ function setSelected(id,state) {
+ if (isSelected(id) == state) {
+ return;
+ }
+ var opt = menuItems[id];
+ if (state) {
+ $("#"+id).addClass("active");
+ } else {
+ $("#"+id).removeClass("active");
+ }
+ if (opt.onselect) {
+ opt.onselect.call(opt,state);
+ }
+ }
+
+ function setDisabled(id,state) {
+ if (state) {
+ $("#"+id).parent().addClass("disabled");
+ } else {
+ $("#"+id).parent().removeClass("disabled");
+ }
+ }
+
+ function addItem(id,opt) {
+ createMenuItem(opt).appendTo("#"+id+"-submenu");
+ }
+ function removeItem(id) {
+ $("#"+id).parent().remove();
+ }
+
+ return {
+ init: createMenu,
+ setSelected: setSelected,
+ isSelected: isSelected,
+ setDisabled: setDisabled,
+ addItem: addItem,
+ removeItem: removeItem
+ //TODO: add an api for replacing a submenu - see library.js:loadFlowLibrary
+ }
+})();