123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358 |
- var protocol = 'https';
- var host = 'www.qh-cloud.com';
- var apiKey = "913cd67c-e952-41e0-a74a-362624b2aa8f";
- var retryTimes = 2;
- var deviceIds = [1906041109,2010210017,2010210009,2010210002];
- var weatherURL = "https://free-api.heweather.net/s6/weather";
- var weatherKEY = "63683c81316f451bbd1d9ef64202e7ea";
- var weatherLocation = "";
- function applyData(data) {
- var element = $("#m_" + data.monitoringId);
- if (element.length == 0) {
- element = $("#" + data.monitoringId);
- }
- if (element.length == 0) {
- return;
- }
- var format = element.data("format");
- var kvMap = element.data("map") || { "0": "off", "1": "on" };
- if (format === "text") {
- if (data.dataType == "3") {
- //枚举
- try {
- var map = JSON.parse(data.dataMap);
- if (map[data.value] != "") {
- element.text(map[data.value]);
- } else {
- element.text(data.value);
- }
- } catch (err) {
- element.text(data.value);
- }
- } else {
- element.text(data.value);
- }
- } else if (format === "class") {
- for (var key in kvMap) {
- if (data.value != key) {
- element.removeClass(kvMap[key]);
- }
- }
- var className = kvMap[data.value];
- if (!element.hasClass(className)) {
- element.addClass(className);
- }
- } else if (format === "image") {
- for (var key in kvMap) {
- if (data.value == key) {
- element.attr("src", kvMap[key]);
- }
- }
- } else if (format === "text_today"){
- var today = new Date(new Date().pattern("yyyy/MM/dd 00:00:00"));
- var dataTime = new Date(data.dataTime);
- if (today.getTime() > dataTime.getTime()) {
- element.text('-');
- return;
- }
- if ($('#todayStart'+data.monitoringId).val() != '') {
- var value = data.value - $('#todayStart' + data.monitoringId).val();
- element.text(value.toFixed(2) + data.unit);
- }else {
- loadTodayStratData(data.monitoringId, true, data.unit);
- }
- }
- // 计算厕位数量, on 使用中,off 未使用
- var maleUse = $(".male.on").size();
- var maleNotUse = $(".male.off").size();
- var femaleUse = $(".female.on").size();
- var femaleNotUse = $(".female.off").size();
- $("#txt_allUse").text(maleUse + femaleUse + $(".other.on").size());
- $("#txt_allNotUse").text(maleNotUse + femaleNotUse + $(".other.off").size());
- $("#txt_maleUse").text(maleUse);
- $("#txt_maleNotUse").text(maleNotUse);
- $("#txt_femaleUse").text(femaleUse);
- $("#txt_femaleNotUse").text(femaleNotUse);
- }
- SUBSCRIBER_DEFAULTS = {
- WebSocketUrl: (protocol === "https" ? "wss" : "ws") + "://" + host + "/websocket",
- SockJSUrl: protocol + "://" + host + "/websocket/sockjs"
- };
- var subscribers = {};
- function subscribeMonitoringData(deviceId) {
- unSubscribeMonitoringData(deviceId);
- var subscriber = new Subscriber("/topic/transport/monitoringdata/" + deviceId, function (monitoringData) {
- applyData(monitoringData);
- });
- subscriber.subscribe();
- subscribers[deviceId] = subscriber;
- }
- function unSubscribeMonitoringData(deviceId) {
- if (subscribers[deviceId]) {
- subscribers[deviceId].unsubscribe();
- delete subscribers[deviceId];
- }
- }
- function loadMonitoringData(deviceId) {
- var times = retryTimes;
- var loop = function () {
- $.ajax({
- url: protocol + "://" + host + "/api/link/device/" + deviceId + "/monitoring",
- data: {
- key: apiKey,
- },
- type: "get",
- dataType: "json",
- success: function (data) {
- if (typeof data.code != "undefined" && data.code != 0) {
- } else {
- $.each(data.monitorings, function (i, n) {
- applyData({
- monitoringId: n.monitoringId,
- value: n.dataValue,
- unit: n.unit,
- dataMap: n.dataMap || {},
- dataTime: n.dataTime
- });
- });
- }
- },
- error: function () {
- if (times-- > 0) {
- loop();
- }
- }
- });
- };
- loop();
- }
- function loadDevice(deviceId) {
- loadMonitoringData(deviceId);
- subscribeMonitoringData(deviceId);
- }
- Date.prototype.pattern = function (fmt) {
- var o = {
- "M+": this.getMonth() + 1, //月份
- "d+": this.getDate(), //日
- "h+": this.getHours() % 12 == 0 ? 12 : this.getHours() % 12, //小时
- "H+": this.getHours(), //小时
- "m+": this.getMinutes(), //分
- "s+": this.getSeconds(), //秒
- "q+": Math.floor((this.getMonth() + 3) / 3), //季度
- S: this.getMilliseconds() //毫秒
- };
- var week = {
- 0: "日",
- 1: "一",
- 2: "二",
- 3: "三",
- 4: "四",
- 5: "五",
- 6: "六"
- };
- if (/(y+)/.test(fmt)) {
- fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
- }
- if (/(E+)/.test(fmt)) {
- fmt = fmt.replace(
- RegExp.$1,
- (RegExp.$1.length > 1 ? (RegExp.$1.length > 2 ? "星期" : "周") : "") + week[this.getDay() + ""]
- );
- }
- for (var k in o) {
- if (new RegExp("(" + k + ")").test(fmt)) {
- fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
- }
- }
- return fmt;
- };
- function printNow() {
- var date = new Date();
- $("#txt_time").html(date.pattern("yyyy/MM/dd HH:mm"));
- }
- /**
- * 根据monitoringId获取测点今日起始的数据存于页面元素中
- * @param monitoringId
- */
- function loadTodayStratData(monitoringId, loadnow, unit){
- var times = retryTimes;
- var loop = function () {
- $.ajax({
- url: protocol + "://" + host + "/api/link/monitoring/" + monitoringId + "/today",
- data: {
- key: apiKey,
- },
- type: "get",
- dataType: "json",
- success: function (data) {
- if (typeof data.code != "undefined" && data.code != 0) {
- } else {
- if (data.datas.length > 0) {
- $('#todayStart' + monitoringId).val(data.datas[0].dataValue);
- if (loadnow != undefined && loadnow === true) {
- unit = unit === undefined?'':unit;
- var value = data.datas[data.datas.length-1].dataValue - data.datas[0].dataValue;
- var element = $('#m_'+monitoringId);
- if (element.length == 1) {
- $('#m_' + monitoringId).text(value.toFixed(2) + unit);
- }else {
- $('#' + monitoringId).text(value.toFixed(2) + unit);
- }
- }
- }
- }
- },
- error: function () {
- if (times-- > 0) {
- loop();
- }
- }
- });
- };
- loop();
- }
- /**
- * 在页面上生成用于存储今日起始数据的input元素,并初始化数据
- */
- function loadToday(){
- var elements = $("*");
- if (elements.length == 0) {
- return;
- }
- for (var i = 0; i < elements.length; i++) {
- var element = elements[i];
- var elementId = element.id;
- var monitoringId = element.id;
- if (monitoringId.startsWith("m_")){
- monitoringId = monitoringId.substr(2);
- }
- var format = $('#'+elementId).data("format");
- if (format === "text_today") {
- $('#'+elementId).after("<input type='hidden' id='todayStart" + monitoringId + "'>");
- loadTodayStratData(monitoringId);
- }
- }
- }
- /**
- * 天数切换时刷新今日的起始数据
- */
- function loadTodayStartAll(){
- var elements = $("*");
- if (elements.length == 0) {
- return;
- }
- for (var i = 0; i < elements.length; i++) {
- var element = elements[i];
- var elementId = element.id;
- var monitoringId = element.id;
- if (monitoringId.startsWith("m_")){
- monitoringId = monitoringId.substr(2);
- }
- var format = $('#'+elementId).data("format");
- if (format === "text_today") {
- loadTodayStratData(monitoringId);
- }
- }
- }
- function isNotEmpty(var1){
- if(var1 != null && var1 != ""){
- return true;
- }
- return false;
- }
- function loadWeather() {
- if(isNotEmpty(weatherURL)&&isNotEmpty(weatherKEY)&&isNotEmpty(weatherLocation)) {
- var weatherImg = {
- "100": "img/weather/qing.png",
- "403": "img/weather/baoxue.png",
- "310": "img/weather/baoyu.png",
- "311": "img/weather/dabaoyu.png",
- "402": "img/weather/daxue.png",
- "307": "img/weather/dayu.png",
- "101": "img/weather/duoyun.png",
- "302": "img/weather/leizhenyu.png",
- "103": "img/weather/qingzhuanduoyun.png",
- "312": "img/weather/tedabaoyu.png",
- "400": "img/weather/xiaoxue.png",
- "305": "img/weather/xiaoyu.png",
- "104": "img/weather/yin.png",
- "404": "img/weather/yujiaxue.png",
- "350": "img/weather/zhenyu.png",
- "401": "img/weather/zhongxue.png",
- "306": "img/weather/zhongyu.png"
- };
- $.ajax({
- url: "https://free-api.heweather.net/s6/weather",
- data: {
- key: "63683c81316f451bbd1d9ef64202e7ea",
- location: weatherLocation
- },
- type: "get",
- dataType: "json",
- success: function (data) {
- if (typeof data.HeWeather6[0].status != "undefined" && data.HeWeather6[0].status != "ok") {
- } else {
- var todayDate = new Date();
- var tomorrowDate = new Date();
- tomorrowDate.setTime(todayDate.getTime() + 24 * 60 * 60 * 1000);
- var afterTomorrowDate = new Date();
- afterTomorrowDate.setTime(tomorrowDate.getTime() + 24 * 60 * 60 * 1000);
- var today = todayDate.pattern("yyyy-MM-dd");
- var tomorrow = tomorrowDate.pattern("yyyy-MM-dd");
- var afterTomorrow = afterTomorrowDate.pattern("yyyy-MM-dd");
- $.each(data.HeWeather6[0].daily_forecast, function (i, n) {
- var weather = n.tmp_min + "℃" + "-" + n.tmp_max + "℃";
- var imgPath = weatherImg[n.cond_code_d];
- if (n.date == today) {
- $("#today").text(weather);
- $("#img_today_weather").attr("src", imgPath);
- } else if (n.date == tomorrow) {
- $("#tomorrow").text(weather);
- $("#img_tomorrow_weather").attr("src", imgPath);
- } else if (n.date == afterTomorrow) {
- $("#after_tomorrow").text(weather);
- $("#img_after_tomorrow_weather").attr("src", imgPath);
- }
- });
- }
- }
- });
- }
- }
- function initToday(){
- loadToday();
- window.setInterval("loadTodayStartAll()", 1000*60*10);
- }
- function initWeather(){
- loadWeather();
- window.setInterval("loadWeather()", 1000*60*60*6);
- }
- $(function () {
- initToday();
- initWeather();
- for (var i = 0; i < deviceIds.length; i++){
- loadDevice(deviceIds[i]);
- }
- window.setInterval("printNow()", 1000);
- });
|