NavPanel.js 1.84 KB
define(['utils'], function (_u) {
    'use strict';

    function NavPanel() {
        this.store = {
    		lite: 1,
            row: 2,
            col: 4,
            radius: false,
            nav_all: []
        };
    }

    NavPanel.prototype = {
        transferToVM: function (dm) {
            var vm = {}, nav_all = dm.nav_all || [], lite = dm.lite || 1;
            var row = _u.toNumber(dm.row, 2);
            var col = _u.toNumber(dm.col, 4);
            var size = row * col;
            
            var categories = [];
            var items = {};
            var screen = [];
			vm.lite = lite == 1;
            vm.col = col;
            vm.radius = dm.radius == 1;
            
			nav_all.forEach(function (category) {
				var c = {};
	            var citems = [];
				c.category = category.category;
				category["nav_items"].forEach(function (item) {
					var m = {};
					m.url = "javascript:void(0)";
					m.icon = item.iconpath;
					m.iconClass = vm.radius && "wev-icon-radius" || "",
					m.text = item.uiname;
					m.remind = item.isremind == 1;
					
					item.isshow = item.isshow || 1;
					if(item.isshow == 1){
						m.show = true;
						screen.push(m);
					} 
					citems.push(m);
				});
				
				while(citems.length % col != 0){
					citems.push({fillIn:true});
				}
				
				c.items = citems;
				categories.push(c);
			});
			
			if(vm.lite){
				var len = Math.ceil(screen.length / size);				
				vm.items = Array.apply(null, Array(len)).map(function () { return []; });
	            vm.items[0] = screen.slice(0, size);

				var last = vm.items.length - 1;
				if (last >= 0) {
					while (vm.items[last].length % vm.col != 0) {//li补位
						vm.items[last].push({fillIn: true});
					}
				}
			}else{
				vm.perCol = 100 - col;
				vm.categories = categories;
			}
            
            return vm;
        }
    };

    return NavPanel;
});