Save last
This commit is contained in:
		@@ -191,7 +191,7 @@
 | 
			
		||||
                markerType: "none",
 | 
			
		||||
                name: d[i].sn == undefined ? "" : d[i].sn,
 | 
			
		||||
                suffix: d[i].s,
 | 
			
		||||
                axisYIndex: 0,
 | 
			
		||||
                axisYIndex: -1,
 | 
			
		||||
            }
 | 
			
		||||
            this._data.push(data);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,272 +1,121 @@
 | 
			
		||||
class Pasport {
 | 
			
		||||
    constructor() {
 | 
			
		||||
        //html Elements
 | 
			
		||||
        this._ajax;
 | 
			
		||||
        this._pasp_lable = $('#Pasport_Lable');
 | 
			
		||||
        this._pasp_date = $('#Pasport_Date');
 | 
			
		||||
        this._pasp_info = $('#Pasport_Info');
 | 
			
		||||
        this._pasp_button = $('#Pasport_button_LoadAll');
 | 
			
		||||
var pasport_lable = $('#pasport_label');
 | 
			
		||||
var pasport_date = $('#pasport_date');
 | 
			
		||||
var pasport_info = $('#pasport_info');
 | 
			
		||||
var pasport_data = null;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        //private Elements
 | 
			
		||||
        this._server_dir = "";
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        //public Elements
 | 
			
		||||
        this.have_date = false;
 | 
			
		||||
        this.have_pasport = false;
 | 
			
		||||
        this.time_start = "";
 | 
			
		||||
        this.time_end = "";
 | 
			
		||||
        this.num_vdp = -1;
 | 
			
		||||
        this.num_plav = "";
 | 
			
		||||
        this.splav = "";
 | 
			
		||||
        this.is = "";
 | 
			
		||||
        this.pereplav = -1;
 | 
			
		||||
        this.naznachenie = "";
 | 
			
		||||
        this.kategory = "";
 | 
			
		||||
        this.zakaz = "";
 | 
			
		||||
        this.ves_slit = -1;
 | 
			
		||||
        this.kompl =  -1;
 | 
			
		||||
        this.diam_krist = -1;
 | 
			
		||||
        this.diam_electr = -1;
 | 
			
		||||
        this.num_kontract = "";
 | 
			
		||||
        this.ukazanie = "";
 | 
			
		||||
        this.kod_npl = "";
 | 
			
		||||
        this.rm = "";
 | 
			
		||||
        this.notd = -1;
 | 
			
		||||
        this.tin = "";
 | 
			
		||||
        this.dzap = "";
 | 
			
		||||
        this.dlog = -1;
 | 
			
		||||
        this.last = -1;
 | 
			
		||||
        this.dlper = -1;
 | 
			
		||||
        this.izl = -1;
 | 
			
		||||
        this.robm = -1;
 | 
			
		||||
        this.rizol = 6;
 | 
			
		||||
        this.pos = -1;
 | 
			
		||||
        this.pril = 1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Download(dir) {
 | 
			
		||||
        if (dir == this._server_dir)
 | 
			
		||||
            return;
 | 
			
		||||
        var self = this;
 | 
			
		||||
        this._server_dir = dir;
 | 
			
		||||
        this.num_vdp = this._ParseDirToNumVDP(dir);
 | 
			
		||||
 | 
			
		||||
        $.ajax({
 | 
			
		||||
            type: "POST",
 | 
			
		||||
            url: 'http://' + document.URL.split("/")[2] + '/api/pasport',
 | 
			
		||||
            contentType: "application/json; charset=utf-8",
 | 
			
		||||
            dataType: "json",
 | 
			
		||||
 | 
			
		||||
            data: JSON.stringify({ "pasport": this._server_dir }),
 | 
			
		||||
 | 
			
		||||
            beforeSend: function (jqXHR, settings) {
 | 
			
		||||
                self._pasp_button.attr('hidden', true);
 | 
			
		||||
            },
 | 
			
		||||
            success: function (date) {
 | 
			
		||||
                self.have_date = date.have_date;
 | 
			
		||||
                self.have_pasport = date.have_pasport;
 | 
			
		||||
                self.time_start = date.time_start;
 | 
			
		||||
                self.time_end = date.time_end;
 | 
			
		||||
                if (!self.have_pasport)
 | 
			
		||||
                    return;
 | 
			
		||||
                self.num_plav = date.num_plav;
 | 
			
		||||
                self.splav = date.splav;
 | 
			
		||||
                self.is = date.is;
 | 
			
		||||
                self.pereplav = date.pereplav;
 | 
			
		||||
                self.naznachenie = date.naznachenie;
 | 
			
		||||
                self.kategory = date.kategory;
 | 
			
		||||
                self.zakaz = date.zakaz;
 | 
			
		||||
                self.ves_slit = date.ves_slit;
 | 
			
		||||
                self.kompl = date.kompl;
 | 
			
		||||
                self.diam_krist = date.diam_krist;
 | 
			
		||||
                self.diam_electr = date.diam_electr;
 | 
			
		||||
                self.num_kontract = date.num_kontract;
 | 
			
		||||
                self.ukazanie = date.ukazanie;
 | 
			
		||||
                self.kod_npl = date.kod_npl;
 | 
			
		||||
                self.rm = date.rm;
 | 
			
		||||
                self.notd = date.notd;
 | 
			
		||||
                self.tin = date.tin;
 | 
			
		||||
                self.dzap = date.dzap;
 | 
			
		||||
                self.dlog = date.dlog;
 | 
			
		||||
                self.last = date.last;
 | 
			
		||||
                self.dlper = date.dlper;
 | 
			
		||||
                self.izl = date.izl;
 | 
			
		||||
                self.robm = date.robm;
 | 
			
		||||
                self.rizol = date.rizol;
 | 
			
		||||
                self.pos = date.pos;
 | 
			
		||||
                self.pril = date.pril;
 | 
			
		||||
                self.Show();
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    _ParseDirToNumVDP(dir) {
 | 
			
		||||
        var t = dir.split('.');
 | 
			
		||||
        if (t[t.length - 1] != "gz")
 | 
			
		||||
            return parseInt(t[t.length - 1]);
 | 
			
		||||
        t = t[0].split('-');
 | 
			
		||||
        if (t.length == 2)
 | 
			
		||||
            return parseInt(t[t.length - 1]);
 | 
			
		||||
        if (t.length == 4)
 | 
			
		||||
            return parseInt(t[2]);
 | 
			
		||||
        return -1;
 | 
			
		||||
    }
 | 
			
		||||
      
 | 
			
		||||
    Show() {
 | 
			
		||||
        this._pasp_lable.removeAttr('hidden');
 | 
			
		||||
        if (this.have_date == undefined || !this.have_date) {
 | 
			
		||||
            this._pasp_lable.find('h5').html('Ошибка получения паспорта');
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        if (this.have_pasport == undefined || !this.have_pasport)
 | 
			
		||||
            this._pasp_lable.find('h5').html('Паспорта нет');
 | 
			
		||||
        else
 | 
			
		||||
            this._pasp_lable.find('h5').html('Плавка №' + this.num_plav);
 | 
			
		||||
 | 
			
		||||
        this._pasp_date.removeAttr('hidden');
 | 
			
		||||
        this._pasp_date.find('span').eq(0).html(this.time_start);
 | 
			
		||||
        this._pasp_date.find('span').eq(1).html(this.time_end);
 | 
			
		||||
 | 
			
		||||
        this._pasp_button.removeAttr('hidden');
 | 
			
		||||
        if (this.have_pasport == undefined || !this.have_pasport)
 | 
			
		||||
            return;
 | 
			
		||||
 | 
			
		||||
        this._pasp_info.removeAttr('hidden');
 | 
			
		||||
        var temp = this._pasp_info.find('span');
 | 
			
		||||
        temp.empty();
 | 
			
		||||
        if (this.is != '-')
 | 
			
		||||
            temp.eq(0).html(this.splav + ' ' + this.is);
 | 
			
		||||
        else
 | 
			
		||||
            temp.eq(0).html(this.splav);
 | 
			
		||||
        temp.eq(1).html(this.pereplav);
 | 
			
		||||
        temp.eq(2).html(this.naznachenie);
 | 
			
		||||
        temp.eq(3).html(this.kategory);
 | 
			
		||||
        temp.eq(4).html(this.zakaz);
 | 
			
		||||
        temp.eq(5).html(this.ves_slit);
 | 
			
		||||
        temp.eq(6).html(this.kompl);
 | 
			
		||||
        temp.eq(7).html(this.diam_krist);
 | 
			
		||||
        temp.eq(8).html(this.diam_electr);
 | 
			
		||||
        temp.eq(9).html(this.num_kontract);
 | 
			
		||||
        temp.eq(10).html(this.ukazanie);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Clear() {
 | 
			
		||||
        this._pasp_lable.find('h5').empty();
 | 
			
		||||
        this._pasp_lable.attr('hidden', true);
 | 
			
		||||
 | 
			
		||||
        this._pasp_date.find('span').empty();
 | 
			
		||||
        this._pasp_date.attr('hidden', true);
 | 
			
		||||
 | 
			
		||||
        this._pasp_info.find('span').empty();
 | 
			
		||||
        this._pasp_info.attr('hidden', true);
 | 
			
		||||
 | 
			
		||||
        this._pasp_button.attr('hidden', true);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class TechCycle {
 | 
			
		||||
    constructor() {
 | 
			
		||||
        this._sort = false;
 | 
			
		||||
        this._modal_load = $('#Modal_load');
 | 
			
		||||
        this._tech_lable = $('#Tech_Cycle_Lable');
 | 
			
		||||
        this._tech_table = $('#Tech_Cycle_Table');
 | 
			
		||||
        this._tech_sort = $('#Tech_Cycle_Sort');
 | 
			
		||||
        this._info_arr = [];
 | 
			
		||||
 | 
			
		||||
        var self = this;
 | 
			
		||||
        this._tech_sort.click(function () {
 | 
			
		||||
            if (self._sort == undefined)
 | 
			
		||||
                self._sort == true;
 | 
			
		||||
            self._sort = !self._sort;
 | 
			
		||||
            self._tech_table.find('tbody').empty();
 | 
			
		||||
            self.Show();
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
    Download(pasp) {
 | 
			
		||||
        var self = this;
 | 
			
		||||
        this._info_arr = [];
 | 
			
		||||
        this.Clear();
 | 
			
		||||
        $.ajax({
 | 
			
		||||
            type: "POST",
 | 
			
		||||
            url: 'http://' + document.URL.split("/")[2] + '/api/techcycle',
 | 
			
		||||
            contentType: "application/json; charset=utf-8",
 | 
			
		||||
            dataType: "json",
 | 
			
		||||
 | 
			
		||||
            data: JSON.stringify({
 | 
			
		||||
                "vdp": pasp.num_vdp,
 | 
			
		||||
                "timeStart": pasp.time_start,
 | 
			
		||||
                "timeEnd": pasp.time_end
 | 
			
		||||
            }),
 | 
			
		||||
            success: function (date) {
 | 
			
		||||
                if (date == undefined || date.length == 0)
 | 
			
		||||
                    return;
 | 
			
		||||
                self._info_arr = date;
 | 
			
		||||
                self.Show();
 | 
			
		||||
            }
 | 
			
		||||
            //complete: function () { }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    DownloadFormTime(vdp, tStart, tEnd) {
 | 
			
		||||
        var self = this;
 | 
			
		||||
        this._modal_load.modal('show');
 | 
			
		||||
        this._info_arr = [];
 | 
			
		||||
        this.Clear();
 | 
			
		||||
        $.ajax({
 | 
			
		||||
            type: "POST",
 | 
			
		||||
            url: 'http://' + document.URL.split("/")[2] + '/api/techcycle',
 | 
			
		||||
            contentType: "application/json; charset=utf-8",
 | 
			
		||||
            dataType: "json",
 | 
			
		||||
 | 
			
		||||
            data: JSON.stringify({
 | 
			
		||||
                "vdp": vdp,
 | 
			
		||||
                "timeStart": tStart,
 | 
			
		||||
                "timeEnd": tEnd
 | 
			
		||||
            }),
 | 
			
		||||
            success: function (date) {
 | 
			
		||||
                if (date == undefined || date.length == 0)
 | 
			
		||||
                    return;
 | 
			
		||||
                self._info_arr = date;
 | 
			
		||||
                self.Show();
 | 
			
		||||
            }
 | 
			
		||||
            //complete: function () { }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Show() {
 | 
			
		||||
        if (this._info_arr == undefined || this._info_arr.length == 0)
 | 
			
		||||
            return;
 | 
			
		||||
 | 
			
		||||
        this._tech_sort.removeClass('fa-sort-amount-down fa-sort-amount-up');
 | 
			
		||||
        this._tech_sort.addClass(this._sort ? 'fa-sort-amount-up' : 'fa-sort-amount-down');
 | 
			
		||||
 | 
			
		||||
        for (var i = 0; i < this._info_arr.length; i++) {
 | 
			
		||||
            var j = this._sort ? this._info_arr.length - 1 - i : i;
 | 
			
		||||
            this._tech_table.find('tbody').append(
 | 
			
		||||
                '<tr style="background-color : rgba(' + this._info_arr[j].color + ', 0.15);">' +
 | 
			
		||||
                '<td>' + (j + 1) +
 | 
			
		||||
                '</td>' +
 | 
			
		||||
                '<td>' + this._info_arr[j].date +
 | 
			
		||||
                '</td>' +
 | 
			
		||||
                '<td>' + this._info_arr[j].value +
 | 
			
		||||
                '</td>' +
 | 
			
		||||
                '</tr>');
 | 
			
		||||
        }
 | 
			
		||||
        this._tech_table.find('td').addClass('p-1');
 | 
			
		||||
        this._tech_lable.removeAttr('hidden');
 | 
			
		||||
        this._tech_table.removeAttr('hidden');
 | 
			
		||||
    }
 | 
			
		||||
    Clear() {
 | 
			
		||||
        this._tech_lable.attr('hidden', true);
 | 
			
		||||
 | 
			
		||||
        this._tech_table.find('tbody').empty();
 | 
			
		||||
        this._tech_table.attr('hidden', true);
 | 
			
		||||
    }
 | 
			
		||||
async function pasport_load(date, name) {
 | 
			
		||||
  try {
 | 
			
		||||
    var res = await $.ajax({
 | 
			
		||||
      type: "POST",
 | 
			
		||||
      url: 'https://vsmpo.mbucb.ru/api/pasport/getpasport',
 | 
			
		||||
      contentType: "application/json; charset=utf-8",
 | 
			
		||||
      dataType: "json",
 | 
			
		||||
      data: JSON.stringify({
 | 
			
		||||
        "date": date,
 | 
			
		||||
        "name": name
 | 
			
		||||
      })
 | 
			
		||||
    })
 | 
			
		||||
    pasport_data = res;
 | 
			
		||||
    pasport_data.search_date = date;
 | 
			
		||||
    pasport_data.search_name = name;
 | 
			
		||||
    return true;
 | 
			
		||||
  }
 | 
			
		||||
  catch (err) {
 | 
			
		||||
    pasport_data = null;
 | 
			
		||||
    alert("Ошибка загрузки паспорта:\n" +
 | 
			
		||||
      "\tДата: " + date + "\n" +
 | 
			
		||||
      "\tПаспорт: " + name);
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
function pasport_custom_set(vdp, dStart, dEnd) {
 | 
			
		||||
  pasport_data = {};
 | 
			
		||||
  pasport_data.numVDP = vdp;
 | 
			
		||||
  pasport_data.dStart = dStart;
 | 
			
		||||
  pasport_data.dEnd = dEnd;
 | 
			
		||||
}
 | 
			
		||||
function pasport_fill_label() {
 | 
			
		||||
  try {
 | 
			
		||||
    if (pasport_data == undefined ||
 | 
			
		||||
      pasport_data == null ||
 | 
			
		||||
      (
 | 
			
		||||
      !pasport_data.hasOwnProperty('nplav') &&
 | 
			
		||||
      !pasport_data.hasOwnProperty('numVDP')
 | 
			
		||||
      )
 | 
			
		||||
    )
 | 
			
		||||
      throw 'Ошибка';
 | 
			
		||||
    if (pasport_data.hasOwnProperty('nplav'))
 | 
			
		||||
      pasport_lable.find('h5').html('Паспорт №' + pasport_data.nplav);
 | 
			
		||||
    else
 | 
			
		||||
      pasport_lable.find('h5').html('Печь №' + pasport_data.numVDP);
 | 
			
		||||
    return true;
 | 
			
		||||
  }
 | 
			
		||||
  catch (err) {
 | 
			
		||||
    pasport_lable.find('h5').html('Ошибка получения паспорта');
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
function pasport_fill_date() {
 | 
			
		||||
  try {
 | 
			
		||||
    if (pasport_data == undefined ||
 | 
			
		||||
      pasport_data == null)
 | 
			
		||||
      throw "Ошибка";
 | 
			
		||||
    pasport_date.find('span').eq(0).html(pasport_data.numVDP);
 | 
			
		||||
    pasport_date.find('span').eq(1).html(pasport_data.dStart);
 | 
			
		||||
    pasport_date.find('span').eq(2).html(pasport_data.dEnd);
 | 
			
		||||
    return true;
 | 
			
		||||
  }
 | 
			
		||||
  catch {
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
function pasport_fill_info() {
 | 
			
		||||
  try {
 | 
			
		||||
    var temp = pasport_info.find('span');
 | 
			
		||||
    if (pasport_data.is != '-')
 | 
			
		||||
      temp.eq(0).html(pasport_data.splav + ' ' + pasport_data.is);
 | 
			
		||||
    else
 | 
			
		||||
      temp.eq(0).html(pasport_data.splav);
 | 
			
		||||
    temp.eq(1).html(pasport_data.prpl);
 | 
			
		||||
    temp.eq(2).html(pasport_data.nazn);
 | 
			
		||||
    temp.eq(3).html(pasport_data.kat);
 | 
			
		||||
    temp.eq(4).html(pasport_data.zakaz);
 | 
			
		||||
    temp.eq(5).html(pasport_data.vessl);
 | 
			
		||||
    temp.eq(6).html(pasport_data.kompl);
 | 
			
		||||
    temp.eq(7).html(pasport_data.dkr);
 | 
			
		||||
    temp.eq(8).html(pasport_data.diam);
 | 
			
		||||
    temp.eq(9).html(pasport_data.nkon);
 | 
			
		||||
    temp.eq(10).html(pasport_data.ukaz);
 | 
			
		||||
    return true;
 | 
			
		||||
  }
 | 
			
		||||
  catch {
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
function pasport_show_lable() {
 | 
			
		||||
  try {
 | 
			
		||||
    pasport_lable.removeAttr('hidden');
 | 
			
		||||
  } catch { }
 | 
			
		||||
}
 | 
			
		||||
function pasport_show_date() {
 | 
			
		||||
  try {
 | 
			
		||||
    pasport_date.removeAttr('hidden');
 | 
			
		||||
  } catch { }
 | 
			
		||||
}
 | 
			
		||||
function pasport_show_info() {
 | 
			
		||||
  try {
 | 
			
		||||
    pasport_info.removeAttr('hidden');
 | 
			
		||||
  } catch { }
 | 
			
		||||
}
 | 
			
		||||
function pasport_hide_all() {
 | 
			
		||||
  try {
 | 
			
		||||
    pasport_lable.attr('hidden', true);
 | 
			
		||||
  } catch { }
 | 
			
		||||
  try {
 | 
			
		||||
    pasport_date.attr('hidden', true);
 | 
			
		||||
  } catch { }
 | 
			
		||||
  try {
 | 
			
		||||
    pasport_info.attr('hidden', true);
 | 
			
		||||
  } catch { }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										322
									
								
								Site/js/analog.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										322
									
								
								Site/js/analog.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,322 @@
 | 
			
		||||
var analog_diag_body = $('#analog_diag_body');
 | 
			
		||||
var analog_diag = $('#analog_diag');
 | 
			
		||||
var filter_table = $('#filter_table');
 | 
			
		||||
var axis_table = $('#axis_table');
 | 
			
		||||
 | 
			
		||||
var aply_filter = $('#aply_filter');
 | 
			
		||||
var change_filter = $('#change_filter');
 | 
			
		||||
 | 
			
		||||
var aply_axis = $('#aply_axis');
 | 
			
		||||
 | 
			
		||||
var data_analog = null;
 | 
			
		||||
var data_analog_params = null;
 | 
			
		||||
var data_metrics = null;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function ValueDateFormatter(e) {
 | 
			
		||||
  var hours = 1000 * 60 * 60;
 | 
			
		||||
  if (e.trigger === "reset") {
 | 
			
		||||
    e.chart.options.axisX.valueFormatString = "MM.DD HH";
 | 
			
		||||
  }
 | 
			
		||||
  else if (e.trigger === "zoom") {
 | 
			
		||||
    //Hour (Comparing Hours)
 | 
			
		||||
    if ((((e.axisX[0].viewportMaximum - e.axisX[0].viewportMinimum) / (hours)) < 24)) {
 | 
			
		||||
      e.chart.options.axisX.valueFormatString = "HH:mm:ss";
 | 
			
		||||
    }
 | 
			
		||||
    //Day (Comparing Days)
 | 
			
		||||
    else if (((e.axisX.viewportMaximum - e.axisX.viewportMinimum) / (hours)) < 48) {
 | 
			
		||||
      e.chart.options.axisX.valueFormatString = "HH:mm";
 | 
			
		||||
    }
 | 
			
		||||
    //Year (Comparing Years)
 | 
			
		||||
    else if (((e.axisX[0].viewportMaximum - e.axisX[0].viewportMinimum) / (hours * 24)) < 2) {
 | 
			
		||||
      e.chart.options.axisX.valueFormatString = "MM.DD HH";
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
      e.chart.options.axisX.valueFormatString = "MM.DD";
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
var a_chart = new CanvasJS.Chart("analog_diag", {
 | 
			
		||||
  toolTip: {
 | 
			
		||||
    fontSize: 12,
 | 
			
		||||
    shared: true,
 | 
			
		||||
    contentFormatter: function (e) {
 | 
			
		||||
      var str = "";
 | 
			
		||||
      if (e.entries.length < 1)
 | 
			
		||||
        return str;
 | 
			
		||||
      var lastdate = e.entries[0].dataPoint.x;
 | 
			
		||||
      var data = e.chart._dataInRenderedOrder;
 | 
			
		||||
      for (var i = 0; i < data.length; i++) {
 | 
			
		||||
        var y = null;
 | 
			
		||||
 | 
			
		||||
        for (var j = 0; j < data[i].dataPoints.length; j++) {
 | 
			
		||||
          var t = data[i].dataPoints[j].x - lastdate;
 | 
			
		||||
          if (t <= 0)
 | 
			
		||||
            y = data[i].dataPoints[j].y;
 | 
			
		||||
          else
 | 
			
		||||
            break;
 | 
			
		||||
          t = data[i].dataPoints[(data[i].dataPoints.length - 1) - j].x - lastdate;
 | 
			
		||||
          if (t <= 0) {
 | 
			
		||||
            y = data[i].dataPoints[(data[i].dataPoints.length - 1) - j].y;
 | 
			
		||||
            break;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        var temp =
 | 
			
		||||
          data[i].name + ': <strong style="color:' +
 | 
			
		||||
          data[i].color + ';">' +
 | 
			
		||||
          y + ' </strong>' + data[i].axisY.suffix + "<br/>";
 | 
			
		||||
        str = str.concat(temp);
 | 
			
		||||
      }
 | 
			
		||||
      return (str);
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  animationEnabled: true,
 | 
			
		||||
  animationDuration: 1000,
 | 
			
		||||
  exportFileName: "Analog Signals",
 | 
			
		||||
  exportEnabled: true,
 | 
			
		||||
  zoomEnabled: true,
 | 
			
		||||
  theme: "light1",
 | 
			
		||||
  backgroundColor: "#FFFFFF",
 | 
			
		||||
  colorSet: "colorSet1",
 | 
			
		||||
  culture: "ru",
 | 
			
		||||
  title: {},
 | 
			
		||||
  legend: {},
 | 
			
		||||
 | 
			
		||||
  rangeChanging: ValueDateFormatter,
 | 
			
		||||
  axisX: {
 | 
			
		||||
    labelFontSize: 12,
 | 
			
		||||
    margin: 1,
 | 
			
		||||
    tickLength: 3,
 | 
			
		||||
    tickThickness: 1,
 | 
			
		||||
    lineThickness: 1,
 | 
			
		||||
    gridThickness: 0.3,
 | 
			
		||||
    valueFormatString: "MM.DD HH"
 | 
			
		||||
  },
 | 
			
		||||
  axisY: [],
 | 
			
		||||
  data: []
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
//Первая загрузка страницы
 | 
			
		||||
 | 
			
		||||
$(document).ready(
 | 
			
		||||
  async function () {
 | 
			
		||||
    show_load();
 | 
			
		||||
 | 
			
		||||
    var flag_pasport_load = await get_url_params();
 | 
			
		||||
    pasport_fill_label();
 | 
			
		||||
    pasport_show_lable();
 | 
			
		||||
    if (!flag_pasport_load) {
 | 
			
		||||
      hide_load();
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
    if (!pasport_fill_date()) {
 | 
			
		||||
      hide_load();
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
    show_menu();
 | 
			
		||||
    pasport_show_date();
 | 
			
		||||
 | 
			
		||||
    var ap = load_data_analog_params();
 | 
			
		||||
    var m = load_data_metrics();
 | 
			
		||||
    await Promise.all([ap]);
 | 
			
		||||
    var ad = load_data_analog();
 | 
			
		||||
    if (ap)
 | 
			
		||||
      fill_filter_analog();
 | 
			
		||||
    await Promise.all([ad, m]);
 | 
			
		||||
    if (ap) {
 | 
			
		||||
      if (ad) {
 | 
			
		||||
        fill_analog_char_data();
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    a_chart.render();
 | 
			
		||||
    hide_load();
 | 
			
		||||
  }
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
aply_filter.click(async function () {
 | 
			
		||||
  read_filter();
 | 
			
		||||
  await load_data_analog();
 | 
			
		||||
  fill_analog_char_data();
 | 
			
		||||
  a_chart.render();
 | 
			
		||||
});
 | 
			
		||||
var change_filter_flag = true;
 | 
			
		||||
change_filter.click(function () {
 | 
			
		||||
  change_filter.empty();
 | 
			
		||||
  if (change_filter_flag)
 | 
			
		||||
    change_filter.append("Установить все");
 | 
			
		||||
  else
 | 
			
		||||
    change_filter.append("Снять все");
 | 
			
		||||
  for (var i = 0; i < data_analog_params.length; i++) {
 | 
			
		||||
    var check_label = filter_table.find('#analog_filter_id_' + data_analog_params[i].index);
 | 
			
		||||
    if (change_filter_flag)
 | 
			
		||||
      check_label.removeAttr('checked');
 | 
			
		||||
    else
 | 
			
		||||
      check_label.attr('checked', true);
 | 
			
		||||
  }
 | 
			
		||||
  change_filter_flag = !change_filter_flag;
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
function fill_filter_analog() {
 | 
			
		||||
  filter_table.empty();
 | 
			
		||||
  if (data_analog_params == undefined ||
 | 
			
		||||
    data_analog_params == null)
 | 
			
		||||
    return;
 | 
			
		||||
  for (var i = 0; i < data_analog_params.length; i++) {
 | 
			
		||||
    filter_table.append(
 | 
			
		||||
      '<div class= "form-check">' +
 | 
			
		||||
      '<input class="form-check-input" type="checkbox" value="' + data_analog_params[i].index +
 | 
			
		||||
      '" id="analog_filter_id_' + data_analog_params[i].index + '" ' +
 | 
			
		||||
      (data_analog_params[i].showDefault ? 'checked' : '') + '>' +
 | 
			
		||||
      '<label class="form-check-label" for="analog_filter_id_' + data_analog_params[i].index + '">' +
 | 
			
		||||
      data_analog_params[i].index + ' ' + data_analog_params[i].name +
 | 
			
		||||
      '</label></div>'
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
function read_filter() {
 | 
			
		||||
  for (var i = 0; i < data_analog_params.length; i++) {
 | 
			
		||||
    if (filter_table.find('#analog_filter_id_' + data_analog_params[i].index).is(':checked'))
 | 
			
		||||
      data_analog_params[i].showDefault = true;
 | 
			
		||||
    else
 | 
			
		||||
      data_analog_params[i].showDefault = false;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function load_data_analog_params() {
 | 
			
		||||
  try {
 | 
			
		||||
    var name_vdp = "0" + pasport_data.numVDP;
 | 
			
		||||
    name_vdp = name_vdp.substr(name_vdp.length - 2);
 | 
			
		||||
    var res = await $.ajax({
 | 
			
		||||
      type: "POST",
 | 
			
		||||
      url: 'https://vsmpo.mbucb.ru/api/params/getanalogs',
 | 
			
		||||
      contentType: "application/json; charset=utf-8",
 | 
			
		||||
      dataType: "json",
 | 
			
		||||
      data: JSON.stringify({ "name": name_vdp })
 | 
			
		||||
    });
 | 
			
		||||
    data_analog_params = res.analog_params;
 | 
			
		||||
    return true;
 | 
			
		||||
  }
 | 
			
		||||
  catch (err) {
 | 
			
		||||
    data_protect = null;
 | 
			
		||||
    alert("Ошибка загрузки структуры аналогов");
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
async function load_data_metrics() {
 | 
			
		||||
  try {
 | 
			
		||||
    var res = await $.ajax({
 | 
			
		||||
      type: "POST",
 | 
			
		||||
      url: 'https://vsmpo.mbucb.ru/api/params/getmetrics',
 | 
			
		||||
      contentType: "application/json; charset=utf-8",
 | 
			
		||||
      dataType: "json",
 | 
			
		||||
      data: JSON.stringify({ })
 | 
			
		||||
    });
 | 
			
		||||
    data_metrics = res.metrics;
 | 
			
		||||
    for (var i = 0; i < data_metrics; i++)
 | 
			
		||||
      data_metrics[i].show = false;
 | 
			
		||||
    return true;
 | 
			
		||||
  }
 | 
			
		||||
  catch (err) {
 | 
			
		||||
    data_protect = null;
 | 
			
		||||
    alert("Ошибка загрузки метрик осей");
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
async function load_data_analog() {
 | 
			
		||||
  try {
 | 
			
		||||
    data_analog = null;
 | 
			
		||||
    if (data_analog_params == undefined ||
 | 
			
		||||
      data_analog_params == null)
 | 
			
		||||
      return false;
 | 
			
		||||
    var selected_analog = select_analogs = data_analog_params.filter(item => item.showDefault == true);
 | 
			
		||||
    var ask_array = [];
 | 
			
		||||
    for (var i = 0; i < selected_analog.length; i++)
 | 
			
		||||
      ask_array.push(selected_analog[i].index)
 | 
			
		||||
    var res = await $.ajax({
 | 
			
		||||
      type: "POST",
 | 
			
		||||
      url: 'https://vsmpo.mbucb.ru/api/date/getanalogs',
 | 
			
		||||
      contentType: "application/json; charset=utf-8",
 | 
			
		||||
      dataType: "json",
 | 
			
		||||
      data: JSON.stringify({
 | 
			
		||||
        "vdp": pasport_data.numVDP,
 | 
			
		||||
        "index": ask_array,
 | 
			
		||||
        "start": pasport_data.dStart,
 | 
			
		||||
        "end": pasport_data.dEnd
 | 
			
		||||
      })
 | 
			
		||||
    });
 | 
			
		||||
    data_analog = res.analogs;
 | 
			
		||||
    return true;
 | 
			
		||||
  }
 | 
			
		||||
  catch (err) {
 | 
			
		||||
    data_analog = null;
 | 
			
		||||
    alert("Ошибка загрузки дискретов.");
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function fill_analog_char_data() {
 | 
			
		||||
  var d = [];
 | 
			
		||||
  a_chart.options.axisY = [];
 | 
			
		||||
  a_chart.options.data = [];
 | 
			
		||||
  for (var i = 0; i < data_analog.length; i++) {
 | 
			
		||||
 | 
			
		||||
    var a_p = data_analog_params.find(item => item.index == data_analog[i].index);
 | 
			
		||||
    var a_p_exist = a_p != undefined && a_p != null;
 | 
			
		||||
 | 
			
		||||
    var axis = {
 | 
			
		||||
      labelFontSize: 12,
 | 
			
		||||
      labelAngle: -90,
 | 
			
		||||
      margin: 0,
 | 
			
		||||
      tickLength: 3,
 | 
			
		||||
      tickThickness: 1,
 | 
			
		||||
      lineThickness: 1,
 | 
			
		||||
      gridThickness: 0.1,
 | 
			
		||||
      suffix: "УЕ",
 | 
			
		||||
      logarithmic: false
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (a_p_exist) {
 | 
			
		||||
      var m = data_metrics.find(item => item.name = a_p.metric)
 | 
			
		||||
      if (m != undefined && m != null) {
 | 
			
		||||
        axis.suffix = m.name;
 | 
			
		||||
        axis.logarithmic = m.log;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    var axis_y_idx = a_chart.options.axisY.findIndex(item => item.suffix == axis.suffix);
 | 
			
		||||
    if (axis_y_idx == undefined || axis_y_idx == null || axis_y_idx == -1) {
 | 
			
		||||
      a_chart.options.axisY.push(axis);
 | 
			
		||||
      axis_y_idx = a_chart.options.axisY.length - 1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    var d_a_line = {
 | 
			
		||||
      type: "stepLine",
 | 
			
		||||
      markerType: "none",
 | 
			
		||||
      name: a_p_exist ? a_p.sname : "Сигнал №" + data_analog[i].index,
 | 
			
		||||
      suffix: axis.suffix,
 | 
			
		||||
      axisYIndex: axis_y_idx,
 | 
			
		||||
      dataPoints: []
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    var l_d_a = data_analog[i].analogs;
 | 
			
		||||
 | 
			
		||||
    for (var j = 0; j < l_d_a.length; j++) {
 | 
			
		||||
      var rdt = null
 | 
			
		||||
      if (l_d_a[j].start != undefined && l_d_a[j].start != null) {
 | 
			
		||||
        var dta = l_d_a[j].start.split(' ');
 | 
			
		||||
        if (dta.length == 2) {
 | 
			
		||||
          dtd = dta[0].split('.');
 | 
			
		||||
          dtt = dta[1].split(':');
 | 
			
		||||
          if (dtd.length == 3 && dtt.length === 3)
 | 
			
		||||
            rdt = new Date(dtd[0], dtd[1], dtd[2], dtt[0], dtt[1], dtt[2]);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      d_a_line.dataPoints.push({
 | 
			
		||||
        x: rdt,
 | 
			
		||||
        y: l_d_a[j].value
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
    a_chart.options.data.push(d_a_line);
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										326
									
								
								Site/js/discret.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										326
									
								
								Site/js/discret.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,326 @@
 | 
			
		||||
var discret_table = $('#discret_table');
 | 
			
		||||
var filter_table = $('#filter_table');
 | 
			
		||||
 | 
			
		||||
var aply_filter = $('#aply_filter');
 | 
			
		||||
var change_filter = $('#change_filter');
 | 
			
		||||
 | 
			
		||||
var data_discret = null;
 | 
			
		||||
var data_discret_params = null;
 | 
			
		||||
var params_state_struct = null;
 | 
			
		||||
 | 
			
		||||
//Первая загрузка страницы
 | 
			
		||||
$(document).ready(
 | 
			
		||||
  async function () {
 | 
			
		||||
    show_load();
 | 
			
		||||
 | 
			
		||||
    var flag_pasport_load = await get_url_params();
 | 
			
		||||
    pasport_fill_label();
 | 
			
		||||
    pasport_show_lable();
 | 
			
		||||
    if (!flag_pasport_load) {
 | 
			
		||||
      hide_load();
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
    if (!pasport_fill_date()) {
 | 
			
		||||
      hide_load();
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
    show_menu();
 | 
			
		||||
    pasport_show_date();
 | 
			
		||||
 | 
			
		||||
    var ds = load_data_discret();
 | 
			
		||||
    var dsp = load_data_discret_params();
 | 
			
		||||
    var dsss = load_params_state_struct();
 | 
			
		||||
    await Promise.all([ds, dsp, dsss]);
 | 
			
		||||
    if (dsp)
 | 
			
		||||
      fill_filter_discret();
 | 
			
		||||
    if (ds)
 | 
			
		||||
      fill_table_discret();
 | 
			
		||||
    hide_load();
 | 
			
		||||
  }
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
aply_filter.click(function () {
 | 
			
		||||
  read_filter();
 | 
			
		||||
  fill_table_discret();
 | 
			
		||||
});
 | 
			
		||||
var change_filter_flag = true;
 | 
			
		||||
change_filter.click(function () {
 | 
			
		||||
  change_filter.empty();
 | 
			
		||||
  if (change_filter_flag)
 | 
			
		||||
    change_filter.append("Установить все");
 | 
			
		||||
  else
 | 
			
		||||
    change_filter.append("Снять все");
 | 
			
		||||
  for (var i = 0; i < data_discret_params.length; i++) {
 | 
			
		||||
    var check_label = filter_table.find('#discret_filter_id_' + data_discret_params[i].index);
 | 
			
		||||
    if (change_filter_flag)
 | 
			
		||||
      check_label.removeAttr('checked');
 | 
			
		||||
    else
 | 
			
		||||
      check_label.attr('checked', true);
 | 
			
		||||
  }
 | 
			
		||||
  change_filter_flag = !change_filter_flag;
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
async function load_data_discret() {
 | 
			
		||||
  try {
 | 
			
		||||
    var res = await $.ajax({
 | 
			
		||||
      type: "POST",
 | 
			
		||||
      url: 'https://vsmpo.mbucb.ru/api/date/getdiscret',
 | 
			
		||||
      contentType: "application/json; charset=utf-8",
 | 
			
		||||
      dataType: "json",
 | 
			
		||||
      data: JSON.stringify({
 | 
			
		||||
        "vdp": pasport_data.numVDP,
 | 
			
		||||
        "start": pasport_data.dStart,
 | 
			
		||||
        "end": pasport_data.dEnd
 | 
			
		||||
      })
 | 
			
		||||
    });
 | 
			
		||||
    data_discret = res.discret;
 | 
			
		||||
    return true;
 | 
			
		||||
  }
 | 
			
		||||
  catch (err) {
 | 
			
		||||
    data_discret = null;
 | 
			
		||||
    alert("Ошибка загрузки дискретов.");
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
async function load_data_discret_params() {
 | 
			
		||||
  try {
 | 
			
		||||
    var name_vdp = "0" + pasport_data.numVDP;
 | 
			
		||||
    name_vdp = name_vdp.substr(name_vdp.length - 2);
 | 
			
		||||
    var res = await $.ajax({
 | 
			
		||||
      type: "POST",
 | 
			
		||||
      url: 'https://vsmpo.mbucb.ru/api/params/getdiscret',
 | 
			
		||||
      contentType: "application/json; charset=utf-8",
 | 
			
		||||
      dataType: "json",
 | 
			
		||||
      data: JSON.stringify({ "name": name_vdp })
 | 
			
		||||
    });
 | 
			
		||||
    data_discret_params = res.discret_params;
 | 
			
		||||
    var i = 0;
 | 
			
		||||
    while (i < data_discret_params.length) {
 | 
			
		||||
      if (data_discret_params[i].skip) {
 | 
			
		||||
        data_discret_params.splice(i, 1);
 | 
			
		||||
        continue;
 | 
			
		||||
      }
 | 
			
		||||
      data_discret_params[i].show = true;
 | 
			
		||||
      i++;
 | 
			
		||||
    }
 | 
			
		||||
    return true;
 | 
			
		||||
  }
 | 
			
		||||
  catch (err) {
 | 
			
		||||
    data_discret_params = null;
 | 
			
		||||
    alert("Ошибка загрузки структуры дискретов");
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
async function load_params_state_struct() {
 | 
			
		||||
  try {
 | 
			
		||||
    var res = await $.ajax({
 | 
			
		||||
      type: "POST",
 | 
			
		||||
      url: 'https://vsmpo.mbucb.ru/api/params/getstatestruct',
 | 
			
		||||
      contentType: "application/json; charset=utf-8",
 | 
			
		||||
      dataType: "json",
 | 
			
		||||
      data: JSON.stringify({})
 | 
			
		||||
    });
 | 
			
		||||
    params_state_struct = res.stateStruct;
 | 
			
		||||
    return true;
 | 
			
		||||
  }
 | 
			
		||||
  catch (err) {
 | 
			
		||||
    params_state_struct = null;
 | 
			
		||||
    alert("Ошибка загрузки состояний");
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function fill_table_discret() {
 | 
			
		||||
  try {
 | 
			
		||||
    discret_table.find('tbody').empty();
 | 
			
		||||
    if (data_discret == undefined ||
 | 
			
		||||
      data_discret == null ||
 | 
			
		||||
      data_discret_params == undefined ||
 | 
			
		||||
      data_discret_params == null)
 | 
			
		||||
      return;
 | 
			
		||||
 | 
			
		||||
    for (var i = 0; i < data_discret.length; i++) {
 | 
			
		||||
      var state = data_discret_params.find(item => item.index == data_discret[i].index);
 | 
			
		||||
      if (state == undefined || state == null || !state.show)
 | 
			
		||||
        continue;
 | 
			
		||||
 | 
			
		||||
      var state_idx = params_state_struct.find(item => item.name == state.stateStruct);
 | 
			
		||||
      if (state_idx == undefined || state_idx == null) {
 | 
			
		||||
        state_idx = {};
 | 
			
		||||
        state_idx.color = "#ffffff";
 | 
			
		||||
        state_idx.name = "Состояние №" + data_discret[i].state;
 | 
			
		||||
      } else {
 | 
			
		||||
        state_idx = state_idx.states.find(item => item.index == data_discret[i].state);
 | 
			
		||||
        if (state_idx == undefined || state_idx == null) {
 | 
			
		||||
          state_idx = {};
 | 
			
		||||
          state_idx.color = "#ffffff";
 | 
			
		||||
          state_idx.name = "Состояние №" + data_discret[i].state;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      discret_table.find('tbody').append(
 | 
			
		||||
        '<tr style="background-color : ' + state_idx.color + '20;">' +
 | 
			
		||||
        '<td>' + (i + 1) +
 | 
			
		||||
        '</td>' +
 | 
			
		||||
        '<td>' + data_discret[i].index +
 | 
			
		||||
        '</td>' +
 | 
			
		||||
        '<td>' + data_discret[i].start +
 | 
			
		||||
        '</td>' +
 | 
			
		||||
        '<td>' + state.name +
 | 
			
		||||
        '</td>' +
 | 
			
		||||
        '<td>' + state_idx.name +
 | 
			
		||||
        '</td>' +
 | 
			
		||||
        '</tr>');
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  catch {
 | 
			
		||||
    alert("Ошибка заполнения таблицы.");
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function fill_filter_discret() {
 | 
			
		||||
  filter_table.empty();
 | 
			
		||||
  if (data_discret_params == undefined ||
 | 
			
		||||
    data_discret_params == null)
 | 
			
		||||
    return;
 | 
			
		||||
  for (var i = 0; i < data_discret_params.length; i++) {
 | 
			
		||||
    filter_table.append(
 | 
			
		||||
      '<div class= "form-check">' +
 | 
			
		||||
      '<input class="form-check-input" type="checkbox" value="' + data_discret_params[i].index +
 | 
			
		||||
      '" id="discret_filter_id_' + data_discret_params[i].index + '" ' +
 | 
			
		||||
      (data_discret_params[i].show ? 'checked' : '') + '>' +
 | 
			
		||||
      '<label class="form-check-label" for="discret_filter_id_' + data_discret_params[i].index + '">' +
 | 
			
		||||
      data_discret_params[i].index + ' ' + data_discret_params[i].name +
 | 
			
		||||
      '</label></div>'
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
function read_filter() {
 | 
			
		||||
  for (var i = 0; i < data_discret_params.length; i++) {
 | 
			
		||||
    if (filter_table.find('#discret_filter_id_' + data_discret_params[i].index).is(':checked'))
 | 
			
		||||
      data_discret_params[i].show = true;
 | 
			
		||||
    else
 | 
			
		||||
      data_discret_params[i].show = false;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function load_discret() {
 | 
			
		||||
  $.ajax({
 | 
			
		||||
    type:
 | 
			
		||||
      "POST",
 | 
			
		||||
    url:
 | 
			
		||||
      'https://' +
 | 
			
		||||
      //document.URL.split("/")[2] +
 | 
			
		||||
      'vsmpo.mbucb.ru' +
 | 
			
		||||
      '/api/discret/getdiscrets',
 | 
			
		||||
    contentType:
 | 
			
		||||
      "application/json; charset=utf-8",
 | 
			
		||||
    dataType:
 | 
			
		||||
      "json",
 | 
			
		||||
    data:
 | 
			
		||||
      JSON.stringify(
 | 
			
		||||
        {
 | 
			
		||||
          "vdp": pasport_data == null ? global_vdp : pasport_data.numVDP,
 | 
			
		||||
          "start": pasport_data == null ? global_dStart : pasport_data.dStart,
 | 
			
		||||
          "end": pasport_data == null ? global_dEnd : pasport_data.dEnd
 | 
			
		||||
        }
 | 
			
		||||
      ),
 | 
			
		||||
    failure:
 | 
			
		||||
      function (errMsg) {
 | 
			
		||||
        hide_load();
 | 
			
		||||
        alert("Не смог зугрузить массив данных. \n" + errMsg.name + ":" + errMsg.message + "\n" + errMsg.stack);
 | 
			
		||||
      },
 | 
			
		||||
    success: function (date) {
 | 
			
		||||
      if (
 | 
			
		||||
        date === undefined ||
 | 
			
		||||
        date.discrets === undefined ||
 | 
			
		||||
        date.stateParams === undefined ||
 | 
			
		||||
        date.discretParams === undefined
 | 
			
		||||
      ) {
 | 
			
		||||
        alert("Неверные данные")
 | 
			
		||||
        return;
 | 
			
		||||
      }
 | 
			
		||||
      for (var i = 0; i < date.discrets.length; i++) {
 | 
			
		||||
        var discret_row = {};
 | 
			
		||||
 | 
			
		||||
        discret_row.id = i + 1;
 | 
			
		||||
        discret_row.index = date.discrets[i].index;
 | 
			
		||||
        discret_row.name = "Дискрет №" + date.discrets[i].index;
 | 
			
		||||
        discret_row.color = "#ffffff";
 | 
			
		||||
        discret_row.state = "Неизвестный №" + date.discrets[i].state;
 | 
			
		||||
        discret_row.date_time = date.discrets[i].start;
 | 
			
		||||
 | 
			
		||||
        var discretParams = date.discretParams.find(item => item.index == date.discrets[i].index);
 | 
			
		||||
        if (discretParams != undefined) {
 | 
			
		||||
          discret_row.name = discretParams.name;
 | 
			
		||||
 | 
			
		||||
          var stateParam =
 | 
			
		||||
            date.stateParams.find(item =>
 | 
			
		||||
              item.name == discretParams.stateStruct &&
 | 
			
		||||
              item.states.find(item => item.index == date.discrets[i].state) != undefined
 | 
			
		||||
            )
 | 
			
		||||
          if (stateParam != undefined) {
 | 
			
		||||
            var state_tmp = stateParam.states.find(item => item.index == date.discrets[i].state);
 | 
			
		||||
            discret_row.state = state_tmp.name;
 | 
			
		||||
            discret_row.color = state_tmp.color;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        var discret_filter = {};
 | 
			
		||||
        discret_filter.index = discret_row.index;
 | 
			
		||||
        discret_filter.name = discret_row.name;
 | 
			
		||||
        discret_filter.show = true;
 | 
			
		||||
 | 
			
		||||
        if (local_filter.find(item => item.index == discret_filter.index) === undefined)
 | 
			
		||||
          local_filter.push(discret_filter);
 | 
			
		||||
 | 
			
		||||
        local_date.push(discret_row);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      local_filter.sort(function (a, b) { return a.index - b.index; });
 | 
			
		||||
      update_filter();
 | 
			
		||||
      update_table();
 | 
			
		||||
      hide_load();
 | 
			
		||||
    } 
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function update_filter() {
 | 
			
		||||
  filter_table.empty();
 | 
			
		||||
  for (var i = 0; i < local_filter.length; i++) {
 | 
			
		||||
    filter_table.append(
 | 
			
		||||
      '<div class= "form-check">' +
 | 
			
		||||
      '<input class="form-check-input" type="checkbox" value="' + local_filter[i].index +
 | 
			
		||||
      '" id="discret_filter_id_' + local_filter[i].index + '" ' +
 | 
			
		||||
      (local_filter[i].show ? 'checked' : '') + '>' +
 | 
			
		||||
      '<label class="form-check-label" for="discret_filter_id_' + local_filter[i].index + '">' +
 | 
			
		||||
      local_filter[i].index + ' ' + local_filter[i].name +
 | 
			
		||||
      '</label></div>'
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function update_table() {
 | 
			
		||||
  discret_table.find('tbody').empty();
 | 
			
		||||
  for (var i = 0; i < local_date.length; i++) {
 | 
			
		||||
    var check = local_filter.find(item => item.index == local_date[i].index);
 | 
			
		||||
    if (check != undefined && !check.show)
 | 
			
		||||
      continue;
 | 
			
		||||
    discret_table.find('tbody').append(
 | 
			
		||||
      '<tr style="background-color : ' + local_date[i].color + '20;">' +
 | 
			
		||||
      '<td>' + (i + 1) +
 | 
			
		||||
      '</td>' +
 | 
			
		||||
      '<td>' + local_date[i].index +
 | 
			
		||||
      '</td>' +
 | 
			
		||||
      '<td>' + local_date[i].date_time +
 | 
			
		||||
      '</td>' +
 | 
			
		||||
      '<td>' + local_date[i].name +
 | 
			
		||||
      '</td>' +
 | 
			
		||||
      '<td>' + local_date[i].state +
 | 
			
		||||
      '</td>' +
 | 
			
		||||
      '</tr>');
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										1
									
								
								Site/js/global_params.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								Site/js/global_params.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
var global_pasport;
 | 
			
		||||
							
								
								
									
										221
									
								
								Site/js/index.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										221
									
								
								Site/js/index.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,221 @@
 | 
			
		||||
var pasport_date_list = $('#pasport_date_list');
 | 
			
		||||
var search_button = $('#search_button');
 | 
			
		||||
var pasport_list = $('#pasport_list');
 | 
			
		||||
var pasport_select_button = $('#pasport_select_button');
 | 
			
		||||
 | 
			
		||||
var vdp_select = $('#vdp_select');
 | 
			
		||||
var vdp_date_start = $('#vdp_date_start');
 | 
			
		||||
var vdp_date_end = $('#vdp_date_end');
 | 
			
		||||
var vdp_time_start = $('#vdp_time_start');
 | 
			
		||||
var vdp_time_end = $('#vdp_time_end');
 | 
			
		||||
var vdp_select_button = $('#vdp_select_button');
 | 
			
		||||
 | 
			
		||||
//Первая загрузка страницы
 | 
			
		||||
$(document).ready(
 | 
			
		||||
  async function () {
 | 
			
		||||
    //fill elements
 | 
			
		||||
 | 
			
		||||
    for (var i = 1; i < 51; i++)
 | 
			
		||||
      vdp_select.append('<option value="' + i + '">' + i + '</option>');
 | 
			
		||||
    for (var i = 91; i < 95; i++)
 | 
			
		||||
      vdp_select.append('<option value="' + i + '">' + i + '</option>');
 | 
			
		||||
 | 
			
		||||
    var d = new Date();
 | 
			
		||||
    pasport_date_list.val(getDate(d));
 | 
			
		||||
 | 
			
		||||
    vdp_date_end.val(getDate(d));
 | 
			
		||||
    d.setDate(d.getDate() - 3);
 | 
			
		||||
    vdp_date_start.val(getDate(d));
 | 
			
		||||
 | 
			
		||||
    vdp_time_start.val('00:00:00');
 | 
			
		||||
    vdp_time_end.val('23:59:59');
 | 
			
		||||
 | 
			
		||||
    await get_url_params();
 | 
			
		||||
 | 
			
		||||
    if (
 | 
			
		||||
      pasport_data == undefined ||
 | 
			
		||||
      pasport_data == null
 | 
			
		||||
    )
 | 
			
		||||
      return;
 | 
			
		||||
 | 
			
		||||
    if (pasport_data.search_date != null) {
 | 
			
		||||
      pasport_date_list.val(pasport_data.search_date);
 | 
			
		||||
      if (pasport_data.search_name != null) {
 | 
			
		||||
        func_search_button(
 | 
			
		||||
          pasport_data.search_date,
 | 
			
		||||
          pasport_data.search_name
 | 
			
		||||
        );
 | 
			
		||||
        func_pasport_select_button(
 | 
			
		||||
          pasport_data.search_date,
 | 
			
		||||
          pasport_data.search_name
 | 
			
		||||
        );
 | 
			
		||||
      }
 | 
			
		||||
      else
 | 
			
		||||
        search_button.click();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (pasport_data.numVDP != null)
 | 
			
		||||
      $('#vdp_select option[value=' + pasport_data.numVDP + ']').prop('selected', true);
 | 
			
		||||
 | 
			
		||||
    if (pasport_data.dStart != null && pasport_data.dEnd != null) {
 | 
			
		||||
      var st = pasport_data.dStart.split(' ');
 | 
			
		||||
      var std = st[0].split('.');
 | 
			
		||||
      var ed = pasport_data.dEnd.split(' ');
 | 
			
		||||
      var edd = ed[0].split('.');
 | 
			
		||||
      if (std.length == 1)
 | 
			
		||||
        vdp_date_start.val(std[0]);
 | 
			
		||||
      else
 | 
			
		||||
        vdp_date_start.val(std[0] + '-' + std[1] + '-' + std[2]);
 | 
			
		||||
      if (edd.length == 1)
 | 
			
		||||
        vdp_date_end.val(edd[0]);
 | 
			
		||||
      else
 | 
			
		||||
        vdp_date_end.val(edd[0] + '-' + edd[1] + '-' + edd[2]);
 | 
			
		||||
      
 | 
			
		||||
      vdp_time_start.val(st[1]);
 | 
			
		||||
      vdp_time_end.val(ed[1]);
 | 
			
		||||
 | 
			
		||||
      vdp_select_button.click();
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
      var d = new Date();
 | 
			
		||||
      vdp_date_end.val(
 | 
			
		||||
        getDate(d)
 | 
			
		||||
      );
 | 
			
		||||
      d.setDate(d.getDate() - 3);
 | 
			
		||||
      vdp_date_start.val(
 | 
			
		||||
        getDate(d)
 | 
			
		||||
      );
 | 
			
		||||
      vdp_time_start.val('00:00:00');
 | 
			
		||||
      vdp_time_end.val('23:59:59');
 | 
			
		||||
    }
 | 
			
		||||
    pasport_fill_label()
 | 
			
		||||
    pasport_show_lable();
 | 
			
		||||
    if (pasport_fill_date())
 | 
			
		||||
      pasport_show_date();
 | 
			
		||||
    if (pasport_fill_info())
 | 
			
		||||
      pasport_fill_info();
 | 
			
		||||
    show_menu();
 | 
			
		||||
  }
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
//Конвертация даты в строку
 | 
			
		||||
function getDate(date) {
 | 
			
		||||
  var d = (date === undefined) ? new Date() : date;
 | 
			
		||||
  t =
 | 
			
		||||
    d.getFullYear() + "-" +
 | 
			
		||||
    ("0" + (d.getMonth() + 1)).slice(-2) + "-" +
 | 
			
		||||
    ("0" + d.getDate()).slice(-2);
 | 
			
		||||
  return t;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//Изменение даты для поиска
 | 
			
		||||
pasport_date_list.change(
 | 
			
		||||
  function () {
 | 
			
		||||
    pasport_list.empty();
 | 
			
		||||
    pasport_select_button.attr('hidden', true);
 | 
			
		||||
  }
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
//Кнопка поиска списка по дате
 | 
			
		||||
search_button.click(
 | 
			
		||||
  function () {
 | 
			
		||||
    func_search_button(
 | 
			
		||||
      pasport_date_list.val()
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
);
 | 
			
		||||
function func_search_button(data, name) {
 | 
			
		||||
  $.ajax({
 | 
			
		||||
    type: "POST",
 | 
			
		||||
    url: 'https://vsmpo.mbucb.ru/api/pasport/getlist',
 | 
			
		||||
    contentType: "application/json; charset=utf-8",
 | 
			
		||||
    dataType: "json",
 | 
			
		||||
    data: JSON.stringify({
 | 
			
		||||
      "date": data
 | 
			
		||||
    }),
 | 
			
		||||
    failure:
 | 
			
		||||
      function (errMsg) {
 | 
			
		||||
        pasport_select_button.attr('hidden', true);
 | 
			
		||||
        alert("Не смог зугрузить список плавок. \n" + errMsg.name + ":" + errMsg.message + "\n" + errMsg.stack);
 | 
			
		||||
      },
 | 
			
		||||
    beforeSend:
 | 
			
		||||
      function (jqXHR, settings) {
 | 
			
		||||
        pasport_select_button.attr('hidden', true);
 | 
			
		||||
        pasport_list.empty();
 | 
			
		||||
      },
 | 
			
		||||
    success: function (date) {
 | 
			
		||||
      if (date === undefined || date.name === undefined || date.time === undefined) {
 | 
			
		||||
        pasport_list.append('<option>Ошибка</option>');
 | 
			
		||||
        return;
 | 
			
		||||
      }
 | 
			
		||||
      if (date.name === null || date.name.length === 0) {
 | 
			
		||||
        pasport_list.append('<option>Плавок нет</option>');
 | 
			
		||||
        return;
 | 
			
		||||
      }
 | 
			
		||||
      for (var i = 0; i < date.name.length; i++)
 | 
			
		||||
        pasport_list.append('<option value="' + date.time[i] + '-' + date.name[i] + '">' + date.name[i] + '</option>');
 | 
			
		||||
      if (name != undefined)
 | 
			
		||||
        $('#pasport_list option[value=' + name + ']').prop('selected', true);
 | 
			
		||||
      pasport_select_button.removeAttr('hidden');
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pasport_select_button.click(
 | 
			
		||||
  function () {
 | 
			
		||||
    func_pasport_select_button(
 | 
			
		||||
      pasport_date_list.val(),
 | 
			
		||||
      pasport_list.find(':selected').val()
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
)
 | 
			
		||||
async function func_pasport_select_button(data, name) {
 | 
			
		||||
  var res_load = await pasport_load(data, name);
 | 
			
		||||
  pasport_fill_label();
 | 
			
		||||
  pasport_show_lable();
 | 
			
		||||
  if (!res_load)
 | 
			
		||||
    return;
 | 
			
		||||
  pasport_fill_date();
 | 
			
		||||
  pasport_fill_info();
 | 
			
		||||
  pasport_show_date();
 | 
			
		||||
  pasport_show_info();
 | 
			
		||||
  show_menu();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
vdp_select_button.click(
 | 
			
		||||
  function () {
 | 
			
		||||
    func_vdp_select_button(
 | 
			
		||||
      vdp_select.find(':selected').val(),
 | 
			
		||||
      vdp_date_start.val(),
 | 
			
		||||
      vdp_time_start.val(),
 | 
			
		||||
      vdp_date_end.val(),
 | 
			
		||||
      vdp_time_end.val()
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
)
 | 
			
		||||
function func_vdp_select_button(vdp, ds, ts, de, te) {
 | 
			
		||||
  pasport_hide_all();
 | 
			
		||||
  hide_menu();
 | 
			
		||||
  
 | 
			
		||||
  var d_s = ds.split('-');
 | 
			
		||||
  var t_s = ts.split(':');
 | 
			
		||||
  var d_e = de.split('-');
 | 
			
		||||
  var t_e = te.split(':');
 | 
			
		||||
  var s_d_s = new Date(d_s[0], d_s[1], d_s[2], t_s[0], t_s[1], t_s[2]);
 | 
			
		||||
  var s_d_e = new Date(d_e[0], d_e[1], d_e[2], t_e[0], t_e[1], t_e[2]);
 | 
			
		||||
  if (s_d_s >= s_d_e) {
 | 
			
		||||
    alert('Неверно указаны даты.');
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  pasport_custom_set(
 | 
			
		||||
    vdp,
 | 
			
		||||
    d_s[0] + '.' + d_s[1] + '.' + d_s[2] + ' ' + ts,
 | 
			
		||||
    d_e[0] + '.' + d_e[1] + '.' + d_e[2] + ' ' + te
 | 
			
		||||
  );
 | 
			
		||||
  pasport_fill_label();
 | 
			
		||||
  pasport_fill_date();
 | 
			
		||||
  pasport_show_lable();
 | 
			
		||||
  pasport_show_date();
 | 
			
		||||
  show_menu();
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										104
									
								
								Site/js/menu.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										104
									
								
								Site/js/menu.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,104 @@
 | 
			
		||||
var menu_pasport_button = $('#menu_pasport_button');
 | 
			
		||||
var menu_analog_button = $('#menu_analog_button');
 | 
			
		||||
var menu_descret_button = $('#menu_descret_button');
 | 
			
		||||
var menu_tech_cycle_button = $('#menu_tech_cycle_button');
 | 
			
		||||
var menu_protect_button = $('#menu_protect_button');
 | 
			
		||||
 | 
			
		||||
menu_pasport_button.click(
 | 
			
		||||
  function () {
 | 
			
		||||
    create_redirect(0);
 | 
			
		||||
  }
 | 
			
		||||
);
 | 
			
		||||
menu_analog_button.click(
 | 
			
		||||
  function () {
 | 
			
		||||
    create_redirect(1);
 | 
			
		||||
  }
 | 
			
		||||
);
 | 
			
		||||
menu_descret_button.click(
 | 
			
		||||
  function () {
 | 
			
		||||
    create_redirect(2);
 | 
			
		||||
  }
 | 
			
		||||
);
 | 
			
		||||
menu_tech_cycle_button.click(
 | 
			
		||||
  function () {
 | 
			
		||||
    create_redirect(3);
 | 
			
		||||
  }
 | 
			
		||||
);
 | 
			
		||||
menu_protect_button.click(
 | 
			
		||||
  function () {
 | 
			
		||||
    create_redirect(4);
 | 
			
		||||
  }
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
function create_redirect(id) {
 | 
			
		||||
  var url = 'https://' + document.URL.split("/")[2];
 | 
			
		||||
  if (id === undefined || id == 0) {
 | 
			
		||||
    url += '/index.html';
 | 
			
		||||
  } else if (id == 1) {
 | 
			
		||||
    url += '/analog.html';
 | 
			
		||||
  } else if (id == 2) {
 | 
			
		||||
    url += '/discret.html';
 | 
			
		||||
  } else if (id == 3) {
 | 
			
		||||
    url += '/tech_cycle.html';
 | 
			
		||||
  } else if (id == 4) {
 | 
			
		||||
    url += '/protect.html';
 | 
			
		||||
  }
 | 
			
		||||
  urlSP = new URL(url);
 | 
			
		||||
  if (
 | 
			
		||||
    pasport_data.hasOwnProperty('search_date') &&
 | 
			
		||||
    pasport_data.hasOwnProperty('search_name')
 | 
			
		||||
  ) {
 | 
			
		||||
    urlSP.searchParams.set('pasport_date', pasport_data.search_date);
 | 
			
		||||
    urlSP.searchParams.set('pasport_name', pasport_data.search_name);
 | 
			
		||||
  } else {
 | 
			
		||||
    urlSP.searchParams.set('vdp', pasport_data.numVDP);
 | 
			
		||||
    urlSP.searchParams.set('dstart', pasport_data.dStart);
 | 
			
		||||
    urlSP.searchParams.set('dend', pasport_data.dEnd);
 | 
			
		||||
  }
 | 
			
		||||
  document.location.href = urlSP;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function get_url_params() {
 | 
			
		||||
  var url = new URL(document.URL);
 | 
			
		||||
  var url_pasport_date = url.searchParams.get('pasport_date');
 | 
			
		||||
  var url_pasport_name = url.searchParams.get('pasport_name');
 | 
			
		||||
  if (
 | 
			
		||||
    url_pasport_date != null &&
 | 
			
		||||
    url_pasport_name != null
 | 
			
		||||
  ) {
 | 
			
		||||
    return await pasport_load(url_pasport_date, url_pasport_name);
 | 
			
		||||
  }
 | 
			
		||||
  var url_vdp = url.searchParams.get('vdp');
 | 
			
		||||
  var url_dstart  = url.searchParams.get('dstart');
 | 
			
		||||
  var url_dend = url.searchParams.get('dend');
 | 
			
		||||
  if (
 | 
			
		||||
    url_vdp != null &&
 | 
			
		||||
    url_dstart != null &&
 | 
			
		||||
    url_dend != null
 | 
			
		||||
  )
 | 
			
		||||
  {
 | 
			
		||||
    pasport_custom_set(
 | 
			
		||||
      url_vdp,
 | 
			
		||||
      url_dstart,
 | 
			
		||||
      url_dend
 | 
			
		||||
    );
 | 
			
		||||
    return true;
 | 
			
		||||
  }
 | 
			
		||||
  return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var load_line = $('#load_line');
 | 
			
		||||
function show_load() {
 | 
			
		||||
  load_line.removeAttr('hidden');
 | 
			
		||||
}
 | 
			
		||||
function hide_load() {
 | 
			
		||||
  load_line.attr('hidden', true);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var manipulate_buttons = $('#manipulate_buttons');
 | 
			
		||||
function show_menu() {
 | 
			
		||||
  manipulate_buttons.removeAttr('hidden');
 | 
			
		||||
}
 | 
			
		||||
function hide_menu() {
 | 
			
		||||
  manipulate_buttons.attr('hidden', true);
 | 
			
		||||
}
 | 
			
		||||
@@ -1 +0,0 @@
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										193
									
								
								Site/js/protect.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								Site/js/protect.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,193 @@
 | 
			
		||||
var protect_table = $('#protect_table');
 | 
			
		||||
var filter_table = $('#filter_table');
 | 
			
		||||
 | 
			
		||||
var aply_filter = $('#aply_filter');
 | 
			
		||||
var change_filter = $('#change_filter');
 | 
			
		||||
 | 
			
		||||
var data_protect = null;
 | 
			
		||||
var data_protect_state = null;
 | 
			
		||||
var params_state_struct = null;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//Первая загрузка страницы
 | 
			
		||||
$(document).ready(
 | 
			
		||||
  async function () {
 | 
			
		||||
    var flag_pasport_load = await get_url_params();
 | 
			
		||||
    pasport_fill_label();
 | 
			
		||||
    pasport_show_lable();
 | 
			
		||||
    if (!flag_pasport_load)
 | 
			
		||||
      return;
 | 
			
		||||
    if (!pasport_fill_date())
 | 
			
		||||
      return;
 | 
			
		||||
    show_menu();
 | 
			
		||||
    pasport_show_date();
 | 
			
		||||
 | 
			
		||||
    var pt = load_data_protect();
 | 
			
		||||
    var pts = load_data_protect_state();
 | 
			
		||||
    var ptss = load_params_state_struct();
 | 
			
		||||
    await Promise.all([pt, pts, ptss]);
 | 
			
		||||
    if (pts)
 | 
			
		||||
      fill_filter_protect();
 | 
			
		||||
    if (pt)
 | 
			
		||||
      fill_table_protect();
 | 
			
		||||
  }
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
aply_filter.click(function () {
 | 
			
		||||
  read_filter();
 | 
			
		||||
  fill_table_protect();
 | 
			
		||||
});
 | 
			
		||||
var change_filter_flag = true;
 | 
			
		||||
change_filter.click(function () {
 | 
			
		||||
  change_filter.empty();
 | 
			
		||||
  if (change_filter_flag)
 | 
			
		||||
    change_filter.append("Установить все");
 | 
			
		||||
  else
 | 
			
		||||
    change_filter.append("Снять все");
 | 
			
		||||
  for (var i = 0; i < data_protect_state.length; i++) {
 | 
			
		||||
    var check_label = filter_table.find('#protect_filter_id_' + data_protect_state[i].index);
 | 
			
		||||
    if (change_filter_flag)
 | 
			
		||||
      check_label.removeAttr('checked');
 | 
			
		||||
    else
 | 
			
		||||
      check_label.attr('checked', true);
 | 
			
		||||
  }
 | 
			
		||||
  change_filter_flag = !change_filter_flag;
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
async function load_data_protect() {
 | 
			
		||||
  try {
 | 
			
		||||
    var res = await $.ajax({
 | 
			
		||||
      type: "POST",
 | 
			
		||||
      url: 'https://vsmpo.mbucb.ru/api/date/getprotect',
 | 
			
		||||
      contentType: "application/json; charset=utf-8",
 | 
			
		||||
      dataType: "json",
 | 
			
		||||
      data: JSON.stringify({
 | 
			
		||||
        "vdp": pasport_data.numVDP,
 | 
			
		||||
        "start": pasport_data.dStart,
 | 
			
		||||
        "end": pasport_data.dEnd
 | 
			
		||||
      })
 | 
			
		||||
    });
 | 
			
		||||
    data_protect = res.protect;
 | 
			
		||||
    return true;
 | 
			
		||||
  }
 | 
			
		||||
  catch (err) {
 | 
			
		||||
    data_protect = null;
 | 
			
		||||
    alert("Ошибка загрузки защит");
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
async function load_data_protect_state() {
 | 
			
		||||
  try {
 | 
			
		||||
    var name_vdp = "0" + pasport_data.numVDP;
 | 
			
		||||
    name_vdp = name_vdp.substr(name_vdp.length - 2);
 | 
			
		||||
    var res = await $.ajax({
 | 
			
		||||
      type: "POST",
 | 
			
		||||
      url: 'https://vsmpo.mbucb.ru/api/params/getprotectstate',
 | 
			
		||||
      contentType: "application/json; charset=utf-8",
 | 
			
		||||
      dataType: "json",
 | 
			
		||||
      data: JSON.stringify({"name": name_vdp})
 | 
			
		||||
    });
 | 
			
		||||
    data_protect_state = res.protectState;
 | 
			
		||||
    for (var i = 0; i < data_protect_state.length; i++)
 | 
			
		||||
      data_protect_state[i].show = true;
 | 
			
		||||
    return true;
 | 
			
		||||
  }
 | 
			
		||||
  catch (err) {
 | 
			
		||||
    data_protect = null;
 | 
			
		||||
    alert("Ошибка загрузки структуры защит");
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
async function load_params_state_struct() {
 | 
			
		||||
  try {
 | 
			
		||||
    var res = await $.ajax({
 | 
			
		||||
      type: "POST",
 | 
			
		||||
      url: 'https://vsmpo.mbucb.ru/api/params/getstatestruct',
 | 
			
		||||
      contentType: "application/json; charset=utf-8",
 | 
			
		||||
      dataType: "json",
 | 
			
		||||
      data: JSON.stringify({})
 | 
			
		||||
    });
 | 
			
		||||
    params_state_struct = res.stateStruct;
 | 
			
		||||
    return true;
 | 
			
		||||
  }
 | 
			
		||||
  catch (err) {
 | 
			
		||||
    params_state_struct = null;
 | 
			
		||||
    alert("Ошибка загрузки состояний");
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function fill_table_protect() {
 | 
			
		||||
  try {
 | 
			
		||||
    protect_table.find('tbody').empty();
 | 
			
		||||
    if (data_protect == undefined ||
 | 
			
		||||
      data_protect == null ||
 | 
			
		||||
      data_protect_state == undefined ||
 | 
			
		||||
      data_protect_state == null)
 | 
			
		||||
      return;
 | 
			
		||||
 | 
			
		||||
    for (var i = 0; i < data_protect.length; i++) {
 | 
			
		||||
      var state = data_protect_state.find(item => item.index == data_protect[i].index);
 | 
			
		||||
      if (state == undefined || state == null || !state.show)
 | 
			
		||||
        continue;
 | 
			
		||||
 | 
			
		||||
      var state_idx = params_state_struct.find(item => item.name == state.stateStruct);
 | 
			
		||||
      if (state_idx == undefined || state_idx == null) {
 | 
			
		||||
        state_idx = {};
 | 
			
		||||
        state_idx.color = "#ffffff";
 | 
			
		||||
        state_idx.name = "Операция №" + data_protect[i].state;
 | 
			
		||||
      } else {
 | 
			
		||||
        state_idx = state_idx.states.find(item => item.index == data_protect[i].state);
 | 
			
		||||
        if (state_idx == undefined || state_idx == null) {
 | 
			
		||||
          state_idx = {};
 | 
			
		||||
          state_idx.color = "#ffffff";
 | 
			
		||||
          state_idx.name = "Операция №" + data_protect[i].state;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      protect_table.find('tbody').append(
 | 
			
		||||
        '<tr style="background-color : ' + state_idx.color + '20;">' +
 | 
			
		||||
        '<td>' + (i + 1) +
 | 
			
		||||
        '</td>' +
 | 
			
		||||
        '<td>' + data_protect[i].index +
 | 
			
		||||
        '</td>' +
 | 
			
		||||
        '<td>' + data_protect[i].start +
 | 
			
		||||
        '</td>' +
 | 
			
		||||
        '<td>' + state.name +
 | 
			
		||||
        '</td>' +
 | 
			
		||||
        '<td>' + state_idx.name +
 | 
			
		||||
        '</td>' +
 | 
			
		||||
        '</tr>');
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  catch {
 | 
			
		||||
    alert("Ошибка заполнения таблицы.");
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function fill_filter_protect() {
 | 
			
		||||
  filter_table.empty();
 | 
			
		||||
  if (data_protect_state == undefined ||
 | 
			
		||||
    data_protect_state == null)
 | 
			
		||||
    return;
 | 
			
		||||
  for (var i = 0; i < data_protect_state.length; i++) {
 | 
			
		||||
    filter_table.append(
 | 
			
		||||
      '<div class= "form-check">' +
 | 
			
		||||
      '<input class="form-check-input" type="checkbox" value="' + data_protect_state[i].index +
 | 
			
		||||
      '" id="protect_filter_id_' + data_protect_state[i].index + '" ' +
 | 
			
		||||
      (data_protect_state[i].show ? 'checked' : '') + '>' +
 | 
			
		||||
      '<label class="form-check-label" for="protect_filter_id_' + data_protect_state[i].index + '">' +
 | 
			
		||||
      data_protect_state[i].index + ' ' + data_protect_state[i].name +
 | 
			
		||||
      '</label></div>'
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
function read_filter() {
 | 
			
		||||
  for (var i = 0; i < data_protect_state.length; i++) {
 | 
			
		||||
    if (filter_table.find('#protect_filter_id_' + data_protect_state[i].index).is(':checked'))
 | 
			
		||||
      data_protect_state[i].show = true;
 | 
			
		||||
    else
 | 
			
		||||
      data_protect_state[i].show = false;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										111
									
								
								Site/js/tech_cycle.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								Site/js/tech_cycle.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,111 @@
 | 
			
		||||
var tech_cycle_table = $('#tech_cycle_table');
 | 
			
		||||
var data_tech_cycle = null;
 | 
			
		||||
var params_tech_cycle_name = null;
 | 
			
		||||
var params_tech_cycle_color = null;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//Первая загрузка страницы
 | 
			
		||||
$(document).ready(
 | 
			
		||||
  async function () {
 | 
			
		||||
    var flag_pasport_load = await get_url_params();
 | 
			
		||||
    pasport_fill_label();
 | 
			
		||||
    pasport_show_lable();
 | 
			
		||||
    if (!flag_pasport_load)
 | 
			
		||||
      return;
 | 
			
		||||
    show_menu();
 | 
			
		||||
    if (!pasport_fill_date())
 | 
			
		||||
      return;
 | 
			
		||||
    pasport_show_date();
 | 
			
		||||
 | 
			
		||||
    var tc_data = load_data_tech_cycle();
 | 
			
		||||
    var tc_name = load_params_tech_cycle_name();
 | 
			
		||||
    var tc_color = load_params_tech_cycle_color();
 | 
			
		||||
    await Promise.all([tc_data, tc_name, tc_color]);
 | 
			
		||||
    if (tc_data)
 | 
			
		||||
      fill_table_tech_cycle();
 | 
			
		||||
  }
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
async function load_data_tech_cycle() {
 | 
			
		||||
  try {
 | 
			
		||||
    var res = await $.ajax({
 | 
			
		||||
      type: "POST",
 | 
			
		||||
      url: 'https://vsmpo.mbucb.ru/api/date/gettechcycle',
 | 
			
		||||
      contentType: "application/json; charset=utf-8",
 | 
			
		||||
      dataType: "json",
 | 
			
		||||
      data: JSON.stringify({
 | 
			
		||||
        "vdp": pasport_data.numVDP,
 | 
			
		||||
        "start": pasport_data.dStart,
 | 
			
		||||
        "end": pasport_data.dEnd
 | 
			
		||||
      })
 | 
			
		||||
    });
 | 
			
		||||
    data_tech_cycle = res.techCycle;
 | 
			
		||||
    return true;
 | 
			
		||||
  }
 | 
			
		||||
  catch (err) {
 | 
			
		||||
    data_tech_cycle = null;
 | 
			
		||||
    alert("Ошибка загрузки тех. цикла");
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
async function load_params_tech_cycle_name() {
 | 
			
		||||
  try {
 | 
			
		||||
    var res = await $.ajax({
 | 
			
		||||
      type: "POST",
 | 
			
		||||
      url: 'https://vsmpo.mbucb.ru/api/params/gettechcyclename',
 | 
			
		||||
      contentType: "application/json; charset=utf-8",
 | 
			
		||||
      dataType: "json",
 | 
			
		||||
      data: JSON.stringify({})
 | 
			
		||||
    });
 | 
			
		||||
    params_tech_cycle_name = res.name;
 | 
			
		||||
    return true;
 | 
			
		||||
  }
 | 
			
		||||
  catch (err) {
 | 
			
		||||
    params_tech_cycle_name = null;
 | 
			
		||||
    alert("Ошибка загрузки имен тех. цикла");
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
async function load_params_tech_cycle_color() {
 | 
			
		||||
  try {
 | 
			
		||||
    var res = await $.ajax({
 | 
			
		||||
      type: "POST",
 | 
			
		||||
      url: 'https://vsmpo.mbucb.ru/api/params/gettechcyclecolor',
 | 
			
		||||
      contentType: "application/json; charset=utf-8",
 | 
			
		||||
      dataType: "json",
 | 
			
		||||
      data: JSON.stringify({})
 | 
			
		||||
    });
 | 
			
		||||
    params_tech_cycle_color = res.color;
 | 
			
		||||
    return true;
 | 
			
		||||
  }
 | 
			
		||||
  catch (err) {
 | 
			
		||||
    params_tech_cycle_color = null;
 | 
			
		||||
    alert("Ошибка загрузки цветов тех. цикла");
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function fill_table_tech_cycle() {
 | 
			
		||||
  for (var i = 0; i < data_tech_cycle.length; i++) {
 | 
			
		||||
    var color = params_tech_cycle_color != null ?
 | 
			
		||||
      params_tech_cycle_color.find(item => item.index == data_tech_cycle[i].index) :
 | 
			
		||||
      '#ffffff';
 | 
			
		||||
    color = color != undefined ? color.color : '#ffffff';
 | 
			
		||||
 | 
			
		||||
    var name = params_tech_cycle_name != null ?
 | 
			
		||||
      params_tech_cycle_name.find(item => item.index == data_tech_cycle[i].index) :
 | 
			
		||||
      'Технологический цикл №' + data_tech_cycle[i].index;
 | 
			
		||||
    name = name != undefined ?
 | 
			
		||||
      name = name.name :
 | 
			
		||||
      'Технологический цикл №' + data_tech_cycle[i].index;
 | 
			
		||||
    tech_cycle_table.find('tbody').append(
 | 
			
		||||
      '<tr style="background-color : ' + color + '20;">' +
 | 
			
		||||
      '<td>' + (i + 1) +
 | 
			
		||||
      '</td>' +
 | 
			
		||||
      '<td>' + data_tech_cycle[i].start +
 | 
			
		||||
      '</td>' +
 | 
			
		||||
      '<td>' + name +
 | 
			
		||||
      '</td>' +
 | 
			
		||||
      '</tr>');
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user