Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Тестирование графика сравнения категорий по сумме финансовых операций 2 страница




@Named

@ViewScoped

public class DiaryPayBacking extends GridBacking<Pay> {

 

private static final long serialVersionUID = -3370333139341916306L;

 

@Inject

private DateBacking dateBacking;

 

@Inject

private ActionByDateService actionByDateService;

 

@Inject

private PayByDateService payByDateService;

 

@Override

protected Class<Pay> getType() {

return Pay.class;

}

 

@Override

protected Pay getNewBlank() {

Pay pay = new Pay();

pay.setDate(dateBacking.getDate());

return pay;

}

 

@Override

public Collection<Pay> getList() {

return payByDateService.getList(dateBacking.getDate());

}

 

public double getBalance() {

return actionByDateService.getList(dateBacking.getDate()).stream().mapToDouble(task -> task.getBalance()).sum();

}

}

DiaryRepayBacking.java

package ru.ulstu.secretary.grid;

 

import java.util.Collection;

 

import javax.faces.view.ViewScoped;

import javax.inject.Inject;

import javax.inject.Named;

 

import ru.ulstu.secretary.db.RepayByDateService;

import ru.ulstu.secretary.entity.Repay;

 

@Named

@ViewScoped

public class DiaryRepayBacking extends GridBacking<Repay> {

 

private static final long serialVersionUID = 8966176107954231754L;

 

@Inject

private DateBacking dateBacking;

 

@Inject

private RepayByDateService repayByDateService;

 

@Override

protected Class<Repay> getType() {

return Repay.class;

}

 

public Collection<Repay> getList() {

return repayByDateService.getList(dateBacking.getDate());

}

}

GridBacking.java

package ru.ulstu.secretary.grid;

 

import java.io.Serializable;

import java.util.Collection;

 

import javax.annotation.PostConstruct;

import javax.inject.Inject;

 

import ru.ulstu.secretary.db.EntityService;

 

public abstract class GridBacking<Entity> implements Serializable {

 

private static final long serialVersionUID = -2639437488394357753L;

 

@Inject

private EntityService entityService;

 

private Entity blank;

 

@PostConstruct

private void init() throws Exception {

blank = getNewBlank();

}

 

protected abstract Class<Entity> getType();

 

protected Entity getNewBlank() throws Exception {

return getType().getConstructor().newInstance();

}

 

public Collection<Entity> getList() {

return entityService.getList(getType());

}

 

public Entity getBlank() {

return blank;

}

 

public void save() throws Exception {

entityService.save(blank);

blank = getNewBlank();

}

 

public void remove(Entity obj) {

entityService.remove(obj);

}

}

PayBacking.java

package ru.ulstu.secretary.grid;

 

import javax.faces.view.ViewScoped;

import javax.inject.Named;

 

import ru.ulstu.secretary.entity.Pay;

import static ru.ulstu.secretary.utils.DateUtil.getToday;

 

@Named

@ViewScoped

public class PayBacking extends GridBacking<Pay> {

 

private static final long serialVersionUID = -520158973748994729L;

 

@Override

protected Class<Pay> getType() {

return Pay.class;

}

 

protected Pay getNewBlank() {

Pay pay = new Pay();

pay.setDate(getToday());

return pay;

}

 

public int getCount() {

return getList().size();

}

 

public double getBalance() {

return getList().stream().mapToDouble(pay -> pay.getBalance()).sum();

}

}

RepayBacking.java

package ru.ulstu.secretary.grid;

 

import java.util.Collection;

 

import javax.faces.view.ViewScoped;

import javax.inject.Inject;

import javax.inject.Named;

 

import ru.ulstu.secretary.entity.Repay;

 

@Named

@ViewScoped

public class RepayBacking extends GridBacking<Repay> {

 

private static final long serialVersionUID = -5042825198701507477L;

 

@Inject

private DebtBacking debtBacking;

 

@Override

protected Class<Repay> getType() {

return Repay.class;

}

 

@Override

public Collection<Repay> getList() {

return debtBacking.getDebt() == null? null: debtBacking.getDebt().getRepays();

}

}

TodayBacking.java

