Смена Тарифного плана в Личном кабинете

Материал из BiTel WiKi

Перейти к: навигация, поиск

Будем делать очень функциональный интерфейс пользователя для смены тарифа!

Содержание

BGBillingCliet - Конфиг.ТП

И так в BGBillingCliet - в редакторе ТП заходим в Конфиг.ТП и добавляем все необходимые переменные для дальнейшего применения. Комментировать что и зачем думаю излишне (они уже есть в следующем разделе), просто все от полного описания до некоторых деталей!

Как заметили некоторые полезные HTML-теги пролетают с пользой

description=Smart - серия тарифов без абонентской платы, пользуйтесь сетью Интернетом столько сколько нужно.<br/>
            Smart-2G - без абонентской платы, на скорости 1024 кб/с вы получаете трафик по различной цене.<br/>
            От 1 Мб до 2000Мб по 24 сум., 
            от 2001 Мб до 3000Мб по 20 сум., 
            от 3001 Мб до 4000Мб по 16 сум., 
            и от 4001Мб по 12.0 сум за 1 Мб.
comment=Без Абон.платы 1Мб/24-12
NPay=Без абн. платы
Limit=от 0 до 2000 по 24 сум<br/>от 2001 до 3000 по 20 сум<br/>от 3001 до 4000 по 16 сум
Speed=до 1024 кб/с
upPrice=12
Создаем конфиг.

Отображение текста в правильной локале

Соблюдая правила написания кода потребовалось расширить раздел tarifs в Locale.properties. Но все писать нужно в Locale_ru_RU.properties и по рекомендации разработчиков создаем Locale_ru_RU.properties.orig В коде ниже я привожу пример для файла Locale-UTF8_ru_RU.properties потом его необходимо привести в правильный вид командой:

#encode:
 /opt/java/jdk8/bin/native2ascii -encoding UTF-8 Locale-UTF8_ru_RU.properties Locale_ru_RU.properties
# tariffs
#Заголовок описания ТП
tariffs.report.description=Описание тарифного плана
#Параметр сравнения
tariffs.compare.descriptTitle=Параметры сравнения
#Текущее значение
tariffs.compare.chooseTitle=Текущее значение
#Новое значение
tariffs.compare.changeTitle=Новое значение
#Абонентская плата
tariffs.compare.NPay=Абонентская плата
#Выделенный лимит
tariffs.compare.Limit=Выделенный лимит
#Скорость канала
tariffs.compare.Speed=Скорость канала
#Цена сверх лимита
tariffs.compare.upPrice=Цена сверх лимита

Правим tariffs.xhtml

Далее работаем в tariffs.xhtml. Он располагается в папке MyBGBilling.war/WEB-INF/content/kernel Для начала добавим колонку с описанием текущих тарифов!

# это есть! строка 24 в исходном файле
             <h:column>
               <f:facet name="header">#{msg['tariffs.report.title']}</f:facet> 
                        #{tariffBean.getTariffPlanTitle( s.tariffPlanId, s.title )}
             </h:column>
# Это добавляем!
             <h:column>
               <f:facet name="header">#{msg['tariffs.report.description']}</f:facet>
               <h:outputText
                 value="#{tariffBean.getTariffPlan( s.tariffPlanId ).configPreferences.get('description','')}" escape="false" />
             </h:column>
# до сих пор наш код Колонки описания!
             <h:column>
               <f:facet name="header">#{msg['tariffs.report.dateFrom']}</f:facet>


Далее добавляем еще одну таблицу!

Вывести таблицу нужно через <h:dataTable но так как это у меня не получилось, пришлось делал через HTML . Думаю разработчики сделают это более правильно в новых версиях сами.
# В разделе STEP=1 когда нажали кнопку "СМЕНИТЬ"
             <h:panelGroup rendered="#{tariffChangeBean.step gt 1}">
               <div class="form-group">
                 #{msg['tariffs.fromDate']}
                   <h:selectOneMenu id="fromDate" class="form-control input" value="#{tariffChangeBean.fromDate}" readonly="#{tariffChangeBean.step gt 3}">
                     <f:convertDateTime type="date" dateStyle="medium" />
                     <f:selectItem itemLabel="#{msg['tariffs.chooseDate']}" itemValue="" noSelectionOption="true"></f:selectItem>
                     <f:selectItems value="#{tariffChangeBean.availableDateList}" var="date" itemLabel="#{date}" itemValue="#{date}" />
                     <f:ajax render=":tariffChange" />
                   </h:selectOneMenu>
               </div>
