| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345 | 
							- 
 
- //visibles = {};
 
- $(function() {
 
-     //BemsWebApplication.app.navigation.forEach(function (item)
 
-     //{
 
-     //    visibles[item._options.id] = ko.observable(false);
 
-     //});
 
-     "use strict";
 
-     var self = window.$SideMenu = {
 
-         currentNavigationId: undefined,
 
-         currentViewId: ko.observable('Building'),
 
-         sideMenuSet: {},
 
-         selectedNavIndex: ko.observable(-1),
 
-         sideMenuItems: ko.observableArray([]),
 
-         isWillShowSideMenu: false,
 
-         visible: ko.observable(false),
 
-         height: ko.observable(''),
 
-         selectedItems: ko.observableArray(),
 
-         animationConfig: {
 
-             show: { type: "slide", duration: 500, from: { left: -260, opacity: 1 }, to: { left: 0, opacity: 1 } },
 
-             hide: { type: "slide", duration: 300, from: { left: 0, opacity: 1 }, to: { left: -260, opacity: 1 } }
 
-         },
 
-         setNavigationId: function(id) {
 
-             if (this.currentNavigationId !== id) {
 
-                 //                self.configureMenus( id );
 
-             }
 
-             this.currentNavigationId = id;
 
-             this.isWillShowSideMenu = true;
 
-         },
 
-         getNavigationIdFromViewId: function(viewId) {
 
-             var isExist = function(array) {
 
-                 return array.some(function(element) {
 
-                     if (element.subMenus) {
 
-                         return isExist(element.subMenus);
 
-                     }
 
-                     if (element.viewId === viewId) {
 
-                         return true;
 
-                     }
 
-                     return false;
 
-                 });
 
-             }
 
-             var navId = null;
 
-             var index = 0;
 
-             $.each(this.sideMenuSet, function(name, value) {
 
-                 index++;
 
-                 if (isExist(value)) {
 
-                     navId = name;
 
-                     return false;
 
-                 }
 
-             });
 
-             BWA.config.navigation.forEach(function(item, i) {
 
-                 if (item.id === navId) {
 
-                     index = i;
 
-                     return false;
 
-                 }
 
-             });
 
-             return { index: index, id: navId };
 
-         },
 
-         setupGroupItemState: function(jElement) {
 
-         },
 
-         // viewId를 입력받아서 해당하는 id의 상단 메뉴와 좌측 메뉴 항목을 
 
-         // 선택되도록 만드는 함수
 
-         // 해당 하는 view가 Shown 이벤트가 발생할 때 반드시 호출해야 한다.
 
-         showSideMenuIfWill: function(viewId) {
 
-             viewId = viewId || this.currentViewId();
 
-             var loaded = false;
 
-             if (_.isEmpty(self.sideMenuItems())) {
 
-                 var selectedNavItem = self.getNavigationIdFromViewId(viewId);
 
-                 self.setNavigationId(selectedNavItem.id);
 
-                 self.selectedNavIndex(selectedNavItem.index);
 
-                 self.configureMenus(selectedNavItem.id);
 
-                 //if (_.isUndefined(selectedNavItem.mode) === false) {
 
-                 //    BWA.BemsFmsMode.setBemsMode(selectedNavItem.mode === 'bems');
 
-                 //}
 
-                 loaded = true;
 
-             }
 
-             if (self.isWillShowSideMenu) {
 
-                 if (loaded == false) self.configureMenus(self.currentNavigationId);
 
-                 BWA.BemsFmsMode.setNavId(self.currentNavigationId);
 
-                 self.showSideMenu();
 
-                 //console.log( self.sideMenuItems() );
 
-                 self.isWillShowSideMenu = false;
 
-             }
 
-             self.currentViewId(viewId);
 
-             var done = false;
 
-             //var selectedItem = null;
 
-             //var selectedParentItem = null;
 
-             //console.log( self.sideMenuItems() );
 
-             var selectedItems = null;
 
-             (function selectItem(array, selectedViewId, parents) {
 
-                 if (_.isUndefined(array)) return;
 
-                 //if( done ) return false;
 
-                 return array.forEach(function(element) {
 
-                     if (element.subMenus) {
 
-                         var newParents = parents.slice(0);
 
-                         newParents.push(element);
 
-                         return selectItem(element.subMenus, selectedViewId, newParents);
 
-                     }
 
-                     if (element.viewId === selectedViewId) {
 
-                         parents.forEach(function(item) {
 
-                             item.isSelected(true);
 
-                         });
 
-                         selectedItems = parents.slice(0);
 
-                     }
 
-                     else {
 
-                         parents.forEach(function(item) {
 
-                             if (selectedItems) {
 
-                                 if (selectedItems.indexOf(item) >= 0) {
 
-                                     return true;
 
-                                 }
 
-                             }
 
-                             // 주석을 풀면 선택된 후 선택된 다른 메뉴를 collapse 한다.
 
-                             //item.isSelected(true);
 
-                             //item.isSelected(false);
 
-                         });
 
-                         //}
 
-                     }
 
-                 });
 
-             })(self.sideMenuItems(), viewId, []);
 
-             this.selectedItems(selectedItems);
 
-             if (_.isNull(selectedItems)) {
 
-                 self.visible(false);
 
-             }
 
- //            console.log( selectedItems );
 
-         },
 
-         toggleSideMenu: function() {
 
-             self.visible(!self.visible());
 
-             //var visible = visibles[currentSideMenuId];
 
-             //visible( !visible() );
 
-         },
 
-         showSideMenu: function() {
 
-             this.recalulateHeight();
 
-             this.visible(true);
 
-             //isWillShowSideMenu = false;
 
-             //visibles[id]( true );
 
-         },
 
-         hideSideMenu: function() {
 
-             self.visible(false);
 
-         },
 
-         configureMenus: function(navId) {
 
-             self.sideMenuItems(self.sideMenuSet[navId]);
 
-             //console.log( self.sideMenuSet[navId] );            
 
-         },
 
-         selectedMenuItemProperties: [],
 
-         pushSideMenu: function (menuItems) {
 
-             // 2018 01 19 hcLee -> 메뉴 Show,Hide를 위해 기존의 Menu 속성에 ... 
 
-             (function pushItem(array) {
 
-                 _.each(array, function (element) {
 
-                     $.extend(element, { show: ko.observable(true) });
 
-                     if (element.subMenus) {
 
-                         return pushItem(element.subMenus);
 
-                     }
 
-                 });
 
-             })(menuItems[Object.getOwnPropertyNames(menuItems)[0]]);
 
-             // .. show 를 추가한다. 2018 01 19 hcLee
 
-             //            menuItems.getOwnPropertyNames()[0];
 
-             //selectedMenuItemProperties.clear();
 
-             //console.log( Object.getOwnPropertyNames( menuItems ) );
 
-             (function pushItem(array, path, pathDepth) {
 
-                 _.each(array, function (element) {
 
-                     if (element.subMenus) {
 
-                         path[pathDepth] = element.title;
 
-                         element.isSelected = ko.observable(false);
 
-                         return pushItem(element.subMenus, path, pathDepth + 1);
 
-                     }
 
-                     else {
 
-                         element.path = path.slice(0, pathDepth);
 
-                         element.link = "$SideMenu.navigate('" + element.viewId + "')";
 
-                     }
 
-                 });
 
-             })(menuItems[Object.getOwnPropertyNames(menuItems)[0]], [], 0);
 
-             //});
 
-             $.extend(self.sideMenuSet, menuItems);
 
-         },
 
-         expandSubMenu: function () {
 
-             var next = $(this).next();
 
-             var parent = next.parent().parent();
 
-             //console.log( parent.html() );
 
-             //parent.children().each(function(i, item) {
 
-             //    var element = $(item).children()[0];
 
-             //    element = $(element).next();
 
-             //    if (element != next) {
 
-             //        if (!element.hasClass('side-menu-collapse')) {
 
-             //            element.addClass('side-menu-collapse');
 
-             //        }
 
-             //    }
 
-             //});
 
-             var obj = ko.dataFor(this); 
 
-             if (next.hasClass('side-menu-collapse')) {
 
-                 obj.isSelected(true);
 
-                 next.removeClass('side-menu-collapse');
 
-             }
 
-             else {
 
-                 obj.isSelected(false);
 
-                 next.addClass('side-menu-collapse');
 
-             }
 
-         },
 
-         recalulateHeight: function() {
 
-             var height = $('.header_wrap').height();
 
-             this.height($(window).height() - height);
 
-         },
 
-         SideMenuShowingAction: function(e) {
 
-             //this.recalulateHeight();
 
-         },
 
-         SideMenuHidingAction: function(e) {
 
-             //$(e.element).children().find('#sideMenu').remove();
 
-         },
 
-         navigate: function(id) {
 
-             if (_.isUndefined(id) || id === 'undefined') {
 
-                 utils.toast.show('설정된 화면이 없습니다.', 'error');
 
-                 return;
 
-             }
 
-             BemsWebApplication.app.navigate(id);
 
-         },
 
-         // hashset으로 가지고 있다가 path와 이름을 넘겨준다. 오로지 menuId만 post할 때 필요하다.
 
-         // CmMenu를 사용하지 않도록 구현한다.
 
-         getSidemenuHashSet: function() {
 
-             var navigations = {};
 
-             _.each(BWA.config.navigation, function(x) {
 
-                 navigations[x.id] = x.title;
 
-             });
 
-             var menuHashSet = {};
 
-             _.each(self.sideMenuSet, function(subMenus, navId) {
 
-                 var navTitleArray = [navigations[navId]];
 
-                 
 
-                 (function findMenuLeaf(subMenus) {
 
-                     _.each(subMenus, function(menu) {
 
-                         
 
-                         if (_.has(menu, 'subMenus')) {
 
-                             findMenuLeaf(menu.subMenus);
 
-                         }
 
-                         else if (_.isUndefined(menu.viewId) === false) {
 
-                             
 
-                             menuHashSet[menu.viewId] = {
 
-                                 Name: menu.title,
 
-                                 MenuPath: navTitleArray.concat(menu.path).join('/')
 
-                             };
 
-                         }
 
-                     });
 
-                 })(subMenus);
 
-             });
 
-             return menuHashSet;
 
-         },
 
-         getSidemenusForPermission: function() {
 
-             var navigations = {};
 
-             _.each(BWA.config.navigation, function(x) {
 
-                 navigations[x.id] = x.title;
 
-             });
 
-             var menus = [];
 
-             _.each(self.sideMenuSet, function(subMenus, navId) {
 
-                 var path = [navigations[navId]];
 
-                 
 
-                 (function findMenuLeaf(subMenus) {
 
-                     _.each(subMenus, function(menu) {
 
-                         
 
-                         if (_.has(menu, 'subMenus')) {
 
-                             findMenuLeaf(menu.subMenus);
 
-                         }
 
-                         else if (_.isUndefined(menu.viewId) === false) {
 
-                             
 
-                             var viewId = menu.viewId;                            
 
-                             if (menus.some(function(x) {
 
-                                 return x.MenuId === viewId;
 
-                             })) {
 
-                                 throw new Exception('Same MenuId.');
 
-                                 return;
 
-                             }
 
-                             menus.push({
 
-                                 MenuId: viewId,
 
-                                 Name: menu.title,
 
-                                 MenuPath: path.concat(menu.path).join('/'),
 
-                                 MenuPermission: 7 // 모든 권한
 
-                             });
 
-                         }
 
-                     });
 
-                 })(subMenus);
 
-             });
 
-             return menus;
 
-         }
 
-     };
 
-     $(window).resize(function(event) {
 
-         self.recalulateHeight();
 
-     });
 
- });
 
 
  |