И снова Почта РФ..

Вот уже больше месяца, Почта РФ глобально обновляет своё ПО в подразделениях. Как результат — платежи организации где я работаю в настоящий момент, не принимаются ни в одном отделении. Стучание во все доступные инстанции приводит к нулевому результату. Хорошо, что я мудрый человек и изначально когда заключали договор с Почтой РФ предупредил, что не нужно особо рекламировать оплату посредством Почты ибо структура не понятная, не поворотливая и главное что когда с ними общаешся, возникает стойкое ощущение, что им ты как контрагент не нужен вовсе.

Плагин для jqGrid для сохранения и восстановления состояния колонок в локальном хранилище

Данный плагин разработан для сохранения состояния колонок таблиц jqgrid при перезагрузке страницы. Сохраняет/восстанавливает состояние колонок: скрыт/не скрыт и ширину. Более ничего. В принципе легко доработать для получения возможности сохранения любых других параметров.

Пример использования:

  jQuery("#fininetinfo").jqGrid({
   	url:'tinfo.php?orgid='+defaultorgid+"&blibase="+$("#blibase").val()+"&agrm_id="+agrm_id,
	datatype: "json",
   	colNames:['id','Сумма','Тариф','Период','Дата нач.'],
   	colModel:[   		
   		{name:'record_id'   ,index:'record_id'      , width:15,search: false,hidden:true,fixed:true},
   		{name:'amount'      ,index:'amount'         , width:55,editable:false,search: true,fixed:true},
                {name:'tarif'       ,index:'tarif'        , width:60,editable:false,search: true},
                {name:'period'      ,index:'period'         , width:60,editable:true,search: false,fixed:true},                                
                {name:'dateofcharge',index:'dateofcharge'   , width:60,editable:false,search: true,fixed:true}

   	],     
	resizeStop: function() {
	    $("#fininetinfo").saveCommonParam("fininetinfo");
	},		
	gridComplete:function() {			    
	    $("#fininetinfo").loadCommonParam("fininetinfo");
	},	
...
...

Команды:

$("селектор").saveCommonParam("уникальный идентификатор");  //сохраняем данные по колонкам

$("селектор").loadCommonParam("уникальный идентифкатор использованный в saveCommonParam"); // загрузить данные по колонкам.

Собственно сам плагин:

$(function() {         
    $.jgrid.extend({
	setColWidth: function (iCol, newWidth, adjustGridWidth) {
	    return this.each(function () {
		var $self = $(this), grid = this.grid, p = this.p, colName, colModel = p.colModel, i, nCol;
		if (typeof iCol === "string") {
		    colName = iCol;
		    for (i = 0, nCol = colModel.length; i < nCol; i++) {
			if (colModel[i].name === colName) {
			    iCol = i;
			    break;
			}
		    }
		    if (i >= nCol) {
			return; 
		    }
		} else if (typeof iCol !== "number") {
		    return;
		}
		grid.resizing = { idx: iCol };
		grid.headers[iCol].newWidth = newWidth;
		grid.newWidth = p.tblwidth + newWidth - grid.headers[iCol].width;
		grid.dragEnd(); 
		if (adjustGridWidth !== false) {
		    $self.jqGrid("setGridWidth", grid.newWidth, false); 
		}
	    });
	}
    });  
    $.jgrid.extend({
	saveCommonParam: function(stname){	    
	     colarray=$(this).jqGrid('getGridParam','colModel');
	     localStorage.setItem(stname, JSON.stringify(colarray));
	     console.log(JSON.stringify(colarray));	     
	},
	loadCommonParam: function(stname){	    	
	    if (localStorage[stname]!=undefined) {
		colarray=localStorage[stname];
		if (colarray!=""){
		    obj_for_load=JSON.parse(colarray);   // загружаем JSON в массив     
		    for (i in obj_for_load) {
			//console.log("name:",obj_for_load[i].name);
			//console.log("width:",obj_for_load[i].width);			
			if  (obj_for_load[i].hidden==true){
			   $(this).hideCol(obj_for_load[i].name);
			} else {
			   $(this).showCol(obj_for_load[i].name);
			   if (obj_for_load[i].fixed==true){
				$(this).setColWidth(obj_for_load[i].name, obj_for_load[i].width);
			   };
			}			
		    };    
		}
	    } else {
		console.log("в локальном хранилище не найден ключ "+stname);
	    };
	}
    });
});

У МТС какой-то странный маркетинг..

Несколько лет в подряд, пользовался домашним интернетом от МТС. И всё б хорошо — но тут они раз — и подняли тариф (с Января 2016). Сделали вместо 300р — 350 рублей. Это при том, что в подьезде висят тарифы конкурента (Билайн) с цифрой 300р. Странно — подумал я.  Но всё-таки на всякий случай позвонил в МТС и поинтересовался, а есть ли возможность оставить тариф за 300 руб? Нет? Ну тогда я пошел в Билайн… Что собственно и сделал..

Ноябрь 2016. Звонок от МТС:

— Вы уже не пользуетесь услугами интернет от МТС?

-Нет.

-Почему?

— Потому вы подняли мне тариф с 300 до 350, а у Билайна тарифы так и остались по 300. Альтернативы когда я вам звонил, перед переходом вы предложить не могли.

Ну, думаю, сейчас они покаются, и предложат что-то типа «Вернись, я все прощу, вот тебе тариф дешевле и роутер в подарок». А вот хрен вам. Слышу:

— А. Ну ладно.

И вешают трубку..

P.S. Я не упоминаю скорости в тарифах, потому что мне совершенно без разницы: 15 у меня мегабит и 50. При скоростях выше 5 мегабит, для меня важна цена, а не за сколько минут я качну фильм.

jqGrid — изменение ширины столбца после построения таблицы

Штатно существующий в jqGrid метод setColProp,

$("#list2").jqGrid('setColProp','mobile',{width:1111});

не работает после построения таблицы. Одним из выходов может быть написание расширения:

$.jgrid.extend({
    setColWidth: function (iCol, newWidth, adjustGridWidth) {
        return this.each(function () {
            var $self = $(this), grid = this.grid, p = this.p, colName, colModel = p.colModel, i, nCol;
            if (typeof iCol === "string") {
                colName = iCol;
                for (i = 0, nCol = colModel.length; i < nCol; i++) {
                    if (colModel[i].name === colName) {
                        iCol = i;
                        break;
                    }
                }
                if (i >= nCol) {
                    return; 
                }
            } else if (typeof iCol !== "number") {
                return;
            }
            grid.resizing = { idx: iCol };
            grid.headers[iCol].newWidth = newWidth;
            grid.newWidth = p.tblwidth + newWidth - grid.headers[iCol].width;
            grid.dragEnd(); 
            if (adjustGridWidth !== false) {
                $self.jqGrid("setGridWidth", grid.newWidth, false); 
            }
        });
    }
});

Тогда изменение ширины столбца сведется к виду:

$("#list2").setColWidth("mobile", 100);