123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519 |
- class Queue {
- constructor() {
- this.count = 0;
- this.lowestCount = 0;
- this.items = {};
- }
- enqueue(ele) {
- this.items[this.count] = ele;
- this.count++;
- }
- dequeue() {
- if (this.isEmpty()) {
- return undefined;
- }
- const result = this.items[this.lowestCount];
- delete this.items[this.lowestCount];
- this.lowestCount++;
- return result;
- }
- peek() {
- if (this.isEmpty()) {
- return undefined;
- }
- return this.items[this.lowestCount];
- }
- isEmpty() {
- return this.count - this.lowestCount === 0;
- }
- size() {
- return this.count - this.lowestCount;
- }
- clear() {
- this.count = 0;
- this.lowestCount = 0;
- this.items = {};
- }
- toString() {
- if (this.isEmpty()) {
- return "";
- }
- let objString = `${this.items[this.lowestCount]}`;
- for (let i = this.lowestCount + 1; i < this.count; i++) {
- objString = `${objString}, ${this.items[i]}`;
- }
- return objString;
- }
- }
- Date.prototype.Format = function (fmt) { // author: meizz
- var o = {
- "M+": this.getMonth() + 1, // 月份
- "d+": this.getDate(), // 日
- "h+": this.getHours(), // 小时
- "m+": this.getMinutes(), // 分
- "s+": this.getSeconds(), // 秒
- "q+": Math.floor((this.getMonth() + 3) / 3), // 季度
- "S": this.getMilliseconds() // 毫秒
- };
- if (/(y+)/.test(fmt))
- fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
- 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;
- }
- const sleep = (time) => new Promise(resolve => setTimeout(resolve, time));
- var refreshGirdData; // 更新数据
- var selectedRow;
- var rangeoninput;
- var israngedrag = false;
- var clearPlayIntervalStart;
- var clearGetDataInterval;
- var clearGetDequeueDataInterval;
- var PlayStartframe;
- var time1;
- var time2;
- var Play = 1;
- var StartFrame;
- var StartFrameTicks;
- var Frame;
- var FrameTicks;
- var Starting = false;
- var Reading = false;
- var replayFlag = false;
- var Index = 0;
- var lastvalue = 0;
- var changed = false;
- var SliderTime;
- var SliderTimeTickts;
- var DataPack = {};
- const Datas = new Queue();
- var PlayIntervalStartEnd = false;
- var GetLastDatasEnd = false;
- var GetDataEnd = false;
- var FaultInfosTime;
- var bootstrap = function ($, learun) {
- "use strict";
- var page = {
- init: function () {
- //page.GetDeviceData();
- page.bind();
- page.Start();
- page.PlayRealTime();
- page.OnGui();
- page.SetFaultInfos();
- page.GetWarehouseData();
- },
- bind: function () {
- //var srmlist = $("[wcssrm = 'wcssrm']");
- // 新增 $('#lr_add')
- $(".left [srm]").on('click', function () {
- let name = $(this).attr('srm');
- learun.layerForm({
- id: 'form',
- btn: null,//['关闭'],
- title: '堆垛机',
- url: top.$.rootUrl + '/DeviceMonitorManager/PTDeviceMonitor/DDJDetail?keyValue=' + name,
- width: 860,
- height: 745,
- callBack: function (id) {
- // return top[id].acceptClick(refreshGirdData);
- }
- });
- });
- //$(".left .station").on('click', function () {
- // let name = $(this).find('span').text();
- // learun.layerForm({
- // id: 'form',
- // btn: null,//['关闭'],
- // title: 'DB详情',
- // url: top.$.rootUrl + '/DeviceMonitorManager/PTDeviceMonitor/StationDetail?keyValue=' + name,
- // width: 960,
- // height: 745,
- // callBack: function (id) {
- // // return top[id].acceptClick(refreshGirdData);
- // }
- // });
- //});
- $("#PlayerPlay").on('click', function () {
- Play = Play == 1 ? 0 : 1;
- if (Play == 1)
- $("#imgPlayerPlay").attr("src", "/Content/images/DeviceMonitor/PlayerPlay.png");
- else {
- $("#imgPlayerPlay").attr("src", "/Content/images/DeviceMonitor/PlayerPause.png");
- }
- });
- $("#PlayerRealTime").on('click', function () {
- page.PlayRealTime();
- });
- $('#slider').on('input propertychange', function () {
- changed = true;
- })
- $("#slider").on('change', function () {
- // alert(this.value);
- israngedrag = false;
- changed = true;
- SliderTimeTickts = this.value.replace('Date', '').replace('(', '').replace(')', '').replace(/\//g, '');
- page.PlayBack();
- //learun.httpAsyncGet(top.$.rootUrl + '/DeviceMonitorManager/PTDeviceMonitor/GetDatetime?timestamp=' + timeSpan, function (data) {
- // if (data.IsSucc) {
- // alert(data.data);
- // }
- // else {
- // let msg = data.info;
- // }
- // var sd = Datas.dequeue();
- //});
- //var ticks = Math.floor(timeSpan / 10000) - 62135596800000; // 将时间戳转换为Ticks
- //var date = new Date(ticks);//.toLocaleString('zh-CN'); // 将Ticks转换为DateTime格式
- //date.setHours(date.getHours() - 8);
- ////alert(date.Format("yyyy-MM-dd hh:mm:ss"))
- });
- setInterval(page.GetWarehouseData, 10000);
- //setInterval(page.SetFaultInfos, 4000);
- setTimeout(() => {
- let oneBottomLeft = document.getElementById('equipmentStatus');
- let mt_value = 0;
- let speed = 100;
- let height = oneBottomLeft.clientHeight;
- if (height > 285) {
- function settimer1() {
- if (mt_value >= height) {
- mt_value = 0;
- page.SetFaultInfos();
- } else {
- mt_value = mt_value + 1;
- }
- oneBottomLeft.style.marginTop = '-' + mt_value + 'px';
- }
- time1 = setInterval(settimer1, speed);
- }
- // setInterval(timer2,speed)
- }, 5000);
- },
- //加载
- GetDeviceData: function () {
-
- learun.httpAsyncPost(top.$.rootUrl + '/DeviceMonitorManager/PTDeviceMonitor/GetData', {}, function (data) {
- if (data.IsSucc) {
- Datas.enqueue(data.data);
- learun.SetDeviceMonitor.SetDeviceData(data.data);
- }
- else {
- //let msg = data.info;
- }
- //var sd = Datas.dequeue();
- });
- //return deferred.promise();
- },
- search: function (param) {
- },
- PlayRealTime: function () {
- Play = 1;
- Starting = true;
- Reading = false;
- page.GetLastDatas();// PlayStart(LastFrameTicks);
- },
- PlayBack: function () {
- Starting = false;
- Reading = false;
- page.PlayStart(SliderTimeTickts);
- },
- GetLastDatas: function () {
- DataPack = {};
- if (!GetLastDatasEnd) {
- GetLastDatasEnd = true;
- sleep(10).then(() => {
- if (PlayStartframe < StartFrameTicks)
- PlayStartframe = StartFrameTicks;
- else if (PlayStartframe > LastFrameTicks)
- PlayStartframe = LastFrameTicks;
- // lock(Datas)
- Datas.clear();
- replayFlag = Play == 1;
- //Index = 0;
- learun.httpAsyncGet(top.$.rootUrl + '/DeviceMonitorManager/PTDeviceMonitor/GetLastDatas', function (data) {
- if (data.IsSucc) {
- DataPack = data.data;
- learun.SetDeviceMonitor.SetDeviceData(data.data);
- Index = data.data.Index;
- Frame = data.data.Frame;
- FrameTicks = data.data.FrameTicks;
- //SRMStations
- //WCSAGVs
- //WCSSRMs
- //WCSStations
- GetLastDatasEnd = false;
- Starting = false;
- //clearGetDataInterval = setInterval(page.GetData, 500);
- console.log("PlayIntervalStart : " + Starting);
- }
- else {
- }
- });
- })
- }
- },
- PlayStart: function (frame) {
- DataPack = {};
- PlayStartframe = frame;
- //console.log("PlayStart : " + Reading);
- // !Reading 等待
- //if (!Reading) {
- // if (clearPlayIntervalStart)
- // clearInterval(clearPlayIntervalStart);
- // sleep(5000);
- //}
- //else {
- // page.PlayIntervalStart();
- // //clearPlayIntervalStart= setInterval(page.PlayIntervalStart,2000)
- //}
- if (!Reading) {
- //console.log("PlayIntervalStart : " + Reading );
- page.PlayIntervalStart();
- }
- },
- PlayIntervalStart: function () {
- if (!PlayIntervalStartEnd) {
- PlayIntervalStartEnd = true;
- sleep(10).then(() => {
- if (PlayStartframe < StartFrameTicks)
- PlayStartframe = StartFrameTicks;
- else if (PlayStartframe > LastFrameTicks)
- PlayStartframe = LastFrameTicks;
- // lock(Datas)
- Datas.clear();
- replayFlag = Play == 1;
- //Index = 0;
- learun.httpAsyncGet(top.$.rootUrl + '/DeviceMonitorManager/PTDeviceMonitor/GetStartDatas?timestamp=' + PlayStartframe + '&len=' + Len, function (data) {
- if (data.IsSucc) {
- DataPack = data.data;
- learun.SetDeviceMonitor.SetDeviceData(data.data);
- Index = data.data.Index;
- Frame = data.data.Frame;
- FrameTicks = data.data.FrameTicks;
- //SRMStations
- //WCSAGVs
- //WCSSRMs
- //WCSStations
- PlayIntervalStartEnd = false;
- Starting = false;
- //clearGetDataInterval = setInterval(page.GetData, 500);
- console.log("PlayIntervalStart : " + Starting);
- }
- else {
- }
- });
- })
- }
- },
- Start: function () {
- clearGetDataInterval = setInterval(page.GetData, 500);
- clearGetDequeueDataInterval = setInterval(page.GetDequeueData, 300);
- },
- GetDequeueData: function () {
- if (Play == 0) {
- return;
- }
- if (Datas.size() == 0) {
- return
- }
- else {
- var pack = Datas.dequeue();
- DataPack = pack;
- Frame = pack.Frame;
- FrameTicks = pack.FrameTicks;
- }
- },
- GetData: function () {
- if (!GetDataEnd) {
- console.log("GetData GetData : " + Starting);
- if (Starting) {
- Reading = false;
- // clearInterval(clearGetDataInterval);
- return;
- }
- else {
- Reading = true;
- if (Index <= 0) {
- return;
- }
- var qty = 0;
- qty = Datas.size();
- if (qty < 600 * Play + 1) {
- learun.httpAsyncGet(top.$.rootUrl + '/DeviceMonitorManager/PTDeviceMonitor/GetLastFrame', function (data) {
- GetDataEnd = true;
- if (data.IsSucc) {
- var Length = parseInt(data.data.Len);
- LastFrameTicks = data.data.FrameTicks;
- LastFrame = data.data.Frame;
- if (parseInt(Index) >= parseInt(Length))
- Index = Length - 1;
- var end = parseInt(Index) + 30;
- end = end < parseInt(Length) ? end : Length - 1;
- end = parseInt(end) > 0 ? end : 0;
- console.log("GetRangeData: " + Index + " end: " + end);
- learun.httpAsyncGet(top.$.rootUrl + '/DeviceMonitorManager/PTDeviceMonitor/GetRangeData?start=' + Index + '&end=' + end, function (data) {
- if (data.IsSucc) {
- for (var i = 0; i < parseInt(data.data.length); i++) {
- Datas.enqueue(data.data[i]);
- }
- Index = parseInt(Index) + parseInt(data.data.length);
- // console.log("Datas: "+ Datas.size() + " index: " + Index);
- }
- else {
- }
- GetDataEnd = false;
- });
- }
- else {
- }
- });
- }
- }
- }
- },
- OnGui: function () {
- // PlayButton.image.sprite = Play == 1 ? sPlay : sPause;
- //Slider.minValue = DataSystem.StartFrame.Ticks - MinTime.Ticks;
- //Slider.maxValue = DataSystem.LastFrame.Ticks - MinTime.Ticks;
- //SliderTime = DateTime.FromBinary((long)Slider.value + MinTime.Ticks);
- setInterval(page.SetOnGui, 300)
- },
- SetOnGui: function () {
- if (israngedrag)
- return;
- $('#slider').attr('min', StartFrameTicks);
- $('#slider').attr('max', LastFrameTicks);
- var timeSpan = $('#slider').val().replace('Date', '').replace('(', '').replace(')', '').replace(/\//g, '');
- SliderTimeTickts = timeSpan;
- var ticks = Math.floor(timeSpan / 10000) - 62135596800000; // 将时间戳转换为Ticks
- var date = new Date(ticks); // 将Ticks转换为DateTime格式
- date.setHours(date.getHours() - 8);
- $('#Frame').text(date.Format("yyyy-MM-dd hh:mm:ss"));
- learun.SetDeviceMonitor.SetDeviceData(DataPack);
- if (lastvalue != timeSpan && changed) {
- FrameTicks = timeSpan;
- Frame = date;
- changed = false;
- lastvalue = timeSpan;
- page.PlayBack();
- }
- else {
- $('#slider').val(FrameTicks);
- $('#Frame').text(Frame);
- }
- },
- GetWarehouseData: function () {
- learun.httpAsyncGet(top.$.rootUrl + '/DeviceMonitorManager/PTDeviceMonitor/GetWarehouseLocationInfo', function (data) {
- if (data.IsSucc) {
- $("#emptywarecellnum").text(data.data.EmptySpaces)
- $("#agvtasknum").text(data.data.TotalAGVs);
- $("#tasknum").text(data.data.TotalTasks);
- }
- });
- },
- SetFaultInfos: function () {
- if (DataPack != null && DataPack.FaultInfos && DataPack.FaultInfos.length > 0) {
- var equipmentStatus = $("#equipmentStatus");
- var htmls = '';
- for (var i = 0; i < DataPack.FaultInfos.length; i++) {
- htmls += ' <div class="InfoItem"> <span class="titleS">故障</span> '
- htmls += '<div class="InfoBlock"> <span>区域:</span> <label>合金库</label> </div> ';
- htmls += '<div class="InfoBlock"> <span>交互点:</span> <label>' + DataPack.FaultInfos[i].DeviceCode + '</label> </div> ';
- htmls += '<div class="InfoBlock"> <span>故障原因:</span> <label>' + DataPack.FaultInfos[i].FaultInfos + '</label> </div> </div>';
- }
- equipmentStatus.empty();
- equipmentStatus.html(htmls);
- }
- },
- SetFaultMove: function () {
- setTimeout(() => {
- let oneBottomLeft = document.getElementById('equipmentStatus');
- let mt_value = 0;
- let speed = 100;
- let height = oneBottomLeft.clientHeight;
- if (height > 285) {
- clearInterval(FaultInfosTime);
- function settimer1() {
- if (mt_value >= height) {
- mt_value = 0;
- page.SetFaultInfos();
- //alert('获取新的数据');
- } else {
- mt_value = mt_value + 1;
- }
- oneBottomLeft.style.marginTop = '-' + mt_value + 'px';
- }
- time1 = setInterval(settimer1, speed);
- }
- else {
- FaultInfosTime = setInterval(page.SetFaultInfos, 500);
- }
- // setInterval(timer2,speed)
- }, 300);
- },
- };
- // 保存数据后回调刷新
- refreshGirdData = function () {
- page.search();
- }
- page.init();
- rangeoninput = function () {
- israngedrag = true;
- changed = true;
- console.log(Play);
- }
- //获取promise
- // var deferred = page.GetDeviceData();
- //setInterval(page.GetDeviceData,1000);
- }
|