/** * @fileoverview 用户 地点记录 模块 * @author Song.Huang * @version 1.0.0 */ define([ 'html!templates/user/userRoute', 'css!styles/user/userRoute'], function(tplLayout) { /** * 模块数据 用于数据存储和外部调用 * @type {Object} * 数据存放 */ var modValue = { options: { page: 1, pageSize: 20 }, favData: null } /** * 模块状态,用于存储模块的状态 例如:收起,关闭 * @type {Object} */ var status = { initialized: false, } //分页 var pageContainer, favPageBtnGroup, pageJump; /** * 初始化 * @type {Function} */ function init() { setLayout(); subscribe(); showPage({ page:1 }); } /** * 设置界面 */ function setLayout(){ $("#usrCenterContent").empty().append(tplLayout); pageContainer = $('
').appendTo($("#usrCenterContent")); $("#userFav").mCustomScrollbar({ scrollInertia: 1000 }); layoutResize(); $(window).resize(function() { layoutResize(); }); } /** * 界面重置 * @return {[type]} [description] */ function layoutResize(){ $("#userFav").css({height:$(window).height()-154}); $("#userFav").mCustomScrollbar("update"); } /** * 显示指定参数的列表 * @type {Function} * @param options {Object} 参数 * @see options * @private */ function showPage(options){ ONEMAP.T.objExtend(modValue.options,options,true); getFavData(); } /** * 获取收藏数据 * @type {Function} * @private */ function getFavData() { ONEMAP.V.loading.load(); $.ajax({ type: "get", dataType: 'json', url: onemapUrlConfig.userCenterUrl+ '/routes/list'+ '?page=' + modValue.options.page + '&size=' + modValue.options.pageSize, success: function(data) { ONEMAP.V.loading.loaded(); if(data.code == 4){ ONEMAP.T.noPermission('addFav',data.message); return false; } if(data.code == 3){ ONEMAP.T.logout('addFav'); return false; } modValue.favData = data; setFavItem(); }, error:function(errorData){ ONEMAP.V.loading.loaded(); } }); } /** * 设置收藏列表item * @type {Function} * @private */ function setFavItem(){ var count = 0; $("#userFavList").empty(); if(modValue.favData['list'].length > 0){ for(var i= 0,l=modValue.favData['list'].length; i'+count+''+da.name +''+ '删除编辑'); itemHtml.bind('mouseenter',function(){ $(this).addClass('hover'); }).bind('mouseleave',function(){ $(this).removeClass('hover'); }); itemHtml.find('.name').bind('click',{da:da},function(e){ require(['modDir/tools/toolRouteSearch'], function(toolRouteSearch) { //起点 toolRouteSearch.setStartPoint([e.data.da.startpoint_lon,e.data.da.startpoint_lat]); //途经点 $(JSON.parse(e.data.da.type_l1)).each(function(index,val){ toolRouteSearch.setAcrossPoint(val); }) //规避点 $(JSON.parse(e.data.da.type_l2)).each(function(index,val){ toolRouteSearch.setAvoidPoint(val); }) //终点 toolRouteSearch.setStopPoint([e.data.da.stoppoint_lon,e.data.da.stoppoint_lat]); }); map23DControl.setView({ center: { lat: e.data.da.center_lat, lng: e.data.da.center_lon }, zoom: e.data.da.zoomleve }) }); itemHtml.find('.del').bind('click',{da:da},function(e){ delForm(e.data.da,$(this)); }); itemHtml.find('.edit').bind('click',{da:da},function(e){ editForm(e.data.da,$(this)); }); $("#userFavList").append(itemHtml); } //分页 pageContainer.empty(); var countPages = (parseInt(modValue.favData.total % modValue.favData.size)>0?parseInt(modValue.favData.total / modValue.favData.size + 1):parseInt(modValue.favData.total / modValue.favData.size)); if(countPages==0){ countPages = 1; } // pageJump = $('
/'+countPages+'页
'); pageJump = $('
'+ '
'+modValue.favData.current_page+'/'+countPages+'页'+ '
'); pageJump.appendTo(pageContainer); $("#userFavPageJump .page_num").bind('keydown', function (e) { if (e.keyCode === 13) { var pageJump = parseInt($("#userFavPageJump .page_num").val()); if(!pageJump || pageJump > countPages){ return; }else { showPage({page:parseInt(pageJump)}); } } }); if (modValue.favData.size < modValue.favData.total) { $("#userFavPageJump .firstpage").bind('click',function(){ showPage({page:1}); }) $("#userFavPageJump .uppage").bind('click',function(){ if(modValue.favData.current_page == 1){ return false; }else{ modValue.favData.current_page = modValue.favData.current_page-1; showPage({page:modValue.favData.current_page}); } }) $("#userFavPageJump .nextpage").bind('click',function(){ if(modValue.favData.current_page == countPages){ return false; }else{ modValue.favData.current_page = modValue.favData.current_page+1; showPage({page:modValue.favData.current_page}); } }) $("#userFavPageJump .endpage").bind('click',function(){ showPage({page:countPages}); }) } }else { pageContainer.empty(); $("#userFavList").append('

暂无数据!

'); } $("#userFav").mCustomScrollbar("update"); } /** * 添加收藏 */ function addRoute(routeData) { if(!status.initialized){ init(); status.initialized = true; } //构造数据 var ajaxData = {}; ajaxData.name = routeData.name; ajaxData.startpoint_lat = routeData.startpoint_lat; ajaxData.startpoint_lon = routeData.startpoint_lon; ajaxData.stoppoint_lat = routeData.stoppoint_lat; ajaxData.stoppoint_lon = routeData.stoppoint_lon; //ajaxData.map_type = MAPPLUS.M.mapHolder.mainLayers.getCurLayer().mId; ajaxData.center_lat = map23DData.view.center['lat']; ajaxData.center_lon = map23DData.view.center['lng']; ajaxData.zoomleve = map23DData.view.zoom; ajaxData.type_l1 = routeData.acrossPoints; ajaxData.type_l2 = routeData.avoidPoints; ONEMAP.V.loading.load(); $.ajax({ type: "get", dataType: 'json', url:onemapUrlConfig.userCenterUrl+'/routes/add', data: ajaxData, success: function(data) { ONEMAP.V.loading.load(); if (data.success) { ONEMAP.C.publisher.publish({type:'success',message:'收藏路线('+routeData.name+')成功'},'noteBar::add'); getFavData(); } else { ONEMAP.C.publisher.publish({type:'error',message: data.msg||'收藏路线('+routeData.name+')失败'},'noteBar::add'); } }, error:function(errorData){ ONEMAP.C.publisher.publish({type:'error',message:'收藏路线('+routeData.name+')失败'},'noteBar::add'); } }); } /** * 编辑表单 * @type {Function} * @param data {Object} 表单数据 * @param self {Object} 父类 * @private */ function editForm(data,self){ var parent = self.parent().parent(); var formHtml = $('
' + '' + '' + '' + '
'); formHtml.find('.cancel').bind('click',function(){ formHtml.remove(); }); parent.append(formHtml); formHtml.find('.sure').bind('click',{da:data,self:parent},function(e){ updateFav(e); }); } /** * 更新收藏 * @type {Function} * @param e * @returns {boolean} * @private */ function updateFav(e){ var name = e.data.self.find('.input').val(); if(name ==='' || name.indexOf(' ') >= 0){ ONEMAP.C.publisher.publish({ type: 'warning', message: '名称不能为空或包含空格' }, 'noteBar::add'); e.data.self.find('.input').focus(); return false; } if((/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\s]/g).test(name)){ ONEMAP.C.publisher.publish({ type: 'warning', message: '名称只能包含英文、数字、中文' }, 'noteBar::add'); e.data.self.find('.input').focus(); return false; } e.data.self.find('.name').text(name); var fId = e.data.da._id; var ajaxData = {_id:fId,name:name}; e.data.self.find('.form').remove(); ONEMAP.V.loading.load(); $.ajax({ type:"get", dataType:'json', url:onemapUrlConfig.userCenterUrl+'/routes/update', data:ajaxData, success:function(data){ ONEMAP.V.loading.loaded(); if(data.code == 4){ ONEMAP.T.noPermission('updateFav'); } if(data.code == 3){ ONEMAP.T.logout('updateFav'); } if(data.success){ ONEMAP.C.publisher.publish({type:'success',message:'更新路线('+name+')成功'},'noteBar::add'); getFavData(); }else if(data.hasOwnProperty('success') && !data.success) { ONEMAP.C.publisher.publish({type:'error',message:'更新路线('+name+')失败,'+data.msg},'noteBar::add'); }else{ ONEMAP.C.publisher.publish({type:'error',message:'更新路线('+name+')失败'},'noteBar::add'); } }, error:function(errorData){ ONEMAP.V.loading.loaded(); } }); } /** * 删除表单 * @param {[type]} data [description] * @param {[type]} self [description] * @return {[type]} [description] */ function delForm(data,self){ var parent = self.parent().parent(); var formHtml = $('
' + '' + '' + '
'); formHtml.find('.cancel').bind('click',function(){ formHtml.remove(); }); parent.append(formHtml); formHtml.find('.sure').bind('click',{da:data,self:parent},function(e){ delFav(e.data.da._id); }); } /** * 删除收藏 * @type {Function} * @param id {Number} * @private */ function delFav(id){ var ajaxData = {_id:id}; ONEMAP.V.loading.load(); $.ajax({ type:"get", dataType:'json', url:onemapUrlConfig.userCenterUrl+'/routes/del', data:ajaxData, success:function(data){ ONEMAP.V.loading.loaded(); if(data.code == 4){ ONEMAP.T.noPermission('delFav'); } if(data.code == 3){ ONEMAP.T.logout('delFav'); } if(data.success){ ONEMAP.C.publisher.publish({type:'success',message:'删除路线成功'},'noteBar::add'); getFavData(); }else if(data.hasOwnProperty('success') && !data.success) { ONEMAP.C.publisher.publish({type:'error',message:'删除路线失败,'+data.msg},'noteBar::add'); }else{ ONEMAP.C.publisher.publish({type:'error',message:'删除路线失败'},'noteBar::add'); } }, error:function(errorData){ ONEMAP.V.loading.loaded(); } }); } /** * 注册订阅 * @type {Function} * 推送:ONEMAP.C.publisher.publish(options,'userFavuleName::type'); * 订阅:ONEMAP.C.publisher.subscribe(layoutResize,'sideBarLayoutChange'); */ function subscribe(){} /** * 取消订阅 * @type {Function} * 取消订阅:ONEMAP.C.publisher.unSubscribe(layoutResize,'sideBarLayoutChange'); */ function unSubscribe(){} /** * 模块移除 * @return {[type]} [description] */ function remove(){ status.initialized = false; modValue.options ={ page:1, pageSize:20 }; } return ONEMAP.M.userRoute = { init: init, remove:remove, addRoute: addRoute } });