123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415 |
- /**
- * 弹窗类
- */
- define([
- 'html!templates/meteo/popup_station', //弹窗
- ], function (html) {
- var popup = {
- options: [],
- length: [],
- chart: null,
- initImage: function () {
- for (var i = 0; i < 100; i++) {
- var image = new Image();
- var dayUrl = "";
- if (i < 10) {
- dayUrl = 'images/meteo/weatherIcon/cww0' + i + '.png';
- } else {
- dayUrl = 'images/meteo/weatherIcon/cww' + i + '.png';
- }
- image.src = dayUrl;
- }
- var dayAndNightImageId = [0, 1, 2, 3, 25, 26, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90];
- for (var j = 0; j < dayAndNightImageId.length; j++) {
- var image = new Image();
- var nightUrl = "";
- if (dayAndNightImageId[i] < 10) {
- nightUrl = 'images/meteo/weatherIcon/cww0' + i + 'n.png';
- } else {
- nightUrl = 'images/meteo/weatherIcon/cww' + i + 'n.png';
- }
- image.src = nightUrl;
- }
- },
- init: function () {
- //初始化弹窗
- //---------------step1 添加弹窗布局
- $('body').append(html);
- //---------------step2 弹窗加入拖动功能
- require(['meteoDir/other/jquery.easyui.min'], function () {
- $('.meteo-popup').draggable();
- });
- //---------------设置弹窗的23维地图样式切换
- ONEMAP.C.publisher.subscribe(function (type) {
- if (type == '2d') {
- $(".meteo-popup .popup_html").removeClass('TD');
- } else if (type == '3d') {
- $(".meteo-popup .popup_html").addClass('TD');
- }
- }, 'change23D');
- //滚动条功能
- $(".content_scrollx").mCustomScrollbar({
- axis: "x",
- advanced: {
- autoExpandHorizontalScroll: true,
- }
- });
- //------------添加/删除TD为星图添加(用于3D地图显示弹窗)---------------
- $('.meteo-weather-dot').click(function (event) {
- $('.meteo-popup').show();
- if (map23DData.display.map2D) {
- $(".meteo-popup .popup_html").removeClass('TD');
- } else {
- $(".meteo-popup .popup_html").addClass('TD');
- }
- });
- //----------------------------------------------------------------------
- //实况 菜单切换
- $('.meteo-popup #meteo-popup-bt1').addClass('current');
- $('.meteo-popup .meteo-popup-chart>div').eq(0).show().siblings().hide();
- $('.meteo-popup .meteo-popup-buttons a').click(function () {
- $(this).addClass('current').siblings().removeClass('current');
- $('.meteo-popup .meteo-popup-chart>div').eq($(this).index()).show().siblings().hide();
- })
- $('.meteo-popup .metie-popup-buttons-main').click(function (event) {
- $(this).addClass('current').siblings().removeClass('current');
- $('.meteo-popup .meteo-popup-main-warp').addClass('current').siblings().removeClass('current');
- });
- $('.meteo-popup .metie-popup-buttons-chart').click(function (event) {
- $(this).addClass('current').siblings().removeClass('current');
- $('.meteo-popup .meteo-popup-chart').addClass('current').siblings().removeClass('current');
- });
- //关闭按钮可关闭弹窗
- $('.meteo-popup .meteo-delete').click(function (event) {
- popup.hidePopup();
- });
- //点击地图关闭弹窗 2D
- map2DViewer.map.on('click', function () {
- $('.meteo-popup').hide();
- })
- //todo 点击地图关闭弹窗 3D
- // locaSpaceMap.attachEvent('Click', function () {
- // PubSub.publish('map3D.click', {
- // from:'3D'
- // });
- // // $('#meteo-popup').hide();
- // })
- },
- getUrlForType: function (type) {
- var urls =
- //地面站
- type == 0 ? [meteo.c.http.stationInfo, meteo.c.http.stationReal,
- meteo.c.http.stationFcst, meteo.c.http.stationFcstDay] :
- //5000站点
- type == 1 ? [meteo.c.http.stationGInfo, meteo.c.http.stationGReal, meteo.c.http.stationGFcst] :
- //JD站
- type == 2 ? [meteo.c.http.amsuInfo, meteo.c.http.amsuReal, meteo.c.http.amsuFcst] :
- //自动站
- type == 3 ? [meteo.c.http.awsInfo, meteo.c.http.awsReal, meteo.c.http.amsuFcst] :
- //船舶报
- type == 4 ? [meteo.c.http.shipInfo] :
- null;
- return urls;
- },
- showPopup: function (station, name, type) {
- var urls = popup.getUrlForType(type);
- if (!urls) return;
- //---------------------重置为基础位置,重置第一按钮--------------------
- $('.meteo-station-popup').css('left', '260px');
- $('.meteo-station-popup').css('top', '100px');
- $('.meteo-station-popup #meteo-popup-bt1').addClass('current').siblings().removeClass('current');
- $('#meteo-popup-cdiv1').hide();
- $('#meteo-popup-cdiv2').hide();
- $('.meteo-station-popup').show();
- //-------------------step2 填充弹窗内数据-----------------------
- switch (type) {
- case 0:
- popup.setContent(station, name, urls[0], function () {
- $('.meteo-shikuang-div').show();
- },0);
- popup.setFcst(station, urls[2]);
- popup.setFcstD(station, urls[3]);
- break;
- case 1:
- popup.setContent(station, name, urls[0], function () {
- $('.meteo-shikuang-div').show();
- },1);
- popup.setFcst(station, urls[3]);
- popup.setGlobalFcstD(station, urls[2]);
- break;
- case 2:
- popup.setContent(station, name, urls[0], function () {
- $('.meteo-shikuang-div').show();
- },2);
- popup.setFcst(station, urls[2]);
- popup.setFcstD(station, urls[3]);
- break;
- case 3:
- popup.setContent(station, name, urls[0], function () {
- $('.meteo-shikuang-div').show();
- },3);
- popup.setFcst(station, urls[2]);
- popup.setFcstD(station, urls[3]);
- break;
- default:
- break;
- }
- },
- setContent: function (station, name, url, callback,type, day) {
- var par = null;
- if (day) {
- par = {
- odate: day
- }
- }
- meteo.c.http.httpFunction(url, station, par, function (json) {
- if (json) {
- var date = json.ldate;
- popup.setTitle('#meteo-popup-title', name, station, date);
- var wth = meteo.c.process.setWth(json.wth);
- popup.setPopupData('#meteo-popup-wth', wth);
- var tt = meteo.c.process.setTt(json.tt);
- popup.setPopupData('#meteo-popup-tt', tt);
- var wth1 = meteo.c.process.setWth(json.wth1);
- popup.setPopupData('#meteo-popup-wth1', wth1);
- var wth2 = meteo.c.process.setWth(json.wth2);
- popup.setPopupData('#meteo-popup-wth2', wth2);
- var td = meteo.c.process.setTt(json.td);
- popup.setPopupData('#meteo-popup-td', td);
- var pr = meteo.c.process.setPr(json.pr);
- popup.setPopupData('#meteo-popup-pr', pr);
- var vis = meteo.c.process.setVis(json.vis);
- popup.setPopupData('#meteo-popup-vis', vis);
- var rh = meteo.c.process.setRh(json.rh);
- popup.setPopupData('#meteo-popup-rh', rh);
- var cn = meteo.c.process.setCn(json.cn);
- popup.setPopupData('#meteo-popup-cn', cn);
- var wd = meteo.c.process.setWd(json.wd);
- var rn = meteo.c.process.setRn(json.rn06);
- if(type == 1){
- wd = meteo.c.process.setShipWd(json.wd);
- $('#meteo-popup-rn06').parent().hide();
- $('#meteo-popup-ch').parent().hide();
- $('#meteo-popup-rh').parent().show();
- $('#meteo-popup-cn').parent().show();
- var cf = meteo.c.process.setRh(json.cF);
- popup.setPopupData('#meteo-popup-cn', cf);
- $('#meteo-popup-cn').prev().html('云覆盖率');
- $('.meteo-popup-shikuangUl li').width('24.7%');
- }else if(type == 2){
- rn = meteo.c.process.setRn(json.rn);
- $('#meteo-popup-cn').parent().show();
- $('#meteo-popup-ch').parent().hide();
- $('#meteo-popup-rh').parent().hide();
- $('#meteo-popup-rn06').parent().show();
- $('#meteo-popup-cn').prev().html('总云量');
- $('.meteo-popup-shikuangUl li').width('24.7%');
- }else if(type == 3){
- rn = meteo.c.process.setRn(json.rn);
- $('#meteo-popup-cn').parent().hide();
- $('#meteo-popup-ch').parent().hide();
- $('#meteo-popup-rh').parent().show();
- $('#meteo-popup-rn06').parent().show();
- $('.meteo-popup-shikuangUl li').width('24.7%');
- }else if(type == 0){
- $('#meteo-popup-cn').parent().show();
- $('#meteo-popup-ch').parent().show();
- $('#meteo-popup-rh').parent().show();
- $('#meteo-popup-rn06').parent().show();
- $('#meteo-popup-cn').prev().html('总云量');
- $('.meteo-popup-shikuangUl li').width('19.7%');
- }
- popup.setPopupData('#meteo-popup-rn06', rn);
- var ws = meteo.c.process.setWs(json.ws);
- popup.setPopupData('#meteo-popup-wd', wd);
- popup.setPopupData('#meteo-popup-ws', ws);
- var dp = meteo.c.process.setPr(json.dp03);
- popup.setPopupData('#meteo-popup-dp03', dp);
- var cm = meteo.c.process.setCn(json.cm);
- popup.setPopupData('#meteo-popup-cm', cm);
- var ch = meteo.c.process.setCh(json.ch);
- popup.setPopupData('#meteo-popup-ch', ch);
- callback ? callback() : null;
- } else {
- ONEMAP.C.publisher.publish({type: 'warning', message: '暂无当前站点数据'}, 'noteBar::add');
- popup.hidePopup();
- }
- })
- },
- setReal: function (station, url, day) {
- if (!url) {
- return;
- }
- var par = null;
- if (day) {
- par = {
- ldate: day,
- odate: day
- }
- }
- meteo.c.http.httpFunction(url, station, par, function (json) {
- if (json.length > 0) {
- $('#meteo-popup-bt1').show();
- $('#meteo-popup-cdiv1').show();
- var chartWidth = json.length * 50;
- chartWidth = chartWidth < 740 ? 740 : chartWidth;
- $('#meteo-popup-chart').css('width', chartWidth); //设置宽度
- var chart = meteo.c.chart.getChart('meteo-popup-chart');
- var option = meteo.c.chart.getChartOption(json, "实况");
- chart.resize();
- chart.setOption(option);
- $(".content_scrollx").mCustomScrollbar('update');
- }
- }, function () {
- });
- },
- setFcst: function (station, url, day) {
- if (!url) {
- $('#meteo-popup-bt2').hide();
- return;
- }
- var par = null;
- if (day) {
- par = {
- ldate: day,
- odate: day
- }
- }
- meteo.c.http.httpFunction(url, station, par, function (json) {
- if (json.length > 0) {
- $('#meteo-popup-bt2').show();
- var chartWidth = json.length * 60;
- chartWidth = chartWidth < 740 ? 740 : chartWidth;
- $('#meteo-popup-chart').css('width', chartWidth); //设置宽度
- var chart = meteo.c.chart.getChart('meteo-popup-chart');
- chart.clear();
- var option = meteo.c.chart.getSurfHourChartOption(json, "预报");
- chart.setOption(option);
- $(".content_scrollx").mCustomScrollbar('update');
- } else {
- $('#meteo-popup-cdiv1').hide();
- $('#meteo-popup-bt2').hide();
- }
- }, function () {
- $('#meteo-popup-bt2').hide();
- })
- },
- setFcstD: function (station, url, day) {
- if (!url) {
- $('#meteo-popup-bt3').hide();
- return;
- }
- var par = null;
- if (day) {
- par = {
- ldate: day,
- odate: day
- }
- }
- meteo.c.http.httpFunction(url, station, par, function (json) {
- if (json.length > 0) {
- $('#meteo-popup-bt3').show();
- var chartWidth = json.length * 40;
- chartWidth = chartWidth < 740 ? 740 : chartWidth;
- $('#meteo-popup-chart2').css('width', chartWidth); //设置宽度
- var chart = meteo.c.chart.getChart('meteo-popup-chart2');
- chart.clear();
- var option = meteo.c.chart.getChartOption(json, "七天预报");
- chart.setOption(option);
- $(".content_scrollx").mCustomScrollbar('update');
- } else {
- $('#meteo-popup-cdiv2').hide();
- $('#meteo-popup-bt3').hide();
- }
- }, function () {
- $('#meteo-popup-bt3').hide();
- })
- },
- setGlobalFcstD: function (station, url, day) {
- if (!url) {
- $('#meteo-popup-bt3').hide();
- return;
- }
- var par = null;
- if (day) {
- par = {
- ldate: day,
- odate: day
- }
- }
- meteo.c.http.httpFunction(url, station, par, function (json) {
- if (json.length > 0) {
- $('#meteo-popup-bt3').show();
- var chartWidth = json.length * 40;
- chartWidth = chartWidth < 740 ? 740 : chartWidth;
- $('#meteo-popup-chart2').css('width', chartWidth); //设置宽度
- var chart = meteo.c.chart.getChart('meteo-popup-chart2');
- chart.clear();
- var option = meteo.c.chart.getGlobalDaysChartOption(json, "七天预报");
- chart.setOption(option);
- $(".content_scrollx").mCustomScrollbar('update');
- } else {
- $('#meteo-popup-bt3').hide();
- $('#meteo-popup-chart2').hide();
- }
- }, function () {
- $('#meteo-popup-bt3').hide();
- })
- },
- hidePopup: function () {
- $('.meteo-station-popup').hide();
- },
- setPopupData: function (id, data) {
- var html = data ? data : "--";
- $(id).html(html);
- },
- setTitle: function (id, name, station, ldate) {
- // var html = data == 0 || data ? data + company : "--";
- if (name == "undefined" || !name) name = null;
- var html = name ? name + " (" + station + ")" : "(" + station + ")";
- html = ldate ? html + " " + ldate : html;
- $(id).html(html);
- },
- }
- popup.init();
- // popup.initImage();
- return popup;
- });
|