package ru.ulstu.secretary.grid;

 

import java.io.Serializable;

 

import javax.faces.view.ViewScoped;

import javax.inject.Inject;

import javax.inject.Named;

 

import ru.ulstu.secretary.db.TaskByDateService;

import ru.ulstu.secretary.utils.DateUtil;

 

@Named

@ViewScoped

public class TodayBacking implements Serializable {

 

private static final long serialVersionUID = -6983619217861517215L;

 

@Inject

private TaskByDateService taskByDateService;

 

public int getCount() {

return taskByDateService.getList(DateUtil.getToday()).size();

}

}

DateUtil.java

package ru.ulstu.secretary.utils;

 

import java.util.Calendar;

import java.util.Date;

import java.util.GregorianCalendar;

 

public class DateUtil {

 

public static Date getToday() {

Calendar calendar = new GregorianCalendar();

calendar.set(Calendar.HOUR_OF_DAY, 0);

calendar.set(Calendar.MINUTE, 0);

calendar.set(Calendar.SECOND, 0);

calendar.set(Calendar.MILLISECOND, 0);

return calendar.getTime();

}

}

Balance.xhtml

<ui:composition template="/WEB-INF/tpl/base.xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui" xmlns:s="http://java.sun.com/jsf/composite/secretary">

<ui:define name="title">#{i18n.balance}</ui:define>

<ui:define name="body">

<s:chart backing="#{balanceBacking}"/>

</ui:define>

</ui:composition>

Category.xhtml

<ui:composition template="/WEB-INF/tpl/base.xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui" xmlns:s="http://java.sun.com/jsf/composite/secretary">

<ui:define name="title">#{i18n.category}</ui:define>

<ui:define name="body">

<s:chart backing="#{categoryBalanceBacking}" hasPeriod="false"/>

</ui:define>

</ui:composition>

Day.xhtml

<ui:composition template="/WEB-INF/tpl/base.xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:s="http://java.sun.com/jsf/composite/secretary">

<ui:define name="title">#{i18n.day}</ui:define>

<ui:define name="body">

<s:chart backing="#{dayBacking}"/>

</ui:define>

</ui:composition>

Debt.xhtml

<ui:composition template="/WEB-INF/tpl/base.xhtml" xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:a="http://xmlns.jcp.org/jsf/passthrough" xmlns:s="http://java.sun.com/jsf/composite/secretary">

<ui:define name="title">Debt</ui:define>

<ui:define name="body">

<s:grid name="debt" backing="#{debtBacking}"/>

<s:grid name="repay" backing="#{repayBacking}" editable="false"/>

</ui:define>

</ui:composition>

Diary.xhtml

<ui:composition template="/WEB-INF/tpl/base.xhtml" xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:a="http://xmlns.jcp.org/jsf/passthrough" xmlns:s="http://java.sun.com/jsf/composite/secretary">

<ui:define name="title">#{i18n.diary}</ui:define>

<ui:define name="body">

<div class="panel panel-info">

<div class="panel-heading"><span class="glyphicon glyphicon-calendar"/> #{i18n.date}</div>

<div class="panel-body">

<div class="form-inline">

<h:inputText styleClass="form-control" value="#{dateBacking.date}">

<f:convertDateTime pattern="yyyy-MM-dd"/>

</h:inputText>

<h:commandButton styleClass="btn btn-primary" value="#{i18n.see}"/>

</div>

</div>

</div>

<s:grid name="diary" backing="#{diaryPayBacking}"/>

<s:grid name="repay" backing="#{diaryRepayBacking}" editable="false"/>

<div class="panel panel-info">

<div class="panel-heading"><span class="glyphicon glyphicon-ok"/> #{i18n.total}</div>

<div class="panel-body">

<p><strong>#{i18n.balance}</strong>: #{diaryPayBacking.balance}</p>

</div>

</div>

</ui:define>

</ui:composition>

Pay.xhtml

<ui:composition template="/WEB-INF/tpl/base.xhtml" xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui" xmlns:s="http://java.sun.com/jsf/composite/secretary">

<ui:define name="title">#{i18n.pay}</ui:define>

<ui:define name="body">

