123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448 |
- /**
- * @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 = $('<div id="userFavPage"></div>').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<l; i++){
- var da = modValue.favData['list'][i];
- count++;
- var itemHtml = $('<dt fid="'+da._id+'"><span class="num">'+count+'</span><span class="name">'+da.name +'</span>'+
- '<span class="option"><a class="del" title="删除">删除</a><a class="edit" title="编辑">编辑</a></span></dt>');
- 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 = $('<div id="userFavPageJump" class="count"><span>第</span><input class="page_num input input-small" value="'+modValue.favData.current_page+'" type="text" /><span>/'+countPages+'页</span></div>');
- pageJump = $('<div id="userFavPageJump" class="count"><div class="firstpage"></div><div class="uppage"></div>'+
- '<div class="fg"></div><div id="thematicPageJump" class="count"><span>'+modValue.favData.current_page+'/'+countPages+'页</span>'+
- '</div><div class="fg"></div><div class="nextpage"></div><div class="endpage"></div><div class="btn-group"></div></div>');
- 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('<p class="not-result">暂无数据!</p>');
- }
- $("#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 = $('<div class="form">' +
- '<input type="text" class="input input-small" maxlength="20" value="'+data.name+'" />' +
- '<button class="btn sure btn2 btn-small">确定</button>' +
- '<button class="btn cancel btn2 btn-small">取消</button>' +
- '</div> ');
- 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 = $('<div class="form">' +
- '<button class="btn cancel btn2 btn-small" style="float:right;margin-right:18px;">取消</button>' +
- '<button class="btn sure btn2 btn-small" style="float:right">确定</button>' +
- '</div> ');
- 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
- }
- });
|