main.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482
  1. $(function() {
  2. // _init_area();
  3. // function showArea() {
  4. // $('#show').html("<h3>省" + $('#s_province').val() + " - 市" +
  5. // $('#s_city').val() + " - 县/区" +
  6. // $('#s_county').val() + "</h3>")
  7. // }
  8. // $('#s_county').change(function() {
  9. // showArea()
  10. // })
  11. // 地区和频道、类型、节目都是默认为第一个,选择地区之后加载频道
  12. // ajax.loadLocation(); //加载地区 之后赋值给ajax.areaId默认第一个
  13. // ajax.channelLoad(); //加载频道 这边取默认第一个的ajax.areaId
  14. // ajax.typeLoad(); //加载类型
  15. // ajax.loadProgram(); //加载节目
  16. // ajax.loaddata(); //加载echars数据
  17. var myVid = document.getElementsByClassName("video")[0];
  18. setInterval(function() {
  19. curr(myVid.currentTime)
  20. }, 1000)
  21. var time = 0
  22. var i = 1;
  23. // var now = new Date();
  24. // 头部操作
  25. // header.location();
  26. header.calendarbtn()
  27. })
  28. var page;
  29. function curr(curr) {
  30. $('.time').text(Math.floor(curr))
  31. // var datainit = canvas.dealdata(ajax.Icdata, ajax.Irdata, ajax.audienceRating);
  32. var old_page = page;
  33. page = Math.floor(curr / 180) + 1;
  34. if (curr > 0 && curr % 180 == 0) {
  35. page -= 1;
  36. }
  37. // var start_time = ajax.fisttime + 180000 * (page - 1);
  38. if (old_page != page) {
  39. //todo 更新X轴
  40. // canvas.draw(datainit[0][page], datainit[1][page], datainit[2][page], start_time);
  41. }
  42. if ((Math.floor(curr / 180)) != 0) {
  43. var p = curr - (Math.floor(curr / 180)) * 180
  44. } else {
  45. var p = curr
  46. }
  47. canvas.linemove(p);
  48. // $('#ys').text(ajax.alldata[Math.floor(curr)].programGroup.CCTV)
  49. // $('#ws').text(ajax.alldata[Math.floor(curr)].programGroup.satellite)
  50. // $('#sj').text(ajax.alldata[Math.floor(curr)].programGroup.provincial)
  51. // $('#dm').text(ajax.alldata[Math.floor(curr)].programGroup.ground)
  52. // $('#qt').text(ajax.alldata[Math.floor(curr)].programGroup.other)
  53. // $('#no1').text(ajax.alldata[Math.floor(curr)].top.No1)
  54. // $('#no2').text(ajax.alldata[Math.floor(curr)].top.No2)
  55. // $('#no3').text(ajax.alldata[Math.floor(curr)].top.No3)
  56. // $('#no4').text(ajax.alldata[Math.floor(curr)].top.No4)
  57. // $('#no5').text(ajax.alldata[Math.floor(curr)].top.No5)
  58. }
  59. var ajax = {
  60. Irdata: [], //流入数据
  61. Icdata: [], //流出数据
  62. audienceRating: [], //收视率
  63. timeAll: [],
  64. fisttime: null, //开始时间
  65. alldata: [], //所有数据
  66. domain: "http://220.180.229.163:8087",
  67. areaId: '',
  68. loadProgram: function() {
  69. var nowdate = new Date();
  70. var year = nowdate.getFullYear();
  71. var month = (nowdate.getMonth() + 1) < 10 ? '0' + (nowdate.getMonth() + 1) : (nowdate.getMonth() + 1);
  72. var date = nowdate.getDate() < 10 ? '0' + nowdate.getDate() : nowdate.getDate();
  73. var hour = '00';
  74. var min = '00';
  75. var second = '00';
  76. var mydate = year + '-' + month + '-' + date + ' ' + hour + ':' + min + ':' + second;
  77. var that = this;
  78. var channelId = $('#channelName').attr('channelId') || 11;
  79. var channelTypeCode = $('#typeName').attr('programtypecode') || 'anime';
  80. var startTime = $('#startTime').attr('timedata') || mydate;
  81. // $.ajax({
  82. // type: "POST",
  83. // async: false,
  84. // url: that.domain + '/starv-channel/program/getProgramIndex',
  85. // data: {
  86. // channelId: channelId,
  87. // channelTypeCode: channelTypeCode,
  88. // // startTime: startTime
  89. // },
  90. // cache: false,
  91. // dataType: "json",
  92. // success: function(json) {
  93. // // console.log(json)
  94. // $('#programUl').empty()
  95. // if (json.success) {
  96. // for (var i in json.data) {
  97. // $('#programUl').append('<li><a href="#" programId=' + json.data[i].programId + '>' + json.data[i].content + '</a></li>')
  98. // }
  99. // that.programClick();
  100. // $('#programName').text(json.data[0].content)
  101. // $('#programName').attr('programId', json.data[0].programId)
  102. // }
  103. // },
  104. // });
  105. },
  106. programClick: function() {
  107. var that = this;
  108. $('#programUl li a').on('click', function() {
  109. $('#programName').text($(this).text())
  110. $('#programName').attr('programId', $(this).attr('programId'))
  111. })
  112. },
  113. loadLocation: function() {
  114. var that = this;
  115. // $.ajax({
  116. // type: "get",
  117. // async: false,
  118. // url: that.domain + '/starv-channel/area/getAllArea',
  119. // cache: false,
  120. // dataType: "json",
  121. // success: function(json) {
  122. // if (json.success) {
  123. // for (var key in json.data) {
  124. // $('#LocationUl').append('<li><a href="#" areaId=' + json.data[key].areaId + '>' + json.data[key].areaName + '</a></li>')
  125. // }
  126. // that.locationClick()
  127. // $('#locationName').text(json.data[0].areaName);
  128. // $('#locationName').attr('areaid', json.data[0].areaId);
  129. // that.areaId = json.data[0].areaId
  130. // }
  131. // },
  132. // });
  133. },
  134. locationClick: function() {
  135. var that = this;
  136. $('#LocationUl li a').on('click', function() {
  137. $('#locationName').text($(this).text())
  138. $('#locationName').attr('areaId', $(this).attr('areaId'))
  139. that.channelLoad($(this).attr('areaId'));
  140. })
  141. },
  142. channelLoad: function(id) {
  143. var that = this;
  144. // $.ajax({
  145. // type: "POST",
  146. // async: false,
  147. // data: {
  148. // areaId: id || that.areaId
  149. // },
  150. // url: that.domain + '/starv-channel/channel/getChannelByAreaId',
  151. // cache: false,
  152. // dataType: "json",
  153. // success: function(json) {
  154. // if (json.success) {
  155. // $('#channelUl').empty();
  156. // for (var key in json.data) {
  157. // $('#channelUl').append('<li><a href="#" channelId=' + json.data[key].channelId + '>' + json.data[key].channelName + '</a></li>')
  158. // }
  159. // that.channelClick();
  160. // $('#channelName').text(json.data[0].channelName);
  161. // $('#channelName').attr('channelId', json.data[0].channelId);
  162. // }
  163. // },
  164. // });
  165. },
  166. channelClick: function() {
  167. var that = this;
  168. $('#channelUl li a').on('click', function() {
  169. $('#channelName').text($(this).text())
  170. $('#channelName').attr('channelId', $(this).attr('channelId'));
  171. that.loadProgram();
  172. })
  173. },
  174. typeLoad: function() {
  175. var that = this;
  176. // $.ajax({
  177. // type: "get",
  178. // async: false,
  179. // url: that.domain + '/starv-channel/program/getAllProgramType',
  180. // cache: false,
  181. // dataType: "json",
  182. // success: function(json) {
  183. // if (json.success) {
  184. // for (var key in json.data) {
  185. // $('#typeUl').append('<li><a href="#" programTypeCode=' + json.data[key].programTypeCode + '>' + json.data[key].programTypeName + '</a></li>')
  186. // }
  187. // that.typeClick();
  188. // $('#typeName').text(json.data[0].programTypeName)
  189. // $('#typeName').attr('programtypecode', json.data[0].programTypeCode);
  190. // }
  191. // },
  192. // });
  193. },
  194. typeClick: function() {
  195. var that = this;
  196. $('#typeUl li a').on('click', function() {
  197. $('#typeName').text($(this).text())
  198. $('#typeName').attr('programTypeCode', $(this).attr('programTypeCode'))
  199. })
  200. that.loadProgram();
  201. },
  202. loaddata: function() {
  203. var count = 0;
  204. var that = this;
  205. var channelId = $('#channelName').attr('channelId')
  206. var channelTypeCode = $('#typeName').attr('programtypecode')
  207. var startTime = $('#timeName').attr('timedata')
  208. var programId = $('#programName').attr('programid')
  209. // console.log(channelId)
  210. // $.ajax({
  211. // type: "post",
  212. // async: false,
  213. // data: {
  214. // channelId: channelId,
  215. // channelTypeCode: channelTypeCode,
  216. // startTime: startTime,
  217. // programId: programId
  218. // },
  219. // url: that.domain + '/starv-channel/channel/getChannelDetail',
  220. // cache: false,
  221. // dataType: "json",
  222. // success: function(json) {
  223. // console.log(json)
  224. // that.Irdata = [];
  225. // that.Icdata = [];
  226. // that.audienceRating = [];
  227. // that.timeAll = [];
  228. // for (var i in json.data) {
  229. // that.timeAll.push(canvas.timeformate(i))
  230. // that.Irdata.push(json.data[i].lr)
  231. // that.Icdata.push(json.data[i].lc)
  232. // that.audienceRating.push(json.data[i].audienceRating)
  233. // }
  234. // var data = [];
  235. // for (var i in json.data) {
  236. // that.alldata.push(json.data[i])
  237. // if (count == 0) { //取出第一个时间
  238. // that.fisttime = new Date(i).getTime()
  239. // }
  240. // data.push(json.data[i])
  241. // count++
  242. // }
  243. // // for (var i = 0; i < data.length; i++) { //每隔15s取一次数据
  244. // // if (i % 15 == 0) {
  245. // // that.Irdata.push(data[i].lr)
  246. // // that.Icdata.push(data[i].lc)
  247. // // that.audienceRating.push(data[i].audienceRating)
  248. // // }
  249. // // }
  250. // var datainit = canvas.dealdata(that.Icdata, that.Irdata, that.audienceRating) //第一页的流入流出和收视率
  251. // canvas.draw(datainit[0][1], datainit[1][1], datainit[2][1], that.fisttime); //第一次画;
  252. // },
  253. // });
  254. }
  255. }
  256. var header = {
  257. calendarbtn: function() {
  258. $('body').on('click', function(e) {
  259. $('#calendarboxes').hide();
  260. })
  261. $('#calendarbtn').on('click', function(e) {
  262. $('#calendarboxes').toggle();
  263. e.stopPropagation();
  264. })
  265. }
  266. }
  267. var canvas = {
  268. startpercen: 0,
  269. endpercen: 5,
  270. startTime: null,
  271. endTime: null,
  272. interval: 13,
  273. //转换成秒 00:00:00-> 0s
  274. tosecond: function(time) {
  275. var arr = time.split(':');
  276. var time = parseInt(arr[0] * 60 * 60) + parseInt(arr[1] * 60) + parseInt(arr[2]);
  277. return time
  278. },
  279. // 横线移动
  280. linemove: function(nowdate) { //传入的当前播放时间 秒(s)
  281. if (1.308 * (nowdate / 3) >= 43) {
  282. $('#Popup').animate({
  283. 'margin-left': '-100px'
  284. })
  285. $('#Popup2').animate({
  286. 'margin-left': '-215px'
  287. })
  288. } else {
  289. $('#Popup').animate({
  290. 'margin-left': '3px'
  291. })
  292. $('#Popup2').animate({
  293. 'margin-left': '98px'
  294. })
  295. }
  296. $("#line").css({
  297. "left": "" + 1.308 * (nowdate / 3) + "%" //比例乘以步长
  298. });
  299. },
  300. //处理数据
  301. dealdata: function(line1, line2, line3) {
  302. var times = Math.ceil(line1.length / this.interval); //次数
  303. var line1obj = {}
  304. var line2obj = {}
  305. var line3obj = {}
  306. var start = 0;
  307. for (var i = 1; i <= times; i++) {
  308. line1obj[i] = (line1.slice(start, this.interval * i))
  309. line2obj[i] = (line2.slice(start, this.interval * i))
  310. line3obj[i] = (line3.slice(start, this.interval * i))
  311. start = this.interval * i
  312. }
  313. return obj = [line1obj, line2obj, line3obj] //返回数组对象
  314. },
  315. // X轴的值
  316. Xdata: function(time) {
  317. var arr = [];
  318. for (var i = 0; i < this.interval; i++) {
  319. var endtime = this.timeformate(time + 15000 * i)
  320. arr.push(endtime)
  321. }
  322. return arr
  323. },
  324. //小时以下转换成时间戳
  325. hoursformate: function(s) { //传入时间格式为'9:51:43'
  326. var arr = (s.split(':'))
  327. var timechou = arr[0] * 60 * 60 * 1000 + arr[1] * 60 * 1000 + arr[2] * 1000;
  328. return timechou
  329. },
  330. //传入时间戳格式化(包含年月日的)
  331. timeformate: function(times) {
  332. var time = new Date(times)
  333. hours = (time.getHours() < 10) ? '0' + time.getHours() : time.getHours();
  334. minutes = (time.getMinutes() < 10) ? '0' + time.getMinutes() : time.getMinutes();
  335. seconds = (time.getSeconds() < 10) ? '0' + time.getSeconds() : time.getSeconds();
  336. date = hours + ':' + minutes + ':' + seconds;
  337. // console.log(date)
  338. return date;
  339. },
  340. //画图
  341. draw: function(line1, line2, line3, time) { //流出/流入/收视率
  342. var myChart = echarts.init(document.getElementById('main'));
  343. var itemStyle = {
  344. normal: {},
  345. emphasis: {
  346. barBorderWidth: 0.1,
  347. shadowBlur: 10,
  348. shadowOffsetX: 0,
  349. shadowOffsetY: 0,
  350. shadowColor: 'rgba(0,0,0,0.5)'
  351. }
  352. };
  353. option = {
  354. dataZoom: [{
  355. show: true,
  356. realtime: true,
  357. start: canvas.startpercen,
  358. end: canvas.endpercen,
  359. zoomOnMouseWheel: false,
  360. }],
  361. legend: {
  362. data: ['流入', '流出', '收视率%'],
  363. left: 'center',
  364. textStyle: {
  365. color: '#000000',
  366. fontSize: 12,
  367. },
  368. },
  369. xAxis: {
  370. data: [],
  371. // data: ajax.timeAll,
  372. position: "top",
  373. silent: false,
  374. axisLine: {
  375. onZero: true
  376. },
  377. splitLine: {
  378. show: false
  379. },
  380. splitArea: {
  381. show: false
  382. },
  383. axisTick: {
  384. show: false
  385. }
  386. },
  387. yAxis: [{
  388. inverse: true,
  389. name: '流入流出',
  390. splitArea: {
  391. show: false
  392. },
  393. splitLine: {
  394. show: false
  395. }
  396. }, {
  397. type: 'value',
  398. name: '收视率%',
  399. splitLine: {
  400. show: false
  401. }
  402. }],
  403. grid: {
  404. left: 100
  405. },
  406. series: [{
  407. name: '流入',
  408. type: 'bar',
  409. stack: 'one',
  410. data: [],
  411. // data: ajax.Irdata,
  412. }, {
  413. name: '流出',
  414. type: 'bar',
  415. stack: 'one',
  416. data: [],
  417. // data: ajax.Icdata,
  418. }, {
  419. name: '收视率%',
  420. type: 'line',
  421. yAxisIndex: 1,
  422. hoverAnimation: false,
  423. data: [],
  424. // data: ajax.audienceRating
  425. }]
  426. };
  427. myChart.setOption(option);
  428. window.onresize = myChart.resize;
  429. var xAxis = myChart.getModel().option.xAxis[0];
  430. var startTime = xAxis.data[xAxis.rangeStart];
  431. var endTime = xAxis.data[xAxis.rangeEnd];
  432. var a = canvas.tosecond(startTime)
  433. var b = canvas.tosecond(endTime)
  434. setInterval(function() {
  435. a++
  436. console.log(a)
  437. // xAxis.data[xAxis.rangeStart] =
  438. }, 1000)
  439. canvas.startTime = startTime;
  440. canvas.endTime = endTime;
  441. console.log(canvas.tosecond(canvas.endTime) - canvas.tosecond(canvas.endTime))
  442. myChart.on('datazoom', function(params) {
  443. canvas.startpercen = params.start;
  444. canvas.endpercen = params.end;
  445. var arr = startTime.split(':');
  446. var time = parseInt(arr[0] * 60 * 60) + parseInt(arr[1] * 60) + parseInt(arr[2]);
  447. // curr(time)
  448. });
  449. }
  450. }