Changes between Initial Version and Version 1 of CatalogueCustom


Ignore:
Timestamp:
Feb 21, 2015 2:41:12 PM (10 years ago)
Author:
tolix
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • CatalogueCustom

    v1 v1  
     1
     2%(message)s
     3
     4{{{ #!html
     5
     6<script type="text/javascript">
     7
     8  function getPrice(el) {
     9    return parseFloat(el.parentNode.previousSibling.previousSibling.firstChild.nodeValue.replace(/\s/g, ''));
     10  }
     11
     12  function recalc(evt) {
     13    var el = evt.currentTarget;
     14    var price = getPrice(el);
     15    var amountDiv = el.nextSibling;
     16    if( amountDiv ) {
     17      var amountText = amountDiv.firstChild;
     18    }
     19    else {
     20      amountDiv = document.createElement('span');
     21      amountDiv.style.color = '#aaaaaa';
     22      el.parentNode.appendChild(amountDiv);
     23      var amountText = document.createTextNode('');
     24      amountDiv.appendChild(amountText);
     25    }
     26    amountText.nodeValue = ' = ' + (price * el.value).toFixed(2).toString();
     27    updateTotals();
     28  }
     29
     30  function updateTotals() {
     31    var formId = 'catalogue';
     32    var form = document.getElementById(formId);
     33    var totalAmount = 0;
     34    for(var i = 0; i < form.length; i++) {
     35      var el = form.elements[i];
     36      if( el.type == 'text' ) {
     37        totalAmount += getPrice(el) * el.value;
     38      }
     39    }
     40    var totalsEl = document.getElementById('totalAmount');
     41    if( totalsEl ) {
     42      totalsEl.firstChild.nodeValue = 'Итого: ' + totalAmount.toFixed(2).toString();
     43    }
     44  }
     45
     46  function digitsOnly(evt) {
     47    var theEvent = evt || window.event;
     48    var key = theEvent.keyCode || theEvent.which;
     49    key = String.fromCharCode(key);
     50    var regex = /[0-9]/;
     51    if( !regex.test(key) ) {
     52      theEvent.returnValue = false;
     53      if(theEvent.preventDefault)
     54        theEvent.preventDefault();
     55    }
     56  }
     57
     58</script>
     59
     60<style type="text/css">
     61  .store {
     62    border-collapse: collapse;
     63    border-style: solid;
     64    border-width: 1px;
     65    border-color: #aaaaaa;
     66    padding: 5px;
     67  }
     68
     69  .nolink {
     70    border: 0;
     71  }
     72
     73  .nolink:hover {
     74    background-color: transparent;
     75    border: 0;
     76  }
     77
     78  .shopping-cart-input {
     79    width: 40px;
     80    padding: 2px 2px 2px 20px;
     81    text-align: right;
     82    // background-image: url(/shopping_cart/mb-cart-96x96.png);
     83    // background-image: url(/shopping_cart/baroquon_Shopping_Cart.png);
     84    background-image: url(/shopping_cart/cart_16x15.png);
     85    background-repeat: no-repeat;
     86    background-position: left center;
     87    border-collapse: collapse;
     88    border-style: solid;
     89    border-width: 1px;
     90    border-color: #aaaaaa;
     91  }
     92</style>
     93
     94<form id="catalogue" method="POST">
     95<input type="hidden" name="order_id" value="%(order_id)s"/>
     96
     97<table class="store" style="width: 800px;">
     98<tr>
     99 <td class="store" align="center">Продукт</td>
     100 <td class="store" align="center">Цена</td>
     101 <td class="store" align="center">Количество</td>
     102</tr>
     103<tr>
     104 <td class="store" colspan="3" style="padding: 20px;" align="center"><a href="MonitoringService">Услуги мониторинга на платформе MonitorServer</a> (<a href="MonitoringServiceOffer">Договор-оферта</a>)<br/>(<a href="http://rsoc.ru/communication/register/license/?id=97250">лицензия</a> на предоставление телематических услуг связи №97250 от 15 марта 2012 г)</td>
     105</tr>
     106<tr>
     107 <td class="store">Базовый тариф, 1 месяц</td>
     108 <td class="store" align="center">300 руб/мес<sup>1</sup></td>
     109 <td class="store"> &times; <input name="monitoring_basic" class="shopping-cart-input"
     110  onkeyup="javascript:recalc(event)"
     111  onkeypress="javascript:digitsOnly(event)"></input></td>
     112</tr>
     113<tr>
     114 <td class="store"> + учет топлива, 1 месяц</td>
     115 <td class="store" align="center">200 руб/мес<sup>1</sup></td>
     116 <td class="store" style="width: 200px;"> &times; <input name="monitoring_fuel" class="shopping-cart-input"
     117  onkeyup="javascript:recalc(event)"
     118  onkeypress="javascript:digitsOnly(event)"></input></td>
     119</tr>
     120<tr>
     121 <td class="store"> + контроль рейсовой работы, 1 месяц</td>
     122 <td class="store" align="center">200 руб/мес<sup>1</sup></td>
     123 <td class="store"> &times; <input name="monitoring_routes" class="shopping-cart-input"
     124  onkeyup="javascript:recalc(event)"
     125  onkeypress="javascript:digitsOnly(event)"></input></td>
     126</tr>
     127<tr>
     128 <td class="store" colspan="3">
     129  <span style="font-size: 0.8em;"><sup>1</sup> при оплате за несколько месяцев предоставляются скидки</span>
     130 </td>
     131</tr>
     132<tr>
     133 <td class="store" colspan="3" style="padding: 20px;" align="center"><a href="/trac/wiki/MonitorServer">Программное обеспечение MonitorServer для установки на собственных вычислительных ресурсах.<br/>Базовый мониторинг + модуль учета топлива (неисключительное право)</a><sup>1</sup> (<a href="SoftwareLicenseOffer">Договор-оферта</a>)</td>
     134</tr>
     135<!--
     136<tr>
     137 <td class="store">Лицензия на 10 объектов, неограниченная по времени</td>
     138 <td class="store" align="center">13 000 руб<sup>2</sup></td>
     139 <td class="store"> &times; <input name="monitorserver_10" class="shopping-cart-input"
     140  onkeyup="javascript:recalc(event)"
     141  onkeypress="javascript:digitsOnly(event)"></input></td>
     142</tr>
     143<tr>
     144 <td class="store">Лицензия на 50 объектов, неограниченная по времени</td>
     145 <td class="store" align="center">26 000 руб<sup>2</sup></td>
     146 <td class="store"> &times; <input name="monitorserver_50" class="shopping-cart-input"
     147  onkeyup="javascript:recalc(event)"
     148  onkeypress="javascript:digitsOnly(event)"></input></td>
     149</tr>
     150<tr>
     151 <td class="store">Лицензия на 100 объектов, неограниченная по времени</td>
     152 <td class="store" align="center">39 000 руб<sup>2</sup></td>
     153 <td class="store"> &times; <input name="monitorserver_100" class="shopping-cart-input"
     154  onkeyup="javascript:recalc(event)"
     155  onkeypress="javascript:digitsOnly(event)"></input></td>
     156</tr>
     157<tr>
     158 <td class="store">Лицензия на 200 объектов, неограниченная по времени</td>
     159 <td class="store" align="center">74 750 руб<sup>2</sup></td>
     160 <td class="store"> &times; <input name="monitorserver_200" class="shopping-cart-input"
     161  onkeyup="javascript:recalc(event)"
     162  onkeypress="javascript:digitsOnly(event)"></input></td>
     163</tr>
     164<tr>
     165 <td class="store">Лицензия на 200..2000 объектов, неограниченная по времени</td>
     166 <td class="store" colspan="2"><a href="email:sales@monitorserver.ru">По запросу</a></td>
     167</tr>
     168-->
     169<tr>
     170 <td class="store">Лицензия без ограничения по времени<sup>1, 2</sup></td>
     171 <td class="store" colspan="2"><a href="email:sales@monitorserver.ru">По запросу</a></td>
     172</tr>
     173<tr>
     174 <td class="store" colspan="3">
     175  <span style="font-size: 0.8em;"><sup>1</sup> PostgreSQL версия поставляется только с вариантом технического сопровождения</span><br/>
     176  <span style="font-size: 0.8em;"><sup>2</sup> Действует партнерская программа для производителей/дистрибьюторов оборудования, системных интеграторов</span>
     177 </td>
     178</tr>
     179<tr>
     180 <td class="store" colspan="3" style="padding: 20px;" align="center"><a href="/trac/wiki/SupportOptions">Техническое сопровождение</a> (<a href="">Договор-оферта</a>)</td>
     181</tr>
     182<tr>
     183 <td class="store">Техническое сопровождение, годовая подписка</td>
     184 <td class="store" align="center">10 000 руб/год</td>
     185 <td class="store"> &times; <input name="subscription_10" class="shopping-cart-input"
     186  onkeyup="javascript:recalc(event)"
     187  onkeypress="javascript:digitsOnly(event)"></input></td>
     188</tr>
     189<tr>
     190 <td class="store">Техническая поддержка (уровень SLA 1..5), годовая подписка</td>
     191 <td class="store" colspan="2"><a href="email:sales@monitorserver.ru">По запросу</a></td>
     192</tr>
     193<tr>
     194 <td class="store">Техническая поддержка в формате «Консорциум», годовая подписка</td>
     195 <td class="store" colspan="2"><a href="email:sales@monitorserver.ru">По запросу</a></td>
     196</tr>
     197<tr>
     198 <td class="store" colspan="3" style="padding: 20px;" align="center"><a href="/trac/wiki/SupportedHardware">Оборудование для мониторинга</a></td>
     199</tr>
     200<tr>
     201 <td class="store">Бортовой модуль GPS/ГЛОНАСС (подбирается под задачи заказчика)</td>
     202 <td class="store" align="center">1 руб</td>
     203 <td class="store"> &times; <input name="tracker_mounting" class="shopping-cart-input"
     204  onkeyup="javascript:recalc(event)"
     205  onkeypress="javascript:digitsOnly(event)"></input>
     206 </td>
     207</tr>
     208<tr>
     209 <td class="store">Датчик уровня топлива (ДУТ) ёмкостной Epsilon 770 (RS232/485)</td>
     210 <td class="store" colspan="2"><a href="email:sales@monitorserver.ru">По запросу</a> (от 5 000 руб)</td>
     211</tr>
     212<tr>
     213 <td class="store">Датчик уровня топлива (ДУТ) ёмкостной OmniComm LLS-AF 20310</td>
     214 <td class="store" colspan="2"><a href="email:sales@monitorserver.ru">По запросу</a> (от 5 500 руб)</td>
     215</tr>
     216<tr>
     217 <td class="store">Датчик уровня топлива (ДУТ) ультразвуковой УЗИ 0.8</td>
     218 <td class="store" colspan="2"><a href="email:sales@monitorserver.ru">По запросу</a> (от 9 500 руб)</td>
     219</tr>
     220<tr>
     221 <td class="store">Бесконтактный считыватель CAN-шины CAN-Crocodile</td>
     222 <td class="store" colspan="2"><a href="email:sales@monitorserver.ru">По запросу</a> (от 4 000 руб)</td>
     223</tr>
     224<tr>
     225 <td class="store">Бесконтактный датчик импульсов форсунки (расходомер для бензиновых двигателей)</td>
     226 <td class="store" colspan="2"><a href="email:sales@monitorserver.ru">По запросу</a></td>
     227</tr>
     228<tr>
     229 <td class="store" colspan="3" style="padding: 20px;" align="center"><a href="">Монтаж оборудования</a></td>
     230</tr>
     231<tr>
     232 <td class="store">Установка автомобильного трекера на автомобиль</td>
     233 <td class="store" align="center">1 руб</td>
     234 <td class="store"> &times; <input name="tracker_mounting" class="shopping-cart-input"
     235  onkeyup="javascript:recalc(event)"
     236  onkeypress="javascript:digitsOnly(event)"></input></td>
     237</tr>
     238<tr>
     239 <td class="store">Установка ДУТ</td>
     240 <td class="store" align="center">2 000 руб</td>
     241 <td class="store"> &times; <input name="fuelsensor_mounting" class="shopping-cart-input"
     242  onkeyup="javascript:recalc(event)"
     243  onkeypress="javascript:digitsOnly(event)"></input></td>
     244</tr>
     245<tr>
     246 <td class="store">Настройка и тарировка ДУТ/топливного бака</td>
     247 <td class="store" align="center">1 000 руб</td>
     248 <td class="store"> &times; <input name="fuelsensor_setup" class="shopping-cart-input"
     249  onkeyup="javascript:recalc(event)"
     250  onkeypress="javascript:digitsOnly(event)"></input></td>
     251</tr>
     252<tr>
     253 <td colspan="3" align="right">
     254  <span id="totalAmount">Итого: 0</span>
     255  <button style="padding: 10px 20px 10px 20px; margin: 10px; align: right;">Оформить заказ &rarr;</button>
     256 </td>
     257</tr>
     258</table>
     259
     260</form>
     261
     262}}}