<s:grid name="pay" backing="#{payBacking}"/>

<div class="panel panel-info">

<div class="panel-heading"><span class="glyphicon glyphicon-ok"/> #{i18n.total}</div>

<div class="panel-body">

<p><strong>#{i18n.count}</strong>: #{payBacking.count}</p>

</div>

</div>

</ui:define>

</ui:composition>

Unpaid.xhtml

<ui:composition template="/WEB-INF/tpl/base.xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:s="http://java.sun.com/jsf/composite/secretary">

<ui:define name="title">#{i18n.unpaid}</ui:define>

<ui:define name="body">

<s:chart backing="#{unpaidBacking}"/>

</ui:define>

</ui:composition>

Chart.xhtml

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:c="http://java.sun.com/jsf/composite" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui" xmlns:f="http://java.sun.com/jsf/core">

<c:interface>

<c:attribute name="backing"/>

<c:attribute name="hasPeriod" default="true"/>

</c:interface>

<c:implementation>

<ui:fragment rendered="#{cc.attrs.hasPeriod}">

<div class="panel panel-info">

<div class="panel-heading"><span class="glyphicon glyphicon-calendar"/> #{i18n.date}</div>

<div class="panel-body">

<div class="form-inline">

<h:inputText styleClass="form-control" value="#{cc.attrs.backing.from}">

<f:convertDateTime pattern="yyyy-MM-dd"/>

</h:inputText>

<h:inputText styleClass="form-control" value="#{cc.attrs.backing.to}">

<f:convertDateTime pattern="yyyy-MM-dd"/>

</h:inputText>

<p:commandButton styleClass="btn btn-primary" ajax="none" value="#{i18n.see}"/>

</div>

</div>

</div>

</ui:fragment>

<div class="panel panel-info" style="overflow: hidden">

<div class="panel-heading"><span class="glyphicon glyphicon-th-list"/> #{i18n.graphics}</div>

<div class="panel-body">

<p:chart type="bar" model="#{cc.attrs.backing.model}"/>

</div>

</div>

<div class="panel panel-info">

<div class="panel-heading"><span class="glyphicon glyphicon-ok"/> #{i18n.total}</div>

<div class="panel-body">

<p><p:commandButton styleClass="btn btn-primary" action="#{cc.attrs.backing.redirect(cc.attrs.backing.min)}" value="#{i18n.see}"/> #{i18n.min}: #{cc.attrs.backing.minValue}</p>

<p><p:commandButton styleClass="btn btn-primary" action="#{cc.attrs.backing.redirect(cc.attrs.backing.max)}" value="#{i18n.see}"/> #{i18n.max}: #{cc.attrs.backing.maxValue}</p>

</div>

</div>

</c:implementation>

</html>

Grid.xhtml

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:c="http://java.sun.com/jsf/composite" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui" xmlns:f="http://java.sun.com/jsf/core">

<c:interface>

<c:attribute name="name"/>

<c:attribute name="backing"/>

<c:attribute name="icon" default="glyphicon glyphicon-th-list"/>

<c:attribute name="editable" default="true"/>

</c:interface>

<c:implementation>

<div class="panel panel-info">

<div class="panel-heading"><span class="#{cc.attrs.icon}"/> #{i18n[cc.attrs.name]}</div>

<p:dataTable tableStyleClass="table" value="#{cc.attrs.backing.list}" var="obj">

<ui:include src="/WEB-INF/grid/#{cc.attrs.name}.xhtml"/>

<p:column rendered="#{cc.attrs.editable}" style="width: 1%">

<p:commandButton style="display: inline-block" value="" ajax="none" icon="glyphicon glyphicon-remove" styleClass="btn btn-danger" action="#{cc.attrs.backing.remove(obj)}"/>

<f:facet name="footer">

<p:commandButton style="display: inline-block" value="" ajax="none" icon="glyphicon glyphicon-plus" styleClass="btn btn-primary" action="#{cc.attrs.backing.save}"/>

</f:facet>

</p:column>

</p:dataTable>

</div>

</c:implementation>

</html>

