Roland Häder [Tue, 12 Mar 2019 13:16:24 +0000 (14:16 +0100)]
Don't cherry-pick:
- renamed more i18n strings to follow naming-convention
- rewrote p:link and p:column to have each attribute in separate line which
helps reading JSF views/templates
Roland Häder [Tue, 12 Mar 2019 13:08:51 +0000 (14:08 +0100)]
Please cherry-pick:
- rewrote p:column and p:link to have each attribute in a separate line which
helps reading JSF views/templates
- renamed ADMIN_ASSIGNED_USER_HEADER to ADMIN_USER_HEADER
- added more country i18n strings
Roland Häder [Mon, 28 Jan 2019 15:36:51 +0000 (16:36 +0100)]
Product-only:
- separated product-specific i18n keys to own files from project-specific
- converted some single-line JSF tags to multi-line to have each attribute in
a distinct line
Roland Häder [Sat, 22 Dec 2018 01:12:27 +0000 (02:12 +0100)]
Don't cherry-pick:
- used beanHelper.renderBasicData() instead of direct access to BasicData's
properties
- added 2nd parameter for beanHelper.renderBasicData()
- re-formatted JSF tag to have distinct lines for each attribute
Roland Häder [Sat, 22 Dec 2018 00:15:33 +0000 (01:15 +0100)]
Please cherry-pick:
- introduced 2nd parameter for beanHelper.renderBasicData() to include short or
long name in view components
- also use that method instead of invoking getter in same helper backing-bean
- re-aligned some JSF tags to have their attributes in distinct lines (easy to
add another)
Roland Häder [Thu, 20 Dec 2018 11:13:28 +0000 (12:13 +0100)]
Don't cherry-pick:
- converted single-line JSF tag to multi-line, having attributes in distinct
lines
- ID_NUMBER_HEADER is to long, just let us use ID_HEADER, allowing more space
for other columns
- removed spurious id attributes, thumb of a rule: only use them when really
needed and don't "over-id" everthing!
- removed no longer used i18n keys
Roland Häder [Thu, 20 Dec 2018 11:07:51 +0000 (12:07 +0100)]
Product-only:
- implemented allowDuplicates in product i18n key validator (default: FALSE)
- added it to product:genericProductForm tag (custom JSF tag)
- allowed "duplicates" in edit view, still the generic string validation applies)
- parentCategory is optional and must be set "manually" by setter
- removed clear() method (which sets NULL to all backing-bean fields/properties (?)
- realigned code a bit (createProductInstance())
Roland Häder [Thu, 13 Dec 2018 21:47:24 +0000 (22:47 +0100)]
Please cherry-pick:
- removed "id" where it is not explicitly needed
- removed process="@form" as later one hides a more serious bug (was wrong
scope)
- removed contenttype from f:view which makes rendering AJAX requests by
Primefaces trigger an exception
- rewrote single-line attributes to distinct lines (each attribute of a tag in
a separate line for better readability) in master.tpl
Roland Häder [Thu, 13 Dec 2018 21:40:35 +0000 (22:40 +0100)]
Product-only:
- converted ui:include template admin_form_product_data.tpl to custom JSF tag
product:genericProductForm
- introduced view-scoped action backing bean for Product entity which hold code
from request-scoped backing bean, this is required to have edit/delete/show
views working again
- removed beanProductHelper.product property and
notifyControllerProductConverted() in favor of copyAllProductProperties()
- renamed some language strings
Roland Häder [Thu, 13 Dec 2018 21:25:32 +0000 (22:25 +0100)]
Please cherry-pick:
- created validator for company's short name (BasicData entity)
- renamed email-address validator for branch office according to naming-convention
- removed "id" attribute from everywhere where it is not explicitly needed
- changed some single-line tags to multi-lines for better readability
- added companyShortName to view and backing bean
- it is now the default instead of companyName which is now fully optional
- also added method isCompanyShortNameUsed() to interface
Roland Häder [Mon, 16 Jul 2018 20:36:22 +0000 (22:36 +0200)]
Please cherry-pick:
- renamed *MiniLinks to *DropdownMenu to reflect actual purpose of these custom
tags
- renamed to generic "id" EL variable to "panelGroupId", was causing trouble
- ids should not have dashes in them (caused some exceptions)
Roland Häder [Sat, 7 Jul 2018 16:24:43 +0000 (18:24 +0200)]
Please cherry-pick:
- restructed admin menu towards a sidebar and slide menu which is
finger-friendlier and consumes lesser space
- also this lefts open a top panel for later enhancements
- renamed base.tpl -> master.tpl
- rewrote "mini links" (with custom CSS) to PrimeFaces' p:menuButton and
p:menuitem, also moved them to proper "dropdown" folder
Roland Häder [Tue, 26 Jun 2018 19:46:41 +0000 (21:46 +0200)]
Product-only:
- added form field for product's bar-code number
- added graphical bar-code of product's bar-code number to dialog box
- added missing i18n language strings
Roland Häder [Sun, 24 Jun 2018 20:41:20 +0000 (22:41 +0200)]
Don't cherry-pick:
- let's render the receipt's bar code into an actual barcode
- renamed RECEIPT_NUMBER -> RECEIPT_NUMBER_HEADER
- added showing receipt number in list view (receipts)
Roland Häder [Sun, 24 Jun 2018 12:55:41 +0000 (14:55 +0200)]
Don't cherry-pick:
- need to invoke renderUser() instead, strange is that my IDE didn't show this
error but okay.
- added register number to dialog box
- added missing i18n strings
Roland Häder [Mon, 14 May 2018 23:03:34 +0000 (01:03 +0200)]
Don't cherry-pick:
- added helper bean for fiancial beans, renderReceipt() was moved here
- need to have > of <ui:composition> in own line to avoid editing 2 lines when
adding an another XML namespace
- wrapped all (?) long JSF/PF tags to have their attributes in separates lines
- using no longer tableStyleClass attribute
- continued with single receipt item p:dialog (all fields exposed there)
- position of it set to "top"
- oh, no more columnClasses="label,value" ... ;-)
- also no more styleClass="submit|reset" (themed)
- added process="@form" as a workaround for an exception (BalusC said this)
Roland Häder [Mon, 14 May 2018 23:00:12 +0000 (01:00 +0200)]
Product-only:
- having this AJAX-pagination-filtering-sorting stuff here is plain wrong, but
hey ... what is @ViewScoped again ??? ;-)
- added productId backing bean as the edit/delete view require it
- also createProductInstance() is setting it, when not null
Roland Häder [Mon, 14 May 2018 22:49:05 +0000 (00:49 +0200)]
Product-only:
- moved > of <ui:composition> to new line to have newly added namspaces being
added without causing 2 lines being changed
- wrapped long JSF/PF tags having each attribute in a single line
- added size, maxValue and minValue to productUnitAmount
- onPostback has caused some side effect that values got overwritten in e.g.
edit views
- no longer using tableStyleClass
- changed i18n strings, no need for having PRODUCT_ prefix on e.g. net/gross
price strings
- no longer using styleClass="submit|reset"
- added process="@form" as a workaround for an exception, according to BalusC
this is not fixing the actual application's misconfiguration (where which?)
Roland Häder [Mon, 14 May 2018 21:40:10 +0000 (23:40 +0200)]
Please cherry-pick:
- introduced list view-scoped backing bean for branch offices, including
interface, which will hold the list for pagination and filtering/sorting as
@RequestScoped annotated beans will be reset even on each AJAX requests
- according to the change from "general" (request-scoped) to "list"
(view-scoped) backing bean, also renamed class fields in converters/validators
- private methods should not throw exceptions as they cannot be tested with
unit tests
- added new bean helper method renderCountry()
- also include department name in renderEmployee(), if applyable
- moved all receipt/product-related renderFoo() methods away to their own beans
resulting in lesser conflicts on cherry-picking to other projects
- rewrote bean helper methods "renderFoo()" a bit
- added Accept: text/xml in case of AJAX requests (BalusC, thank you again)
- added validator for branch office's email address
- fixed relative path in project.properties (ops, NetBean's fault?)
- added template for opening times data
- fixed end of all ui:composition tags: > must be in new line to allow easy
adding (only a line added, not 2 existing modified) of new "imports"
- rewrote admin_basic_data_list.xtml to new way, with global search and details
p:dialog being dynamically loaded (cool PF!)
- same rewrite for admin_branch_office_list.xtml (still other views like
edit/delete/assign will be missing)
- remove for="someId" where really not needed (<f:convertDateTime> was already
within the tag where for="x" was pointing to)
- removed not needed "imports" of XML namespaces
- changed admin_contact_data_min.tpl to p:column (was h:column)
- onPostback had some side effects like overwriting values, still some edit
views may not work as expected (changer to PrimeFaces)
- added required <h:inputHidden> for primary key handled over from URL
(edit/delete/assign views again)
- <div class="table-footer"> is discouraged as this is plain HTML and no
engine-controlled JSF tag
- reformatted over-long JSF/PF tags to have each attribute in its own line
- form-admin-edit-user was incorrect (copy-paste) in a contact view, fixed
- removed no longer used tableStyleClass attribute
- *Created.time handled over to <f:convertDateTime> is maybe wrong, just
*Created is really okay here
- removed styleClass="submit|reset"
- added process="@form" but this is only a workaround according to BalusC on
stackoverflow.com (thank you for all your value contributions!!!)
- admin_[show_]<fax|landline|mobile|user>_data.tpl were all still using
h:column, now fixed to p:column
- moved comment block out of ui:composition, else it will show up in HTML code
and may even confuse the JSF engine?
- removed some CSS attributes from discouraged custom.css as there is now a
theme around, include .table* classes
- added a lot more i18n strings
Roland Häder [Fri, 6 Apr 2018 21:35:58 +0000 (23:35 +0200)]
Don't cherry-pick:
- added list and user bean for receipt items, need to have this for having
"working" (at least partly) paginator+filter+sorting on a p:dataTable tag
- also prepared listing of receipt items for clicking on a row to have a
p:dialog shown up with all details, yet still unfinished
- removed no longer used i18n key
Roland Häder [Fri, 6 Apr 2018 21:32:15 +0000 (23:32 +0200)]
Product-only:
- created product helper bean and moved all product-related methods from generic
to this bean
- added view stubs for edit, delete and show of a generic product
- fixed imports as "add events" now have own package
Roland Häder [Fri, 6 Apr 2018 21:22:45 +0000 (23:22 +0200)]
Please cherry-pick:
- the helper bean needs to be view-scoped for other "list" view-scoped beans
- all action methods must return void to have JSF AJAX requests working properly
- sorted some members
Roland Häder [Sat, 31 Mar 2018 14:36:43 +0000 (16:36 +0200)]
Don't cherry-pick:
- added view-scoped backing bean for receipt lists which helps pagination +
filter + sorting
- it is now the new receiptListController and no allReceipts() (method) but only
allReceipts (bean property)
- addded missing i18n strings, removed no longer used
Roland Häder [Sat, 31 Mar 2018 14:32:49 +0000 (16:32 +0200)]
Please cherry-pick:
- removed <f:selectItem> with value="#{null}" in filter selection box, was
anoying there and no use anyway
- added beanHelper.renderUser(user) which is a helper method for rendering
user names
- added missing i18n strings
Roland Häder [Sat, 31 Mar 2018 00:24:10 +0000 (02:24 +0200)]
Product-only:
- if for example an employee is assigned to a company (basic_data) then always
link the "show basic data" view and not the company's website URL
- fixed wrong bundle, have to be "project", "msg" is generic
- added missing i18n strings
Roland Häder [Sat, 31 Mar 2018 00:23:51 +0000 (02:23 +0200)]
Don't cherry-pick:
- if for example an employee is assigned to a company (basic_data) then always
link the "show basic data" view and not the company's website URL
Roland Häder [Sat, 31 Mar 2018 00:11:14 +0000 (02:11 +0200)]
Please cherry-pick:
- if for example an employee is assigned to a company (basic_data) then always
link the "show basic data" view and not the company's website URL
Roland Häder [Fri, 30 Mar 2018 22:57:34 +0000 (00:57 +0200)]
Product-only:
- <f:*> are not processed when the view is rendered but when "constructed"
- therefore EL expressions cannot reference only "static" data, not data that
will be dynamically provided
Roland Häder [Fri, 30 Mar 2018 22:12:45 +0000 (00:12 +0200)]
Product-only:
- in product list, allow clicking ("selecting") a row (single product) and
show a dialog (modal) box with all detailed data
- _HEADER is now everwhere a suffix, not 2nd prefix of i18n keys
Roland Häder [Fri, 30 Mar 2018 22:09:23 +0000 (00:09 +0200)]
Please cherry-pick:
- _HEADER is now everwhere a suffix, not 2nd prefix of i18n keys
- *_BASIC_COMPANY_DATA_* was nice to read, still the POJI is named BasicData
where this i18n key belongs to, so let's remove the _COMPANY from all strings
- ID_NUMBER_HEADER is generic and okay for "Id number:" string
Roland Häder [Fri, 30 Mar 2018 17:42:20 +0000 (19:42 +0200)]
Please cherry-pick:
- on a p:dataTable it is recommneded (to avoid JavaScript errors) to have both
id and widgetVar named the same
- changed general font size to 0.8em
Roland Häder [Fri, 30 Mar 2018 17:36:50 +0000 (19:36 +0200)]
Please cherry-pick:
- data output by a p:dataTable with pagination, filtering and sorting cannot
come from a request-scoped bean as each AJAX request will reset the
filteredValue-referenced bean property to null which leads to an empty table.
- better is to have a separate backing bean on view-scoped which holds both
lists, the full ("all") list and filtered list (which are the items that have
passed the filter).
- also had to update converters and validators
- finally, no need for javax.faces.STATE_SAVING_METHOD=client anymore! yeah!
- rewrote menu system (admin at least, guest and user login is following) to a
menu-bar-based system which saves a lot space and is a more modern approach
- added filter for not caching xhtml (JSF view) requests
Roland Häder [Fri, 30 Mar 2018 17:07:48 +0000 (19:07 +0200)]
Product-only:
- data output by a p:dataTable with pagination, filtering and sorting cannot
come from a request-scoped bean as each AJAX request will reset the
filteredValue-referenced bean property to null which leads to an empty table.
- better is to have a separate backing bean on view-scoped which holds both
lists, the full ("all") list and filtered list (which are the items that have
passed the filter).
- also had to update converters and validators
Roland Häder [Tue, 27 Mar 2018 21:41:51 +0000 (23:41 +0200)]
Product-only:
- "in" was not fitting for a boolean value, better take "equals" and a
p:selectOneMenu tag to have a compact way of selecting available or not
available products
Roland Häder [Sun, 25 Mar 2018 02:15:23 +0000 (04:15 +0200)]
Please cherry-pick:
- renamed admin_form_mobile_data.tpl to admin_edit_form_mobile_data.tpl as this
tag is for editing mobile numbers
- started cleanup by removing no longer valid (PF + jquery-ui have own stuff)
<div> tags
- reformatted more p:inputText
- size="10" for <landLine|fax|mobile>Number is a bit to short, let's take 20
again
- size="20" for email addresses is a bit to short, let's take 40 then
- replace more h:outputLink with p:link, need to take href attribute with this
tag then
- renamed *_LANDLINE_* i18n keys to *_LAND_LINE_*
- used p:outputPanel instead of plain <div> tag, may now lesser break
- no size of landline/fax number (not area-code)
Roland Häder [Sun, 25 Mar 2018 01:20:49 +0000 (03:20 +0200)]
Don't cherry-pick:
- reformatted p:inputText tags (and please others, too) to have each attribute
in a separate line for later easier updates
- size="10" was to small again, let's take again 20
Roland Häder [Sat, 24 Mar 2018 22:16:11 +0000 (23:16 +0100)]
Please cherry-pick:
- used on validator:emailAddressValidator as this allows empty values being
ignored
- p:growl's autoUpdate and any other is deprecated, better use p:autoUpdate
instead (new PrimeFaces 6.2 deprecation fixed)
- used $() instead of `` for monitoring script
Roland Häder [Sat, 24 Mar 2018 22:05:59 +0000 (23:05 +0100)]
Don' cherry-pick:
- added more i18n strings (non-generic)
- receiptNumber may not be all-numbers, so changed type to java.lang.String
- removed p:message as this is no need for (anymore)
- incomeSingleAmount is now java.math.BigDecimal as this is more precise than
java.lang.Float is
- having getter/setter for backing bean properties in interface may ask other
developers to invoke them from other beans, this is bad as it may cause
problems when code grows
- so the interface FinancialsIncomeWebRequestController is now cleared and all
documentation is moved to backing bean class
- added itemNumber to same backing bean
- ADMIN_LINK_SHOW_RECEIPT_TITLE is a project-specific i18n key, not generic (msg)
- so ADMIN_LINK_SHOW_RECEIPT_ITEM_PRODUCT_TITLE is ...
- added missing navigation rules from admin_receipt_list
- fixed name for getter of filteredReceiptItems property
- renamed companyEmployee -> employee in JSF views/templates
- let's use beanHelper.renderBranchOffice() instead of outputting only plain id
number
- added TODOs of unfinished/hard-coded stuff
- updated/changed copyright to Free Software Foundation
Roland Häder [Sat, 24 Mar 2018 18:24:16 +0000 (19:24 +0100)]
Please cherry-pick:
- f:validator is no longer working, need to use own JSF tag
validator:employeeEmailAddressValidator which allows a second parameter
- there is no type="secret", need to be type="password"
- added p:inputTex for headquarter's company name
- added selection box for profile-mode using "new" getter in data controller
- added selection box for branch office owner (employee)
- added navigation rule from employee list to to assign branch office to
employee
- fixed leftovers from duplication from branch office to employee/department
- added navigator="true"
- renamed employeeCompany to employeeBasicData
- reformatted p:inputText in admin_form_contact_data.tpl
- allow null profile mode (?)
- set org.jboss.weld.development=false
- registered validators.jsf.taglib.xml
- updated/changed copyright to Free Software Foundation
Roland Häder [Sat, 24 Mar 2018 16:09:34 +0000 (17:09 +0100)]
Please cherry-pick:
- isEmailAddressRegistered() should always, like other public methods, validate
their parameter
- introduced isCompanyNameUsed() which is similar to isEmailAddressRegistered()
which will be used to check in JS107 cache if company name is already used
- make sure only non-null email addresses are added to emailAddressCache
- updated/changed copyright to Free Software Foundation
- added TODO to get rid of generateRandomUserName() business method is which
deprecated anyway
- removed isPublicUserProfileEnabled()
- AdminBranchOfficeWebRequestBean is surely a request-scoped backing bean
- added to same bean properties for last house number and extension of branch
office
- renamed bean field employeePersonalContact -> employeePersonalData
- fixed some leftovers from duplication of branch office controller for employees
- same with department bean
- used more MessageFormat.format() which prevents more String objects polluting
both heaps
- injected feature backing bean into admin user bean
- added missing bean property for user's profile mode to same bean
- introduced private method createUserInstance() to same bean
- null-ed more fields in same bean in clear() method
- fixed imports of ContactUtils -> Contacts
- AdminHeadquarterWebRequestBean is surely a request-scoped backing bean
- added to same bean properties for last house number and extension of
headquarter
- fixed some leftovers from duplication of branch office controller for headquarter
Roland Häder [Tue, 20 Mar 2018 23:49:37 +0000 (00:49 +0100)]
Please cherry-pick:
- added ServletContextListener implementation for (later) pre-initialize JS107
cache before any page is served
- added validators for basic company data, headquarter data and branch office's
email addresses
- rewrote converters which have allowEmptyValue flag to handle it correctly
(need that validators.jsf.taglib.xml for this to work)
- renamed company name validator as this is for basic company data ... ;-)
- updated/changed copyright year to Free Software Foundation
Roland Häder [Tue, 20 Mar 2018 23:34:47 +0000 (00:34 +0100)]
Only product:
- web controller expanded with age group ("new" enumeration), product size and number
- also changed Float to BigDecimal for precision reasons
- always filter/sort agains entity, not an entity's property
- used more MessageFormat.format()
- added converter for agegroup enumeration
- changed/updated copyright year to Freesoftware Foundation
Roland Häder [Tue, 20 Mar 2018 23:19:39 +0000 (00:19 +0100)]
Please cherry-pick:
- removed no longer required profile-mode backing bean
- removed admin_form_user_personal_data.tpl as there is no need for it
- added validators.jsf.taglib.xml which holds descriptions for JSF validators ...
- always sort/filter by direct entity
- fixed i18n keys, was missing an underscore
Roland Häder [Sat, 4 Nov 2017 13:25:47 +0000 (14:25 +0100)]
Maybe cherry-pick:
- renamed productUnitType -> productUnitI18nKey
- product's currency code, unit amount and unit's i18n key are now all required
(non-nullable) fields
- therefor they have been moved into constructor invocation and not "externally"
being set
- fixed message bundle, PRODUCT_FOO is alway "project" not "msg" (generic)
- fixed/added missing i18n strings
- tpzo fixed: PROJECT -> PRODUCT (ops)
Roland Häder [Sat, 4 Nov 2017 11:36:18 +0000 (12:36 +0100)]
Don't cherry-pick:
- receipts may also bear time when purchased, let's record this as well and
java.util.Date can easily persist both, date and time, anyway.
- item's manufacturer can be different to generic product manufacturer, e.g.
a sound system is unlikely being rebranded but surely many different companies
will produce milk (which is a generic product that needs branding)
- bar codes are sometimes extremely long, even java.lang.Long was not enough to
store them and I may not go to BigInteger, but maybe one day I will ...
- code convention applied: in comparison, first value then variable
- added brand name for receipt item
Roland Häder [Sat, 4 Nov 2017 00:16:54 +0000 (01:16 +0100)]
Maybe cherry-pick:
- renamed product -> generic_product
- renamed category -> product_category
- added validators for both product/category i18n keys as direct titles are not
localizable
- added product manufacturer with is a connection to basic_data entity
- general controller may have reusable methods like allFoos() or
isFooI18nKeyAdded(), by exposing them in corresponding interface, they can be
accessed by the administrative bean to check if entity Foo is really not
there.
- code convention applied: in comparison, first value then variable
Roland Häder [Fri, 3 Nov 2017 23:56:18 +0000 (00:56 +0100)]
Please cherry-pick:
- removed company from "basic_company_data" (and class names) as there will be
no other basic data
- added view for headquarter listing (administrative)
- used more beanHelper's renderFoo(foo) methods as this is much easier to debug
- renamed ADMIN_SHOW_PHONE_NUMBER to ADMIN_SHOW_<FAX|LAND_LINE|MOBILE>_NUMBER
- added menu for headquarters (administrative)
- added custom JSF tag for administrative "mini-links" for headquarters
- added templates for form and opening times of headquarters
- fixed employee link outcomes, was copy-paste mistake (ops)
- renamed more headquarters -> headquarter
- addEmployee() is now "basically finished"
- changed h:outputLink to p:link which suits better here
- added missing navigation rules for headquarters/employees
- isCompanyNameUsed() and isEmailAddressRegistered() should be "basically
finished"
- still one isEmailAddressRegistered() is left in generic contactController
- first value, then variable on comparison (null == someVariable)
- lot's more fixes/improvements I cannot remember ...
Roland Häder [Tue, 31 Oct 2017 19:02:27 +0000 (20:02 +0100)]
Don't cherry-pick:
- added sequence number to receipt as some receipts beared it
- removed CSS class "input", more will follow
- generalized listing headers for administrative views: ADMIN_HEADER_FOO_BAR
- added more missing i18n keys
Roland Häder [Tue, 31 Oct 2017 18:55:52 +0000 (19:55 +0100)]
Please cherry-pick:
- added support for local i18n string bundles which may be useful when the
application itself has i18n keys that could be "dynamic" (entered by
administrator)
- all converters are now performing a CDI "lookup" and no EJB calls anymore
which is nice for performance
- PrimeFaces have an upcoming feature when scripts and maybe CSS can be bundled
which improves load performance of the web application
- but only with 6.2+ and with older versions this option is safely ignored
- removed CSS class "input" and other "2-corner rouded" styles, they may return
in form of an own theme?
Roland Häder [Tue, 31 Oct 2017 18:44:33 +0000 (19:44 +0100)]
Maybe cherry-pick:
- added mini-links JSF tags for product categories and generic products
- added form templates for above again
- added views for listing both again
- added navigation rules to faces-config.xml
- rewrote converter to CDI "lookup" (programatic) which finally let the
converter work without any EJB calls
- added filtered list for categories and products
- added product unit amount and type, like 1 liter
- categories and products have now both i18n keys and not direct and
untranslateable titles
- rewrote + sorted renderGenericProduct() as products now have i18n keys
- added menu entries