# Добавляем нашу таблицу!                        <!-- Описание перехода с ТП на ТП -->
               <div class="form-group">
                 <h:outputText
                   value="#{tariffBean.getTariffPlan( tariffChangeBean.toTariffPlanId ).configPreferences.get('description','')}" escape="false" />
                 <table class="table table-striped table-hover">
                   <thead>
                      <tr>
                        <th scope="col">#{msg['tariffs.compare.descriptTitle']}</th>
                        <th scope="col">#{msg['tariffs.compare.chooseTitle']}</th>
                        <th scope="col">#{msg['tariffs.compare.changeTitle']}</th>
                      </tr>
                   </thead>
                   <tbody>
                     <tr>
                       <td><h:outputText value="#{msg['tariffs.compare.NPay']}" escape="false" /></td>
                       <td><h:outputText value="#{tariffBean.getTariffPlan( tariffChangeBean.fromContractTariff.tariffPlanId )
                              .configPreferences.get('NPay','')}" escape="false" /></td>
                       <td><h:outputText value="#{tariffBean.getTariffPlan( tariffChangeBean.toTariffPlanId )
                              .configPreferences.get('NPay','')}" escape="false" /></td>
                     </tr>
                     <tr>
                        <td><h:outputText value="#{msg['tariffs.compare.Limit']}" escape="false" /></td>
                        <td><h:outputText value="#{tariffBean.getTariffPlan( tariffChangeBean.fromContractTariff.tariffPlanId )
                              .configPreferences.get('Limit','')}" escape="false" /></td>
                        <td><h:outputText value="#{tariffBean.getTariffPlan( tariffChangeBean.toTariffPlanId )
                              .configPreferences.get('Limit','')}" escape="false" /></td>
                     </tr>
                     <tr>
                        <td><h:outputText value="#{msg['tariffs.compare.Speed']}" escape="false" /></td>
                        <td><h:outputText value="#{tariffBean.getTariffPlan( tariffChangeBean.fromContractTariff.tariffPlanId )
                              .configPreferences.get('Speed','')}" escape="false" /></td>
                        <td><h:outputText value="#{tariffBean.getTariffPlan( tariffChangeBean.toTariffPlanId )
                              .configPreferences.get('Speed','')}" escape="false" /></td>
                     </tr>
                     <tr>
                        <td><h:outputText value="#{msg['tariffs.compare.upPrice']}" escape="false" /></td>
                        <td><h:outputText value="#{tariffBean.getTariffPlan( tariffChangeBean.fromContractTariff.tariffPlanId )
                              .configPreferences.get('upPrice','')}" escape="false" /></td>
                        <td><h:outputText value="#{tariffBean.getTariffPlan( tariffChangeBean.toTariffPlanId )
                              .configPreferences.get('upPrice','')}" escape="false" /></td>
                     </tr>
                   </tbody>
                 </table>
               </div>
             </h:panelGroup>
# Вот до сих пор. Дальше STEP=3 туда нам не надо!
             <h:panelGroup rendered="#{tariffChangeBean.step == 3}">

Краткий комментарий

Краткий комментарий для ориентира в комбобоксе при выборе ТП Прямо в f:selectItems туда вставляем comment от ТП - краткое описание, очень краткое!

#это до таблицы
                     <f:selectItems value="#{tariffBean.getAvailableTariffPlanList( tariffChangeBean.fromContractTariff )}" 
                                    var="tariffPlan"
                                    itemLabel="#{tariffBean.getTariffPlanTitle( tariffPlan.id )} 
                                               (#{tariffPlan.configPreferences.get('comment','')})" 
                                    itemValue="#{tariffPlan.id}" />

Наш результат

Результат

З.Ы. Табуляция в приведенных фрагментах кода немножко модифицирована для wiki, но при Past-Copy проблем быть не должно.
Личные инструменты