Debt.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui" xmlns:h="http://java.sun.com/jsf/html" xmlns:a="http://xmlns.jcp.org/jsf/passthrough" xmlns:f="http://java.sun.com/jsf/core">

<ui:include src="/WEB-INF/grid/pay.xhtml"/>

<p:column headerText="#{i18n.deadline}">

<h:outputText value="#{obj.deadline}">

<f:convertDateTime pattern="yyyy-MM-dd"/>

</h:outputText>

<f:facet name="footer">

<h:inputText styleClass="form-control" value="#{cc.attrs.backing.blank.deadline}" a:placeholder="#{i18n.deadline}">

<f:convertDateTime pattern="yyyy-MM-dd"/>

</h:inputText>

</f:facet>

</p:column>

<p:column headerText="#{i18n.repay}">

#{obj.repay}

<f:facet name="footer">

<h:inputText styleClass="form-control" value="#{cc.attrs.backing.blank.repay}" a:placeholder="#{i18n.repay}"/>

 

</f:facet>

</p:column>

<p:column headerText="#{i18n.frequency}">

#{obj.frequency}

<f:facet name="footer">

<h:inputText styleClass="form-control" value="#{cc.attrs.backing.blank.frequency}" a:placeholder="#{i18n.frequency}"/>

</f:facet>

</p:column>

<p:column headerText="#{i18n.unit}">

#{i18n[obj.unit]}

<f:facet name="footer">

<h:selectOneMenu styleClass="form-control" value="#{cc.attrs.backing.blank.unit}">

<f:selectItems value="#{unitService.list}" var="unit" itemLabel="#{i18n[unit]}"/>

</h:selectOneMenu>

</f:facet>

</p:column>

</ui:composition>

Diary.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui" xmlns:h="http://java.sun.com/jsf/html" xmlns:a="http://xmlns.jcp.org/jsf/passthrough" xmlns:f="http://java.sun.com/jsf/core">

<p:column headerText="#{i18n.balance}">

#{obj.balance}

<f:facet name="footer">

<h:inputText styleClass="form-control" value="#{cc.attrs.backing.blank.balance}" a:placeholder="#{i18n.balance}"/>

</f:facet>

</p:column>

<p:column headerText="#{i18n.category}">

#{i18n[obj.category]}

<f:facet name="footer">

<h:selectOneMenu styleClass="form-control" value="#{cc.attrs.backing.blank.category}">

<f:selectItems value="#{categoryService.list}" var="category" itemLabel="#{i18n[category]}"/>

</h:selectOneMenu>

</f:facet>

</p:column>

<p:column headerText="#{i18n.comment}">

#{obj.comment}

<f:facet name="footer">

<h:inputText styleClass="form-control" value="#{cc.attrs.backing.blank.comment}" a:placeholder="#{i18n.comment}"/>

</f:facet>

</p:column>

</ui:composition>

Pay.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui" xmlns:h="http://java.sun.com/jsf/html" xmlns:a="http://xmlns.jcp.org/jsf/passthrough" xmlns:f="http://java.sun.com/jsf/core">

<p:column headerText="#{i18n.date}">

<h:outputText value="#{obj.date}">

<f:convertDateTime pattern="yyyy-MM-dd"/>

</h:outputText>

<f:facet name="footer">

<h:inputText styleClass="form-control" value="#{cc.attrs.backing.blank.date}" a:placeholder="#{i18n.date}">

<f:convertDateTime pattern="yyyy-MM-dd"/>

</h:inputText>

</f:facet>

</p:column>

<ui:include src="/WEB-INF/grid/diary.xhtml"/>

</ui:composition>

Repay.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui" xmlns:h="http://java.sun.com/jsf/html" xmlns:a="http://xmlns.jcp.org/jsf/passthrough" xmlns:f="http://java.sun.com/jsf/core">

<p:column headerText="#{i18n.date}">

<h:outputText value="#{obj.date}">

<f:convertDateTime pattern="yyyy-MM-dd"/>

</h:outputText>

<ui:fragment rendered="#{cc.attrs.editable}">

<f:facet name="footer">

<h:inputText styleClass="form-control" value="#{cc.attrs.backing.blank.date}" a:placeholder="#{i18n.date}">

