UNPKG

doevisualizations

Version:

Data Visualization Library based on RequireJS and D3.js (v4+)

114 lines (97 loc) 4.68 kB
define(["jquery", "jqueryuiwidget", "hammerjs"], function ($, jquerywidget, Hammer) { $.widget("vwidgets.hamburgermenu", { options: { animationType: 'slideout', hamburgerMarkup: '<span class="glyphicon glyphicon-menu-hamburger btn-lg hamburgermenutrigger" aria-hidden="true"></span>', defaultHeader: true, hammerInstance: null, hamburgermenutrigger: '#hamburgerwrapper', headerTitle: 'Welcome Suzanne', data: {} }, _privateState: { }, _create: function () { this._renderMarkup(); }, _renderMarkup: function () { $(this.options.hamburgermenutrigger).html(this.options.hamburgerMarkup); var arrHtml = []; var i = 0; arrHtml.push(' <div class="slider sliderclose">'); arrHtml.push(' <div class="header">'); arrHtml.push(' Hello <span class="username">Vivek Siruvuri</span>'); arrHtml.push(' </div>'); arrHtml.push(' <div class="menucontainer">'); var data = this.options.data; for (i = 0; i < data.length; i++) { arrHtml.push(' <div id="' + i + 'menu" class="topmenu">'); arrHtml.push(' <a href="' + data[i]["ItemUrl"] + '"><span class="' + data[i]["ItemIconClass"] + '" aria-hidden="true"></span>' + data[i]["ItemName"] + '</a>'); if (data[i]["ItemMenus"] !== null && data[i]["ItemMenus"].length > 0) { var j = 0; for (j = 0; j < data[i]["ItemMenus"].length; j++) { arrHtml.push(' <div class="submenu">'); arrHtml.push(' <a href="' + data[i]["ItemMenus"][j]["ItemUrl"] + '"><span class="' + data[i]["ItemMenus"][j]["ItemIconClass"] + '" aria-hidden="true"></span>' + data[i]["ItemMenus"][j]["ItemName"] + '</a>'); arrHtml.push('</div>'); } } arrHtml.push(' </div>'); } arrHtml.push(' </div>'); arrHtml.push(' </div>'); this.element.html(arrHtml.join('')); this._bindEvents(); }, _setOption: function (key, value) { if (key === "value") { value = this._constrain(value); } this._super(key, value); }, _setOptions: function (options) { this._super(options); this._drawProgress(); }, _bindEvents: function () { this._on(this.element, { "click div.topmenu": function (event, data) { console.log(event); console.log(event.currentTarget.attributes["id"]); event.stopImmediatePropagation(); if ($(event.currentTarget).hasClass('topmenuopen')) { $(event.currentTarget).removeClass('topmenuopen'); } else { $(event.currentTarget).addClass('topmenuopen'); } //console.log(event); }, "click div.submenu": function (event, data) { event.stopImmediatePropagation(); //console.log(event); }, "click div.submenu a": function (event, data) { event.stopImmediatePropagation(); //console.log(event); this.element.find('.slider').addClass('sliderclose'); this.element.find('.topmenu').removeClass('topmenuopen'); } }); $(this.options.hamburgermenutrigger).on('click', $.proxy(function () { if (this.element.find('.slider').hasClass('sliderclose')) { this.element.find('.slider').removeClass('sliderclose'); } }, this)); var that = this; var mc = new Hammer(this.element[0]); mc.get('pan').set({ direction: Hammer.DIRECTION_ALL }); mc.on("panleft", function (ev) { that.element.find('.slider').addClass('sliderclose'); this.element.find('.topmenu').removeClass('topmenuopen'); }); this.options.hammerInstance = mc; }, _destroy: function () { } }); });