вторник, 13 августа 2013 г.

Минус Фунт: Калькулятор можно заполнить несложным скриптом


Текст ниже первоначально предполагался к опубликованию на одном похудательном форуме по адресу: http://forum.s-body.com/index.php?topic=1181.75 . Название предполагалось такое "Удобная загрузка данных в калькулятор".

И сообщение было там размещено, но через 5 минут удалено модератором по просьбе лидера форума. Я успел сохранить на память его сообщение, которое также было удалено вслед за моим:
#87 : 12.08.2013 14:33
Предыдущий пост просьба немедленно удалить. Без объяснений по поводу. При необходимости автор волен разместить на любом другом сайте, в т.ч. и на дионе. Похожие мастырки там регулярно размещает некий <имярек>. Бог им всем в помощь.

Таким образом, автору (мне) дали волю на другой ресурс и автор этим воспользовался. В том числе и потому, что получил многочисленные просьбы в личных сообщениях от заинтересованных форумчан. Вот это "убитое" сообщение:

Всем привет!

Ранее в этой теме я написал следующее (в сообщении #76 : 28.06.2013 01:39):

Мои чисто пользовательские интерфейсные претензии к калькулятору МФ на сайте:

* неудобна необходимость вбивания данных за одну неделю дважды - сначала в качестве последней недели, а через неделю - в качестве предпоследней. Как было бы здорово, если бы последняя неделя автоматически перекидывалась в предпоследнюю при следующем сеансе расчета.

* вообще неудобна необходимость вбивания туда каких-либо цифр по отдельности - я хотел бы, чтобы несколько подряд идущих полей можно было заполнять при помощий операций копирования и вставки. Подряд идущие значения для вставки я при этом, разумеется, копировал бы из своего любимого Excel'я.

* калькулятор не позволяет ввести значения веса более 199.9 кг и калорийности более 3999 ккал. И, если вес меня в данном случае не сильно волнует (но как быть людям за 200?), то моя равновесная калорийность только по формуле получается порядка 3700 и при разгоне я ее наверняка превзойду и дойду до значений свыше 4000, которые мне ввести не удастся.

* нельзя перемещаться по полям весов и калорийности при помощи стрелок: я хочу ввести сначала столбик значений веса, а потом столбик значений калорийности, но приходится вводить данные парами "вес-калорийность", продвигаясь вправо и вниз при помощи клавиши Tab.
Сегодня я рад сообщить сообществу, что снимаю с повестки дня эти "претензии" и всем желающим предлагаю вполне удобный, без утомительного вбивания цифр, способ загрузки данных в поля он-лайн калькулятора МФ из таблицы Excel при помощи короткой программы (скрипта).

ВНИМАНИЕ! Предлагаемый метод не ущемляет ничьих интересов, не раскрывает и не обсуждает никакие секретные алгоритмы калькулятора, и ничего ни у кого "не ворует", скорее, наоборот - "мечет на стол" удобство, экономя драгоценное время пользователя. Деньги за расчет на калькуляторе по-прежнему придется платить, но теперь не придется сосредоточенно пыхтеть при скрупулезном вводе 29 значений вручную.

Бояться "сложности" метода не надо, самому ничего не придется программировать - я уже обо всём позаботился за вас. Нужно будет просто скопировать некий текст в одном месте, вставить его в другое и нажать Enter.

Первое место ("источник") - это ячейка Y4 в прилагаемом к этому сообщению файле Excel (файл виден и доступен только для зарегистрированных пользователей форума). Просто встаете на нее и выполняете обычную операцию копирования. Ячейка содержит формулу, при копировании же вы забираете в буфер обмена результат расчета по этой формуле.

Второе место ("назначение") - это адресная строка вашего интернет-браузера (IE или Firefox или любого другого вашего конкретного). В эту адресную строку и нужно будет вставить текст из ячейки, скопированной в Excel, вместо текущего содержимого адресной строки.

ВАЖНО! Перед тем как делать вставку в адресную строку браузера, убедитесь, что на странице отображается форма калькулятора с полями для ввода весов и калорийностей. Адрес при этом будет такой: http://www.minusfunt.ru/cabinet/calc (или .../calcstart - если используется калькулятор разгона). И, наверное, уже понятно, что запуск скрипта на другой произвольной web-странице не будет иметь никакого смысла.

После того, как текст из ячейки Excel окажется в адресной строке браузера, пользователь нажимает Enter. При этом система молниеносно заполняет поля калькулятора и выдает сообщение "Загружено!".

На самой странице калькулятора скрипт не сделает ничего сверх того, для чего он предназначен - он только заполнит поля весов и калорийностей. Указание режима (от -400 до +400), нажатия на кнопки "Стереть все" или "Рассчитать" - всё это действия, которые пользователь калькулятора должен будет по-прежнему проделать вручную. Поэтому после подтверждения сообщения "Загружено" следует произвести желаемые дальнейшие операции.

Приведу также сам текст скрипта, который в прилагаемом файле-примере формируется в ячейке Y4 (в основном для читателей-гостей, не имеющих доступа к файлу):

javascript: var v=[['142.4','142.1','142.2','142.2','142.4','142.0','142.1'],['141.4','141.4','141.3','141.2','141.0','140.7','140.6']]; var k=[[3300,3300,3300,3300,3306,3295,3299],[3387,3260,3254,3800,3227,3163,3008]]; for(i=1;i<3;i++) for(j=1;j<8;j++) { $('[name=v'+i+j+']').val(v[i-1][j-1]); $('[name=k'+i+j+']').val(k[i-1][j-1]); }; $('[name=v31]').val('140.4'); alert('Загружено!');

Даже не открывая файл Excel, уже можно потренироваться в использовании скрипта. Для этого надо выделить здесь этот красный текст, скопировать его и, открыв форму калькулятора, вставить в адресную строку браузера и нажать Enter (существует небольшая оговорка - см. P.S. в конце сообщения).

Как видно, значения весов (мои 141-142 кг) и калорийностей (мои примерно 3300 ккал) в коде хорошо просматриваются. При желании или необходимости подобная скриптовая строка может быть создана (отредактирована) самостоятельно и в обычном текстовом редакторе (без Excel).

Но все же в Excel формировать ее при помощи настроенных формул гораздо удобнее. Понятно, что для последующих недель отвечающие за скрипт формулы в столбцах W,X,Y могут быть легко скопированы (протянуты)  ниже по таблице. Через неделю вышележащая последняя строка автоматически становится предпоследней, автоматически же реализуя мою "хотелку" о вводе информации о весах и калорийности для каждой недели только один раз. Очевидно, что через неделю после использования значения ячейки Y4 нужно будет использовать значение ячейки Y5, потом Y6 и т.д.

Ну, и на сладкое - бонус за то, что вы осилили весь мой текст выше: при помощи представленного скрипта в калькулятор удается ввести значения свыше 199 кг и свыше 3999 ккал. Проверить можно самостоятельно.

P.S. ВАЖНО! Замечание из серии "Когда верстался номер".

Этот скрипт я отлаживал дома, используя браузер Microsoft Internet Explorer 8.0 (IE8). Всё замечательно получалось. Придя на работу и попробовав запустить его из браузера IE9, я обнаружил, что при вставке текста скрипта в адресную строку как-то само собой "съелось" начало текста, а именно слово "javascript:". Я не сразу это заметил, а лишь после того, как нажал Enter и получил на экране калькулятора совсем не то, что ожидал. Разбираясь в проблеме, я как раз и обнаружил это "съедание".

Погуглив по строке "в адресную строку не копируется слово javascript", я понял, что проблема существует не только у меня одного, а, грубо говоря, во всем мире. Самым простым её решением может быть самостоятельное дописывание слова с двоеточием "javascript:" в начало адресной строки после вставки. Если лень набирать всё слово, то можно копировать и вставлять строку скрипта без одного начального символа "j". В этом случае после вставки начало "avascript:" из строки не пропадает, и пользователю остается вручную добавить лишь один символ "j".

В общем, если у кого-нибудь возникнет подобная проблема, то, как говорится, извините за мелкое неудобство!

(конец "убитого" сообщения)

А вот и файл Excel с необходимыми формулами: https://docs.google.com/file/d/0B12BTJG-Ola4ZHBPbWo2aG1aT1E/edit?usp=sharing

ВНИМАНИЕ! Иногда при клике на этой ссылке выскакивает сообщение об ошибке. Бояться не надо, просто подтвердите его. Далее в пункте меню Файл на открывшейся странице (не путать с верхним Файл самого браузера) следует воспользоваться пунктом Скачать - и файл в вашем распоряжении.

2 комментария:

Анонимный комментирует...

огромное спасибо за проделанную работу! взято на вооружение. не очень люблю черные ящики, а тут он весь белый. и пушистый )

Empirical комментирует...

Большущее спасибище!