<f:convertDateTime pattern="yyyy-MM-dd"/>

</h:inputText>

</f:facet>

</ui:fragment>

</p:column>

<p:column headerText="#{i18n.balance}">

#{obj.balance}

<ui:fragment rendered="#{cc.attrs.editable}">

<f:facet name="footer">

<h:inputText rendered="#{cc.attrs.editable}" styleClass="form-control" value="#{cc.attrs.backing.blank.balance}" a:placeholder="#{i18n.balance}"/>

</f:facet>

</ui:fragment>

</p:column>

</ui:composition>

Base.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core">

<h:head>

<title>#{i18n.appTitle}</title>

<h:outputScript library="bootstrap" name="js/bootstrap.min.js" />

<link rel="stylesheet" href="#{request.contextPath}/resources/bootstrap/css/bootstrap.min.css"/>

</h:head>

<h:body>

<div class="container-fluid">

<div class="navbar navbar-default">

<ul class="nav navbar-nav">

<li>

<h:link outcome="diary" style="#{todayBacking.count > 0? 'color: white; background: #E74C3C': ''}">

<span class="glyphicon glyphicon-exclamation-sign"/> #{todayBacking.count}

</h:link>

</li>

<li><h:link outcome="pay"><span class="glyphicon glyphicon-book"/> #{i18n.pay}</h:link></li>

<li><h:link outcome="debt"><span class="glyphicon glyphicon glyphicon-calendar"/> #{i18n.debt}</h:link></li>

<li class="dropdown">

<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-stats"/> #{i18n.graphics} <span class="caret"/></a>

<ul class="dropdown-menu" role="menu">

<li><h:link outcome="balance">#{i18n.balance}</h:link></li>

<li><h:link outcome="day">#{i18n.day}</h:link></li>

<li><h:link outcome="unpaid">#{i18n.unpaid}</h:link></li>

<li><h:link outcome="category">#{i18n.category}</h:link></li>

</ul>

</li>

</ul>

</div>

<div class="page-header">

<h1><ui:insert name="title"/></h1>

</div>

<h:form>

<p:messages/>

<ui:insert name="body"/>

</h:form>

</div>

</h:body>

</html>

Web.xml

 

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">

<servlet>

<servlet-name>Faces Servlet</servlet-name>

<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>Faces Servlet</servlet-name>

<url-pattern>*.xhtml</url-pattern>

</servlet-mapping>

<context-param>

<param-name>primefaces.THEME</param-name>

<param-value>none</param-value>

</context-param>

<context-param>

<param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>

<param-value>true</param-value>

</context-param>

</web-app>

Faces-config.xml

<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd" version="2.2">

<application>

<locale-config>

<default-locale>en</default-locale>

</locale-config>

<resource-bundle>

<base-name>ru.ulstu.secretary.i18n</base-name>

<var>i18n</var>

</resource-bundle>

</application>

</faces-config>

Persistence.xml

<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">

<persistence-unit name="secretaryPU" transaction-type="JTA">

<exclude-unlisted-classes>false</exclude-unlisted-classes>

<properties>

<property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>

<property name="javax.persistence.jdbc.url" value="jdbc:h2:mem:test"/>

<property name="javax.persistence.jdbc.user" value="sa"/>

<property name="javax.persistence.schema-generation.database.action" value="create" />

<property name="hibernate.show_sql" value="true"/>

</properties>

</persistence-unit>

</persistence>

I18n.properties

appTitle=Home Secretary

 

pay=Pay

diary=Diary

debt=Debt

repay=Repay

 

grid=Data

total=Total

 

date=Date

balance=Sum

category=Category

comment=Comment

action=Action

delete=Delete

complete=Complete

count=Count

graphics=Graphic

day=Day

deadline=Deadline

required=Required

frequency=Frequency

unit=Unit

year=Year

month=Month

week=Week

unpaid=Unpaid

 

add=Add

see=See

 

auto=Auto

home=Home

 

min=Min

max=Max

Приложение 2. Скриншоты интерфейса

Страница входа




Поделиться с друзьями:


Дата добавления: 2015-08-31; Просмотров: 303; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.23 сек.