/** * [ONEMAP.M.userFav] * @return {[object]} */ define(['html!templates/user/userFav', 'html!templates/user/userFavAddModal', 'css!styles/user/userFav'], function(tplLayout,tplUserFavAddModal){ /** * 模块数据 用于数据存储和外部调用 * @type {Object} * 数据存放 */ var modValue = { //收藏数据 favData:null, //初始化查询参数 options :{ page:1, pageSize:20 } }; /** * 模块界面样式 例如:宽,高 * @type {Object} */ var styles = {}; /** * 模块状态,用于存储模块的状态 例如:收起,关闭 * @type {Object} */ var status = { initialized:false, isAddForm:false }; /** * 初始化并订阅事件 * @return {[type]} [description] */ function init(){ setLayout(); subscribe(); showPage({ page:1 }); } //分页 var pageContainer, favPageBtnGroup, pageJump; /** * 设置界面 */ 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"); } /** * 界面事件绑定 * @return {[type]} [description] */ function bindEvent(){ } /** * 显示指定参数的列表 * @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+'/bookmarker/list'+ '?page='+modValue.options.page+ '&size='+modValue.options.pageSize, success:function(data){ console.log(data) if(data.code == 4){ ONEMAP.T.noPermission('addFav',data.message); return false; } if(data.code == 3){ ONEMAP.T.logout('addFav'); return false; } ONEMAP.V.loading.loaded(); modValue.favData = data; if(data.total>0){ setFavItem(); } else { $("#userFavList").html("暂无数据"); } if(data.total==1&&data['list'][0].source_id==97){ $("#userFavList").html("暂无数据"); } }, error:function(errorData){ ONEMAP.V.loading.loaded(); $("#userFavList").html("暂时无法获取数据"); } }); } /** * 设置收藏列表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){ var mapTypeObj = { 1:'gr', 2:'gt', 3:'gm' } map2DViewer.setDefaultTileLayer(mapTypeObj[e.data.da.maptype]); map23DControl.setView({ center: { lat: e.data.da.latitude, lng: e.data.da.longitude }, 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); } //分页 if(pageContainer) 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)}); } } }); favPageBtnGroup = $('
').appendTo(pageContainer); if (modValue.favData.size < modValue.favData.total) { if (modValue.favData.current_page == 1) { var abtnNext = $(''); favPageBtnGroup.append(abtnNext); } else if (countPages == modValue.favData.current_page && modValue.favData.total > modValue.favData.size) { var abtnPrev = $(''); favPageBtnGroup.append(abtnPrev); } else { var abtnPrev = $(''); var abtnNext = $(''); favPageBtnGroup.append(abtnPrev).append(abtnNext); } $("#userFavPage .btn").on("click", function () { showPage({page: parseInt($(this).attr('pid'))}); }); //用户中心-我的收藏-书签-翻页 $("#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"); } /** * 添加收藏 * @type {Function} * @param e */ function addFav(e){ //限制只能添加当前一个窗口 if(status.isAddForm){ return false; } status.isAddForm = true; $('body').append(tplUserFavAddModal); $('#filterCover').show(); $('#userFavAddModal').show(); $('#userFavAddModal').find('.input').focus(); $('#userFavAddModal').find('.close').bind('click',function(){ $('#filterCover').hide(); $('#userFavAddModal').remove(); status.isAddForm = false; }); $('#userFavAddModal').find('.sure').bind('click',function(){ var name = $('#userFavAddModal .input').val(); if(name ==='' || name.indexOf(' ') >= 0){ ONEMAP.C.publisher.publish({ type: 'warning', message: '书签名称不能为空或包含空格' }, 'noteBar::add'); $('#userFavAddModal .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'); $('#userFavAddModal .input').focus(); return false; } //构造数据 var ajaxData = {}; ajaxData.name = $('#userFavAddModal .input').val(); ajaxData.longitude = map23DData.view.center['lng']; ajaxData.latitude = map23DData.view.center['lat']; ajaxData.zoomleve = map23DData.view.zoom; ajaxData.source_id = 0; var mapTypeObj = { gr:1, gt:2, gm:3 } ajaxData.maptype = mapTypeObj[ONEMAP.M.mapHolder.modValue.mainLayers]; ONEMAP.V.loading.load(); $.ajax({ type:"get", dataType:'json', url:onemapUrlConfig.userCenterUrl+'/bookmarker/add', data:ajaxData, success:function(data){ ONEMAP.V.loading.loaded(); if(data.code == 4){ ONEMAP.T.noPermission('addFav'); } if(data.code == 3){ ONEMAP.T.logout('addFav'); } if(data.success){ ONEMAP.C.publisher.publish({type:'success',message:'收藏书签('+ajaxData.name+')成功'},'noteBar::add'); getFavData(); }else if(data.hasOwnProperty('success') && !data.success) { ONEMAP.C.publisher.publish({type:'error',message:'收藏书签('+ajaxData.name+')失败,'+data.msg},'noteBar::add'); }else { ONEMAP.C.publisher.publish({type:'error',message:'收藏书签('+ajaxData.name+')失败'},'noteBar::add'); } }, error:function(errorData){ ONEMAP.V.loading.loaded(); } }); //移除添加框,恢复可添加状态 $('#filterCover').hide(); $('#userFavAddModal').remove() ; status.isAddForm = false; }); } /** * 编辑表单 * @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+'/bookmarker/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+'/bookmarker/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.userFav = { init:init, remove:remove, addFav:addFav } });