├── .gitattributes
├── .gitignore
├── .nojekyll
├── .snyk
├── .snyk-react-client-scr
├── .travis.yml
├── CONTRIBUTING.md
├── DEVELOPMENT.md
├── LICENSE
├── README.md
├── commitlint.config.js
├── docs-src-cn
├── antora-playbook.yml
├── api-reference
│ ├── cuba-react-core
│ │ ├── assets
│ │ │ ├── css
│ │ │ │ └── main.css
│ │ │ ├── images
│ │ │ │ ├── icons.png
│ │ │ │ ├── icons@2x.png
│ │ │ │ ├── widgets.png
│ │ │ │ └── widgets@2x.png
│ │ │ └── js
│ │ │ │ ├── main.js
│ │ │ │ └── search.js
│ │ ├── classes
│ │ │ ├── _app_mainstore_.mainstore.html
│ │ │ ├── _app_security_.security.html
│ │ │ ├── _data_collection_.clientsidedatacollectionstoreimpl.html
│ │ │ ├── _data_collection_.collection.html
│ │ │ ├── _data_collection_.datacollectionstoreimpl.html
│ │ │ ├── _data_datacontext_.datacontext.html
│ │ │ ├── _data_instance_.datainstancestore.html
│ │ │ └── _data_instance_.instance.html
│ │ ├── globals.html
│ │ ├── index.html
│ │ ├── interfaces
│ │ │ ├── _access_control_accesscontrol_.accesscontrolprops.html
│ │ │ ├── _access_control_accesscontrol_.accesscontrolrequirements.html
│ │ │ ├── _access_control_accesscontrol_.attributepermissionrequirement.html
│ │ │ ├── _access_control_accesscontrol_.entitypermissionrequirement.html
│ │ │ ├── _access_control_attrpermaccesscontrol_.attrpermaccesscontrolprops.html
│ │ │ ├── _access_control_entitypermaccesscontrol_.entitypermaccesscontrolprops.html
│ │ │ ├── _access_control_specificpermaccesscontrol_.specificpermaccesscontrolprops.html
│ │ │ ├── _app_cubaappprovider_.cubaappconfig.html
│ │ │ ├── _app_cubaappprovider_.cubaappcontextvalue.html
│ │ │ ├── _app_cubaappprovider_.cubaappproviderprops.html
│ │ │ ├── _app_mainstore_.mainstoreinjected.html
│ │ │ ├── _app_menuconfig_.routeitem.html
│ │ │ ├── _app_menuconfig_.submenu.html
│ │ │ ├── _data_collection_.clientsidedatacollectionoptions.html
│ │ │ ├── _data_collection_.clientsidedatacollectionstore.html
│ │ │ ├── _data_collection_.datacollectioninjected.html
│ │ │ ├── _data_collection_.datacollectionoptions.html
│ │ │ ├── _data_collection_.datacollectionprops.html
│ │ │ ├── _data_collection_.datacollectionstore.html
│ │ │ ├── _data_datacontext_.containers.html
│ │ │ ├── _data_datacontext_.datacontainer.html
│ │ │ ├── _data_instance_.datainstanceinjected.html
│ │ │ ├── _data_instance_.datainstanceoptions.html
│ │ │ └── _data_instance_.datainstanceprops.html
│ │ └── modules
│ │ │ ├── _access_control_accesscontrol_.html
│ │ │ ├── _access_control_attrpermaccesscontrol_.html
│ │ │ ├── _access_control_entitypermaccesscontrol_.html
│ │ │ ├── _access_control_specificpermaccesscontrol_.html
│ │ │ ├── _app_cubaappprovider_.html
│ │ │ ├── _app_mainstore_.html
│ │ │ ├── _app_menuconfig_.html
│ │ │ ├── _app_security_.html
│ │ │ ├── _app_security_test_.html
│ │ │ ├── _data_association_.html
│ │ │ ├── _data_collection_.html
│ │ │ ├── _data_collection_test_.html
│ │ │ ├── _data_datacontext_.html
│ │ │ ├── _data_instance_.html
│ │ │ ├── _data_instance_test_.html
│ │ │ ├── _index_.html
│ │ │ ├── _util_collation_.html
│ │ │ ├── _util_collation_test_.html
│ │ │ ├── _util_data_.html
│ │ │ ├── _util_errorhandling_.html
│ │ │ ├── _util_formats_.html
│ │ │ ├── _util_internal_data_.html
│ │ │ ├── _util_metadata_.html
│ │ │ ├── _util_statemanagement_.html
│ │ │ └── _util_temporal_.html
│ ├── cuba-react-ui
│ │ ├── assets
│ │ │ ├── css
│ │ │ │ └── main.css
│ │ │ ├── images
│ │ │ │ ├── icons.png
│ │ │ │ ├── icons@2x.png
│ │ │ │ ├── widgets.png
│ │ │ │ └── widgets@2x.png
│ │ │ └── js
│ │ │ │ ├── main.js
│ │ │ │ └── search.js
│ │ ├── classes
│ │ │ ├── _ui_fileupload_.fileuploadcomponent.html
│ │ │ ├── _ui_form_form_.entityeditorcomponent.html
│ │ │ ├── _ui_form_form_.nestedentitiestablefieldcomponent.html
│ │ │ ├── _ui_form_form_.nestedentityfieldcomponent.html
│ │ │ ├── _ui_imagepreview_.imagepreviewcomponent.html
│ │ │ ├── _ui_paging_paging_.paging.html
│ │ │ ├── _ui_table_datatable_.datatablecomponent.html
│ │ │ ├── _ui_table_datatablecustomfilter_.datatablecustomfiltercomponent.html
│ │ │ ├── _ui_table_datatableintervaleditor_.datatableintervaleditorcomponent.html
│ │ │ └── _ui_table_datatablelisteditor_.datatablelisteditor.html
│ │ ├── enums
│ │ │ ├── _ui_table_datatablecustomfilter_.operatorgroup.html
│ │ │ └── _ui_table_datatablelisteditor_.datatablelisteditortype.html
│ │ ├── globals.html
│ │ ├── index.html
│ │ ├── interfaces
│ │ │ ├── _ui_entityproperty_.entitypropertyprops.html
│ │ │ ├── _ui_entityselectfield_.entityselectfieldprops.html
│ │ │ ├── _ui_fileupload_.fileinfo.html
│ │ │ ├── _ui_fileupload_.fileuploaddropareaprops.html
│ │ │ ├── _ui_fileupload_.fileuploadprops.html
│ │ │ ├── _ui_form_form_.entityeditorprops.html
│ │ │ ├── _ui_form_form_.fieldprops.html
│ │ │ ├── _ui_form_form_.nestedentitiestablefieldprops.html
│ │ │ ├── _ui_form_form_.nestedentityfieldprops.html
│ │ │ ├── _ui_imagepreview_.imagepreviewprops.html
│ │ │ ├── _ui_table_datatable_.columndefinition.html
│ │ │ ├── _ui_table_datatable_.datatableprops.html
│ │ │ ├── _ui_table_datatablecustomfilter_.captionvaluepair.html
│ │ │ ├── _ui_table_datatablecustomfilter_.datatablecustomfilterprops.html
│ │ │ ├── _ui_table_datatablehelpers_.datacolumnconfig.html
│ │ │ ├── _ui_table_datatablehelpers_.tablechangedto.html
│ │ │ ├── _ui_table_datatableintervaleditor_.datatableintervaleditorprops.html
│ │ │ ├── _ui_table_datatableintervaleditor_.temporalinterval.html
│ │ │ ├── _ui_table_datatablelisteditor_.datatablelisteditorprops.html
│ │ │ └── _ui_table_datatablelisteditor_.listitemtagprops.html
│ │ └── modules
│ │ │ ├── _errorhandling_test_.html
│ │ │ ├── _i18n_i18nprovider_.html
│ │ │ ├── _i18n_validation_.html
│ │ │ ├── _index_.html
│ │ │ ├── _ui_entityproperty_.html
│ │ │ ├── _ui_entityselectfield_.html
│ │ │ ├── _ui_fileupload_.html
│ │ │ ├── _ui_form_bigdecimalinput_.html
│ │ │ ├── _ui_form_doubleinput_.html
│ │ │ ├── _ui_form_fieldpermissioncontainer_test_.html
│ │ │ ├── _ui_form_fieldpermssioncontainer_.html
│ │ │ ├── _ui_form_form_.html
│ │ │ ├── _ui_form_inputwithmask_.html
│ │ │ ├── _ui_form_integerinput_.html
│ │ │ ├── _ui_form_longinput_.html
│ │ │ ├── _ui_form_uuidinput_.html
│ │ │ ├── _ui_imagepreview_.html
│ │ │ ├── _ui_msg_.html
│ │ │ ├── _ui_multilinetext_.html
│ │ │ ├── _ui_paging_paging_.html
│ │ │ ├── _ui_paging_paging_test_.html
│ │ │ ├── _ui_spinner_.html
│ │ │ ├── _ui_table_datatable_.html
│ │ │ ├── _ui_table_datatablecell_.html
│ │ │ ├── _ui_table_datatablecustomfilter_.html
│ │ │ ├── _ui_table_datatablecustomfilterfields_.html
│ │ │ ├── _ui_table_datatablehelpers_.html
│ │ │ ├── _ui_table_datatableintervaleditor_.html
│ │ │ ├── _ui_table_datatableintervalfunctions_.html
│ │ │ ├── _ui_table_datatableintervalfunctions_test_.html
│ │ │ ├── _ui_table_datatablelisteditor_.html
│ │ │ ├── _util_errorhandling_.html
│ │ │ ├── _util_files_.html
│ │ │ ├── _util_formatting_.html
│ │ │ ├── _util_formatting_test_.html
│ │ │ ├── _util_regex_.html
│ │ │ └── _util_regex_test_.html
│ └── cuba-rest-js
│ │ ├── assets
│ │ ├── css
│ │ │ └── main.css
│ │ ├── images
│ │ │ ├── icons.png
│ │ │ ├── icons@2x.png
│ │ │ ├── widgets.png
│ │ │ └── widgets@2x.png
│ │ └── js
│ │ │ ├── main.js
│ │ │ └── search.js
│ │ ├── classes
│ │ ├── _cuba_.cubaapp.html
│ │ └── _storage_.defaultstorage.html
│ │ ├── enums
│ │ └── _model_.predefinedview.html
│ │ ├── globals.html
│ │ ├── index.html
│ │ ├── interfaces
│ │ ├── _cuba_.appconfig.html
│ │ ├── _cuba_.entitiesloadoptions.html
│ │ ├── _cuba_.fetchoptions.html
│ │ ├── _cuba_.loginoptions.html
│ │ ├── _cuba_.responseerror.html
│ │ ├── _filter_.condition.html
│ │ ├── _filter_.conditionsgroup.html
│ │ ├── _filter_.entityfilter.html
│ │ ├── _model_.effectivepermsinfo.html
│ │ ├── _model_.effectivepermsloadoptions.html
│ │ ├── _model_.entitieswithcount.html
│ │ ├── _model_.entitymessages.html
│ │ ├── _model_.enuminfo.html
│ │ ├── _model_.enumvalueinfo.html
│ │ ├── _model_.metaclassinfo.html
│ │ ├── _model_.metapropertyinfo.html
│ │ ├── _model_.permission.html
│ │ ├── _model_.serializedentityprops.html
│ │ ├── _model_.userinfo.html
│ │ └── _model_.view.html
│ │ └── modules
│ │ ├── _cuba_.html
│ │ ├── _filter_.html
│ │ ├── _model_.html
│ │ ├── _security_.html
│ │ ├── _storage_.html
│ │ └── _util_.html
├── doc-component-repo
│ ├── antora.yml
│ └── modules
│ │ ├── client-polymer
│ │ ├── nav.adoc
│ │ └── pages
│ │ │ ├── index.adoc
│ │ │ └── polymer
│ │ │ ├── cuba_web_components.adoc
│ │ │ ├── cuba_web_components
│ │ │ ├── polymer_inintialization.adoc
│ │ │ └── polymer_working_with_data.adoc
│ │ │ ├── polymer2_typescript
│ │ │ ├── polymer2_typescript.adoc
│ │ │ └── polymer2_typescript_components.adoc
│ │ │ ├── polymer_build_and_structure.adoc
│ │ │ ├── polymer_build_and_structure
│ │ │ ├── polymer_directory_structure.adoc
│ │ │ ├── polymer_hot_deploy.adoc
│ │ │ └── polymer_tools.adoc
│ │ │ ├── polymer_offline.adoc
│ │ │ ├── polymer_requirements.adoc
│ │ │ ├── polymer_styling.adoc
│ │ │ ├── polymer_supported_browsers.adoc
│ │ │ └── polymer_troubleshooting.adoc
│ │ ├── client-react-native
│ │ ├── images
│ │ │ └── RNDemo.gif
│ │ ├── nav.adoc
│ │ └── pages
│ │ │ ├── learning-path.adoc
│ │ │ ├── starter-guide.adoc
│ │ │ └── technologies.adoc
│ │ ├── client-react
│ │ ├── images
│ │ │ ├── data-table-demo.gif
│ │ │ ├── home-screen.png
│ │ │ ├── login-screen.png
│ │ │ ├── pet-clinic-browser.png
│ │ │ ├── pet-clinic-editor.png
│ │ │ ├── studio-adding-frontend-component.gif
│ │ │ └── studio-create-front-module.gif
│ │ ├── nav.adoc
│ │ └── pages
│ │ │ ├── backend-model.adoc
│ │ │ ├── build.adoc
│ │ │ ├── config.adoc
│ │ │ ├── creating-react-components.adoc
│ │ │ ├── forms.adoc
│ │ │ ├── i18n.adoc
│ │ │ ├── learning-path.adoc
│ │ │ ├── mobx.adoc
│ │ │ ├── routing.adoc
│ │ │ ├── security.adoc
│ │ │ ├── starter-guide.adoc
│ │ │ ├── supported-browsers.adoc
│ │ │ ├── sync-project-model.adoc
│ │ │ ├── technologies.adoc
│ │ │ └── theme.adoc
│ │ ├── cuba-react-core
│ │ ├── nav.adoc
│ │ └── pages
│ │ │ ├── access-control.adoc
│ │ │ ├── attr-perm-access-control.adoc
│ │ │ ├── client-side-data-collection-store.adoc
│ │ │ ├── cuba-app-provider.adoc
│ │ │ ├── data-collection-store.adoc
│ │ │ ├── data-instance-store.adoc
│ │ │ ├── entity-perm-access-control.adoc
│ │ │ ├── index.adoc
│ │ │ ├── main-store.adoc
│ │ │ ├── security.adoc
│ │ │ └── specific-perm-access-control.adoc
│ │ ├── cuba-react-ui
│ │ ├── images
│ │ │ └── FileUploadAndImagePreviewDemo.gif
│ │ ├── nav.adoc
│ │ └── pages
│ │ │ ├── data-table.adoc
│ │ │ ├── entity-editor.adoc
│ │ │ ├── entity-property.adoc
│ │ │ ├── file-upload.adoc
│ │ │ ├── form-field.adoc
│ │ │ ├── image-preview.adoc
│ │ │ ├── index.adoc
│ │ │ ├── nested-entities-table-field.adoc
│ │ │ └── nested-entity-field.adoc
│ │ ├── cuba-rest-js
│ │ ├── nav.adoc
│ │ └── pages
│ │ │ └── index.adoc
│ │ ├── generator
│ │ ├── images
│ │ │ ├── browser-cards.png
│ │ │ ├── browser-list.png
│ │ │ ├── interactive-projects.png
│ │ │ └── studio-integration.png
│ │ ├── nav.adoc
│ │ ├── pages
│ │ │ ├── commands-reference.adoc
│ │ │ └── index.adoc
│ │ └── partials
│ │ │ └── feat-available-in-studio.adoc
│ │ ├── getting-started
│ │ ├── nav.adoc
│ │ └── pages
│ │ │ ├── cli-specific-instructions.adoc
│ │ │ ├── index.adoc
│ │ │ └── learning-path.adoc
│ │ ├── libs
│ │ └── nav.adoc
│ │ ├── overview
│ │ ├── nav.adoc
│ │ ├── pages
│ │ │ └── index.adoc
│ │ └── partials
│ │ │ └── getting-started-note.adoc
│ │ └── typescript-sdk
│ │ ├── nav.adoc
│ │ └── pages
│ │ ├── entities.adoc
│ │ ├── enums.adoc
│ │ └── index.adoc
├── redirect-page-template.html
└── supplemental-ui
│ └── partials
│ ├── LICENSE
│ ├── footer-scripts.hbs
│ ├── head-scripts.hbs
│ ├── head-styles.hbs
│ └── header-content.hbs
├── docs-src
├── antora-playbook.yml
├── api-reference
│ ├── cuba-react-core
│ │ ├── assets
│ │ │ ├── css
│ │ │ │ └── main.css
│ │ │ ├── images
│ │ │ │ ├── icons.png
│ │ │ │ ├── icons@2x.png
│ │ │ │ ├── widgets.png
│ │ │ │ └── widgets@2x.png
│ │ │ └── js
│ │ │ │ ├── main.js
│ │ │ │ └── search.js
│ │ ├── classes
│ │ │ ├── _app_mainstore_.mainstore.html
│ │ │ ├── _app_security_.security.html
│ │ │ ├── _data_collection_.clientsidedatacollectionstoreimpl.html
│ │ │ ├── _data_collection_.collection.html
│ │ │ ├── _data_collection_.datacollectionstoreimpl.html
│ │ │ ├── _data_datacontext_.datacontext.html
│ │ │ ├── _data_instance_.datainstancestore.html
│ │ │ └── _data_instance_.instance.html
│ │ ├── globals.html
│ │ ├── index.html
│ │ ├── interfaces
│ │ │ ├── _access_control_accesscontrol_.accesscontrolprops.html
│ │ │ ├── _access_control_accesscontrol_.accesscontrolrequirements.html
│ │ │ ├── _access_control_accesscontrol_.attributepermissionrequirement.html
│ │ │ ├── _access_control_accesscontrol_.entitypermissionrequirement.html
│ │ │ ├── _access_control_attrpermaccesscontrol_.attrpermaccesscontrolprops.html
│ │ │ ├── _access_control_entitypermaccesscontrol_.entitypermaccesscontrolprops.html
│ │ │ ├── _access_control_specificpermaccesscontrol_.specificpermaccesscontrolprops.html
│ │ │ ├── _app_cubaappprovider_.cubaappconfig.html
│ │ │ ├── _app_cubaappprovider_.cubaappcontextvalue.html
│ │ │ ├── _app_cubaappprovider_.cubaappproviderprops.html
│ │ │ ├── _app_mainstore_.mainstoreinjected.html
│ │ │ ├── _app_menuconfig_.routeitem.html
│ │ │ ├── _app_menuconfig_.submenu.html
│ │ │ ├── _data_collection_.clientsidedatacollectionoptions.html
│ │ │ ├── _data_collection_.clientsidedatacollectionstore.html
│ │ │ ├── _data_collection_.datacollectioninjected.html
│ │ │ ├── _data_collection_.datacollectionoptions.html
│ │ │ ├── _data_collection_.datacollectionprops.html
│ │ │ ├── _data_collection_.datacollectionstore.html
│ │ │ ├── _data_datacontext_.containers.html
│ │ │ ├── _data_datacontext_.datacontainer.html
│ │ │ ├── _data_instance_.datainstanceinjected.html
│ │ │ ├── _data_instance_.datainstanceoptions.html
│ │ │ └── _data_instance_.datainstanceprops.html
│ │ └── modules
│ │ │ ├── _access_control_accesscontrol_.html
│ │ │ ├── _access_control_attrpermaccesscontrol_.html
│ │ │ ├── _access_control_entitypermaccesscontrol_.html
│ │ │ ├── _access_control_specificpermaccesscontrol_.html
│ │ │ ├── _app_cubaappprovider_.html
│ │ │ ├── _app_mainstore_.html
│ │ │ ├── _app_menuconfig_.html
│ │ │ ├── _app_security_.html
│ │ │ ├── _app_security_test_.html
│ │ │ ├── _data_association_.html
│ │ │ ├── _data_collection_.html
│ │ │ ├── _data_collection_test_.html
│ │ │ ├── _data_datacontext_.html
│ │ │ ├── _data_instance_.html
│ │ │ ├── _data_instance_test_.html
│ │ │ ├── _index_.html
│ │ │ ├── _util_collation_.html
│ │ │ ├── _util_collation_test_.html
│ │ │ ├── _util_data_.html
│ │ │ ├── _util_errorhandling_.html
│ │ │ ├── _util_formats_.html
│ │ │ ├── _util_internal_data_.html
│ │ │ ├── _util_metadata_.html
│ │ │ ├── _util_statemanagement_.html
│ │ │ └── _util_temporal_.html
│ ├── cuba-react-ui
│ │ ├── assets
│ │ │ ├── css
│ │ │ │ └── main.css
│ │ │ ├── images
│ │ │ │ ├── icons.png
│ │ │ │ ├── icons@2x.png
│ │ │ │ ├── widgets.png
│ │ │ │ └── widgets@2x.png
│ │ │ └── js
│ │ │ │ ├── main.js
│ │ │ │ └── search.js
│ │ ├── classes
│ │ │ ├── _ui_fileupload_.fileuploadcomponent.html
│ │ │ ├── _ui_form_form_.entityeditorcomponent.html
│ │ │ ├── _ui_form_form_.nestedentitiestablefieldcomponent.html
│ │ │ ├── _ui_form_form_.nestedentityfieldcomponent.html
│ │ │ ├── _ui_imagepreview_.imagepreviewcomponent.html
│ │ │ ├── _ui_paging_paging_.paging.html
│ │ │ ├── _ui_table_datatable_.datatablecomponent.html
│ │ │ ├── _ui_table_datatablecustomfilter_.datatablecustomfiltercomponent.html
│ │ │ ├── _ui_table_datatableintervaleditor_.datatableintervaleditorcomponent.html
│ │ │ └── _ui_table_datatablelisteditor_.datatablelisteditor.html
│ │ ├── enums
│ │ │ ├── _ui_table_datatablecustomfilter_.operatorgroup.html
│ │ │ └── _ui_table_datatablelisteditor_.datatablelisteditortype.html
│ │ ├── globals.html
│ │ ├── index.html
│ │ ├── interfaces
│ │ │ ├── _ui_entityproperty_.entitypropertyprops.html
│ │ │ ├── _ui_entityselectfield_.entityselectfieldprops.html
│ │ │ ├── _ui_fileupload_.fileinfo.html
│ │ │ ├── _ui_fileupload_.fileuploaddropareaprops.html
│ │ │ ├── _ui_fileupload_.fileuploadprops.html
│ │ │ ├── _ui_form_form_.entityeditorprops.html
│ │ │ ├── _ui_form_form_.fieldprops.html
│ │ │ ├── _ui_form_form_.nestedentitiestablefieldprops.html
│ │ │ ├── _ui_form_form_.nestedentityfieldprops.html
│ │ │ ├── _ui_imagepreview_.imagepreviewprops.html
│ │ │ ├── _ui_table_datatable_.columndefinition.html
│ │ │ ├── _ui_table_datatable_.datatableprops.html
│ │ │ ├── _ui_table_datatablecustomfilter_.captionvaluepair.html
│ │ │ ├── _ui_table_datatablecustomfilter_.datatablecustomfilterprops.html
│ │ │ ├── _ui_table_datatablehelpers_.datacolumnconfig.html
│ │ │ ├── _ui_table_datatablehelpers_.tablechangedto.html
│ │ │ ├── _ui_table_datatableintervaleditor_.datatableintervaleditorprops.html
│ │ │ ├── _ui_table_datatableintervaleditor_.temporalinterval.html
│ │ │ ├── _ui_table_datatablelisteditor_.datatablelisteditorprops.html
│ │ │ └── _ui_table_datatablelisteditor_.listitemtagprops.html
│ │ └── modules
│ │ │ ├── _errorhandling_test_.html
│ │ │ ├── _i18n_i18nprovider_.html
│ │ │ ├── _i18n_validation_.html
│ │ │ ├── _index_.html
│ │ │ ├── _ui_entityproperty_.html
│ │ │ ├── _ui_entityselectfield_.html
│ │ │ ├── _ui_fileupload_.html
│ │ │ ├── _ui_form_bigdecimalinput_.html
│ │ │ ├── _ui_form_doubleinput_.html
│ │ │ ├── _ui_form_fieldpermissioncontainer_test_.html
│ │ │ ├── _ui_form_fieldpermssioncontainer_.html
│ │ │ ├── _ui_form_form_.html
│ │ │ ├── _ui_form_inputwithmask_.html
│ │ │ ├── _ui_form_integerinput_.html
│ │ │ ├── _ui_form_longinput_.html
│ │ │ ├── _ui_form_uuidinput_.html
│ │ │ ├── _ui_imagepreview_.html
│ │ │ ├── _ui_msg_.html
│ │ │ ├── _ui_multilinetext_.html
│ │ │ ├── _ui_paging_paging_.html
│ │ │ ├── _ui_paging_paging_test_.html
│ │ │ ├── _ui_spinner_.html
│ │ │ ├── _ui_table_datatable_.html
│ │ │ ├── _ui_table_datatablecell_.html
│ │ │ ├── _ui_table_datatablecustomfilter_.html
│ │ │ ├── _ui_table_datatablecustomfilterfields_.html
│ │ │ ├── _ui_table_datatablehelpers_.html
│ │ │ ├── _ui_table_datatableintervaleditor_.html
│ │ │ ├── _ui_table_datatableintervalfunctions_.html
│ │ │ ├── _ui_table_datatableintervalfunctions_test_.html
│ │ │ ├── _ui_table_datatablelisteditor_.html
│ │ │ ├── _util_errorhandling_.html
│ │ │ ├── _util_files_.html
│ │ │ ├── _util_formatting_.html
│ │ │ ├── _util_formatting_test_.html
│ │ │ ├── _util_regex_.html
│ │ │ └── _util_regex_test_.html
│ └── cuba-rest-js
│ │ ├── assets
│ │ ├── css
│ │ │ └── main.css
│ │ ├── images
│ │ │ ├── icons.png
│ │ │ ├── icons@2x.png
│ │ │ ├── widgets.png
│ │ │ └── widgets@2x.png
│ │ └── js
│ │ │ ├── main.js
│ │ │ └── search.js
│ │ ├── classes
│ │ ├── _cuba_.cubaapp.html
│ │ └── _storage_.defaultstorage.html
│ │ ├── enums
│ │ └── _model_.predefinedview.html
│ │ ├── globals.html
│ │ ├── index.html
│ │ ├── interfaces
│ │ ├── _cuba_.appconfig.html
│ │ ├── _cuba_.entitiesloadoptions.html
│ │ ├── _cuba_.fetchoptions.html
│ │ ├── _cuba_.loginoptions.html
│ │ ├── _cuba_.responseerror.html
│ │ ├── _filter_.condition.html
│ │ ├── _filter_.conditionsgroup.html
│ │ ├── _filter_.entityfilter.html
│ │ ├── _model_.effectivepermsinfo.html
│ │ ├── _model_.effectivepermsloadoptions.html
│ │ ├── _model_.entitieswithcount.html
│ │ ├── _model_.entitymessages.html
│ │ ├── _model_.enuminfo.html
│ │ ├── _model_.enumvalueinfo.html
│ │ ├── _model_.metaclassinfo.html
│ │ ├── _model_.metapropertyinfo.html
│ │ ├── _model_.permission.html
│ │ ├── _model_.serializedentityprops.html
│ │ ├── _model_.userinfo.html
│ │ └── _model_.view.html
│ │ └── modules
│ │ ├── _cuba_.html
│ │ ├── _filter_.html
│ │ ├── _model_.html
│ │ ├── _security_.html
│ │ ├── _storage_.html
│ │ └── _util_.html
├── doc-component-repo
│ ├── antora.yml
│ └── modules
│ │ ├── client-polymer
│ │ ├── nav.adoc
│ │ └── pages
│ │ │ ├── index.adoc
│ │ │ └── polymer
│ │ │ ├── cuba_web_components.adoc
│ │ │ ├── cuba_web_components
│ │ │ ├── polymer_inintialization.adoc
│ │ │ └── polymer_working_with_data.adoc
│ │ │ ├── polymer2_typescript
│ │ │ ├── polymer2_typescript.adoc
│ │ │ └── polymer2_typescript_components.adoc
│ │ │ ├── polymer_build_and_structure.adoc
│ │ │ ├── polymer_build_and_structure
│ │ │ ├── polymer_directory_structure.adoc
│ │ │ ├── polymer_hot_deploy.adoc
│ │ │ └── polymer_tools.adoc
│ │ │ ├── polymer_offline.adoc
│ │ │ ├── polymer_requirements.adoc
│ │ │ ├── polymer_styling.adoc
│ │ │ ├── polymer_supported_browsers.adoc
│ │ │ └── polymer_troubleshooting.adoc
│ │ ├── client-react-native
│ │ ├── images
│ │ │ └── RNDemo.gif
│ │ ├── nav.adoc
│ │ └── pages
│ │ │ ├── learning-path.adoc
│ │ │ ├── starter-guide.adoc
│ │ │ └── technologies.adoc
│ │ ├── client-react
│ │ ├── images
│ │ │ ├── data-table-demo.gif
│ │ │ ├── home-screen.png
│ │ │ ├── login-screen.png
│ │ │ ├── pet-clinic-browser.png
│ │ │ ├── pet-clinic-editor.png
│ │ │ ├── studio-adding-frontend-component.gif
│ │ │ └── studio-create-front-module.gif
│ │ ├── nav.adoc
│ │ └── pages
│ │ │ ├── backend-model.adoc
│ │ │ ├── build.adoc
│ │ │ ├── config.adoc
│ │ │ ├── creating-react-components.adoc
│ │ │ ├── forms.adoc
│ │ │ ├── i18n.adoc
│ │ │ ├── learning-path.adoc
│ │ │ ├── mobx.adoc
│ │ │ ├── routing.adoc
│ │ │ ├── security.adoc
│ │ │ ├── starter-guide.adoc
│ │ │ ├── supported-browsers.adoc
│ │ │ ├── sync-project-model.adoc
│ │ │ ├── technologies.adoc
│ │ │ └── theme.adoc
│ │ ├── cuba-react-core
│ │ ├── nav.adoc
│ │ └── pages
│ │ │ ├── access-control.adoc
│ │ │ ├── attr-perm-access-control.adoc
│ │ │ ├── client-side-data-collection-store.adoc
│ │ │ ├── cuba-app-provider.adoc
│ │ │ ├── data-collection-store.adoc
│ │ │ ├── data-instance-store.adoc
│ │ │ ├── entity-perm-access-control.adoc
│ │ │ ├── index.adoc
│ │ │ ├── main-store.adoc
│ │ │ ├── security.adoc
│ │ │ └── specific-perm-access-control.adoc
│ │ ├── cuba-react-ui
│ │ ├── images
│ │ │ └── FileUploadAndImagePreviewDemo.gif
│ │ ├── nav.adoc
│ │ └── pages
│ │ │ ├── data-table.adoc
│ │ │ ├── entity-editor.adoc
│ │ │ ├── entity-property.adoc
│ │ │ ├── file-upload.adoc
│ │ │ ├── form-field.adoc
│ │ │ ├── image-preview.adoc
│ │ │ ├── index.adoc
│ │ │ ├── nested-entities-table-field.adoc
│ │ │ └── nested-entity-field.adoc
│ │ ├── cuba-rest-js
│ │ ├── images
│ │ │ ├── rest-access-role-attr-perms.jpg
│ │ │ ├── rest-access-role-entity-perms.jpg
│ │ │ └── rest-access-role.jpg
│ │ ├── nav.adoc
│ │ └── pages
│ │ │ └── index.adoc
│ │ ├── generator
│ │ ├── images
│ │ │ ├── browser-cards.png
│ │ │ ├── browser-list.png
│ │ │ ├── interactive-projects.png
│ │ │ └── studio-integration.png
│ │ ├── nav.adoc
│ │ ├── pages
│ │ │ ├── commands-reference.adoc
│ │ │ └── index.adoc
│ │ └── partials
│ │ │ └── feat-available-in-studio.adoc
│ │ ├── getting-started
│ │ ├── nav.adoc
│ │ └── pages
│ │ │ ├── cli-specific-instructions.adoc
│ │ │ ├── index.adoc
│ │ │ └── learning-path.adoc
│ │ ├── libs
│ │ └── nav.adoc
│ │ ├── overview
│ │ ├── nav.adoc
│ │ ├── pages
│ │ │ └── index.adoc
│ │ └── partials
│ │ │ └── getting-started-note.adoc
│ │ └── typescript-sdk
│ │ ├── nav.adoc
│ │ └── pages
│ │ ├── entities.adoc
│ │ ├── enums.adoc
│ │ └── index.adoc
├── redirect-page-template.html
└── supplemental-ui
│ └── partials
│ ├── LICENSE
│ ├── footer-scripts.hbs
│ ├── head-scripts.hbs
│ ├── head-styles.hbs
│ └── header-content.hbs
├── docs
├── .nojekyll
└── index.html
├── lerna.json
├── package-lock.json
├── package.json
├── packages
├── cuba-react-core
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .snyk
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── babel.config.js
│ ├── jest.config.js
│ ├── package-lock.json
│ ├── package.json
│ ├── rollup.config.js
│ ├── src
│ │ ├── access-control
│ │ │ ├── AccessControl.tsx
│ │ │ ├── AttrPermAccessControl.tsx
│ │ │ ├── EntityPermAccessControl.tsx
│ │ │ └── SpecificPermAccessControl.tsx
│ │ ├── app
│ │ │ ├── CubaAppProvider.tsx
│ │ │ ├── MainStore.ts
│ │ │ ├── MenuConfig.ts
│ │ │ ├── Security.test.ts
│ │ │ └── Security.ts
│ │ ├── data
│ │ │ ├── Association.ts
│ │ │ ├── Collection.test.tsx
│ │ │ ├── Collection.tsx
│ │ │ ├── DataContext.tsx
│ │ │ ├── Instance.test.tsx
│ │ │ └── Instance.tsx
│ │ ├── index.ts
│ │ └── util
│ │ │ ├── collation.test.tsx
│ │ │ ├── collation.ts
│ │ │ ├── data.ts
│ │ │ ├── errorHandling.ts
│ │ │ ├── formats.ts
│ │ │ ├── internal
│ │ │ └── data.ts
│ │ │ ├── metadata.ts
│ │ │ ├── stateManagement.ts
│ │ │ └── temporal.ts
│ ├── tsconfig.json
│ └── tslint.json
├── cuba-react-ui
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .snyk
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── babel.config.js
│ ├── jest.config.js
│ ├── package-lock.json
│ ├── package.json
│ ├── resolve-node-imports-in-less.js
│ ├── rollup.config.js
│ ├── src
│ │ ├── errorHandling.test.ts
│ │ ├── i18n
│ │ │ ├── I18nProvider.tsx
│ │ │ └── validation.tsx
│ │ ├── index.less
│ │ ├── index.ts
│ │ ├── style
│ │ │ └── palette.less
│ │ ├── ui
│ │ │ ├── EntityProperty.tsx
│ │ │ ├── EntitySelectField.tsx
│ │ │ ├── FileUpload.less
│ │ │ ├── FileUpload.tsx
│ │ │ ├── ImagePreview.less
│ │ │ ├── ImagePreview.tsx
│ │ │ ├── Msg.tsx
│ │ │ ├── MultilineText.tsx
│ │ │ ├── Spinner.less
│ │ │ ├── Spinner.tsx
│ │ │ ├── form
│ │ │ │ ├── BigDecimalInput.tsx
│ │ │ │ ├── DoubleInput.tsx
│ │ │ │ ├── EntityEditor.less
│ │ │ │ ├── FieldPermissionContainer.test.tsx
│ │ │ │ ├── FieldPermssionContainer.tsx
│ │ │ │ ├── Form.tsx
│ │ │ │ ├── InputNumber.less
│ │ │ │ ├── InputWithMask.tsx
│ │ │ │ ├── IntegerInput.tsx
│ │ │ │ ├── LongInput.tsx
│ │ │ │ ├── NestedEntitiesTableField.less
│ │ │ │ ├── NestedEntityField.less
│ │ │ │ └── UuidInput.tsx
│ │ │ ├── paging
│ │ │ │ ├── Paging.test.tsx
│ │ │ │ └── Paging.tsx
│ │ │ └── table
│ │ │ │ ├── DataTable.less
│ │ │ │ ├── DataTable.tsx
│ │ │ │ ├── DataTableCell.tsx
│ │ │ │ ├── DataTableCustomFilter.less
│ │ │ │ ├── DataTableCustomFilter.tsx
│ │ │ │ ├── DataTableCustomFilterFields.tsx
│ │ │ │ ├── DataTableFilterControlLayout.less
│ │ │ │ ├── DataTableHelpers.tsx
│ │ │ │ ├── DataTableIntervalEditor.less
│ │ │ │ ├── DataTableIntervalEditor.tsx
│ │ │ │ ├── DataTableIntervalFunctions.test.ts
│ │ │ │ ├── DataTableIntervalFunctions.ts
│ │ │ │ ├── DataTableListEditor.less
│ │ │ │ └── DataTableListEditor.tsx
│ │ └── util
│ │ │ ├── errorHandling.ts
│ │ │ ├── files.ts
│ │ │ ├── formatting.test.ts
│ │ │ ├── formatting.ts
│ │ │ ├── mapCubaRestErrorToIntlId.ts
│ │ │ ├── regex.test.ts
│ │ │ └── regex.ts
│ ├── tsconfig.json
│ └── tslint.json
├── cuba-rest-js
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .npmignore
│ ├── .snyk
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── bower.json
│ ├── examples
│ │ ├── node
│ │ │ ├── README.md
│ │ │ ├── index.js
│ │ │ ├── package-lock.json
│ │ │ └── package.json
│ │ └── vanillajs-browser
│ │ │ └── index.html
│ ├── jest.config.js
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ │ ├── cuba.ts
│ │ ├── error.ts
│ │ ├── event_emitter.ts
│ │ ├── filter.ts
│ │ ├── model.ts
│ │ ├── security.ts
│ │ ├── storage.ts
│ │ └── util.ts
│ ├── test
│ │ ├── common.js
│ │ ├── cuba-app-lt-7-2.spec.js
│ │ ├── cuba-app-not-logged.spec.js
│ │ ├── cuba-app-security.spec.js
│ │ ├── cuba-app.spec.js
│ │ ├── cuba.spec.js
│ │ ├── event_emitter.spec.js
│ │ ├── security.spec.js
│ │ ├── storage.spec.js
│ │ └── utlil.spec.js
│ ├── tsconfig.json
│ └── tslint.json
└── front-generator
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .npmignore
│ ├── .nycrc.yaml
│ ├── .snyk
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── bin
│ └── gen-cuba-front.js
│ ├── custom_types
│ ├── inquirer-autocomplete-prompt.d.ts
│ ├── rxjs.d.ts
│ └── yeoman-environment.d.ts
│ ├── package-lock.json
│ ├── package.json
│ ├── scripts
│ └── copy-templates.js
│ ├── src
│ ├── cli.ts
│ ├── common
│ │ ├── base-generator.ts
│ │ ├── cli-options.ts
│ │ ├── constants.ts
│ │ ├── model
│ │ │ ├── cuba-model-utils.ts
│ │ │ └── cuba-model.ts
│ │ ├── questions.ts
│ │ ├── studio
│ │ │ ├── studio-integration.ts
│ │ │ └── studio-model.ts
│ │ ├── ts-helpers.ts
│ │ ├── ts-shorthands.ts
│ │ ├── utils.test.ts
│ │ └── utils.ts
│ ├── generators
│ │ ├── polymer2-typescript
│ │ │ ├── app
│ │ │ │ ├── index.ts
│ │ │ │ └── template
│ │ │ │ │ ├── .package-lock.json
│ │ │ │ │ ├── _gitignore
│ │ │ │ │ ├── bower.json
│ │ │ │ │ ├── images
│ │ │ │ │ ├── app-icon
│ │ │ │ │ │ ├── icon-144x144.png
│ │ │ │ │ │ ├── icon-192x192.png
│ │ │ │ │ │ ├── icon-32x32.png
│ │ │ │ │ │ ├── icon-48x48.png
│ │ │ │ │ │ ├── icon-512x512.png
│ │ │ │ │ │ ├── icon-64x64.png
│ │ │ │ │ │ ├── icon-72x72.png
│ │ │ │ │ │ └── icon-96x96.png
│ │ │ │ │ └── favicon.ico
│ │ │ │ │ ├── index.html
│ │ │ │ │ ├── manifest.json
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── polymer.json
│ │ │ │ │ ├── service-worker.js
│ │ │ │ │ ├── src
│ │ │ │ │ ├── ${project_namespace}-locale-select.html
│ │ │ │ │ ├── ${project_namespace}-locale-select.ts
│ │ │ │ │ ├── ${project_namespace}-login.html
│ │ │ │ │ ├── ${project_namespace}-login.ts
│ │ │ │ │ ├── ${project_namespace}-menu.html
│ │ │ │ │ ├── ${project_namespace}-menu.ts
│ │ │ │ │ ├── ${project_namespace}-shell.html
│ │ │ │ │ ├── ${project_namespace}-shell.ts
│ │ │ │ │ ├── ${project_namespace}-user-menu.html
│ │ │ │ │ ├── ${project_namespace}-user-menu.ts
│ │ │ │ │ ├── home
│ │ │ │ │ │ ├── ${project_namespace}-home.html
│ │ │ │ │ │ └── ${project_namespace}-home.ts
│ │ │ │ │ ├── lumo-imports.html
│ │ │ │ │ ├── material-imports.html
│ │ │ │ │ └── shared-styles.html
│ │ │ │ │ ├── sw-precache-config.js
│ │ │ │ │ └── tsconfig.json
│ │ │ ├── blank-component
│ │ │ │ ├── index.ts
│ │ │ │ └── template
│ │ │ │ │ ├── component.html
│ │ │ │ │ └── component.ts
│ │ │ ├── common.ts
│ │ │ ├── entity-cards
│ │ │ │ ├── index.ts
│ │ │ │ └── template
│ │ │ │ │ ├── entity-cards.html
│ │ │ │ │ └── entity-cards.ts
│ │ │ ├── entity-edit
│ │ │ │ ├── index.ts
│ │ │ │ └── template
│ │ │ │ │ ├── entity-edit.html
│ │ │ │ │ └── entity-edit.ts
│ │ │ ├── entity-list
│ │ │ │ ├── index.ts
│ │ │ │ └── template
│ │ │ │ │ ├── entity-list.html
│ │ │ │ │ └── entity-list.ts
│ │ │ ├── entity-management
│ │ │ │ ├── index.ts
│ │ │ │ └── template
│ │ │ │ │ ├── entity-management.html
│ │ │ │ │ └── entity-management.ts
│ │ │ └── info.json
│ │ ├── polymer2
│ │ │ ├── app
│ │ │ │ ├── index.ts
│ │ │ │ ├── questions.ts
│ │ │ │ ├── template-model.ts
│ │ │ │ └── template
│ │ │ │ │ ├── .package-lock.json
│ │ │ │ │ ├── _gitignore
│ │ │ │ │ ├── bower.json
│ │ │ │ │ ├── images
│ │ │ │ │ ├── app-icon
│ │ │ │ │ │ ├── icon-144x144.png
│ │ │ │ │ │ ├── icon-192x192.png
│ │ │ │ │ │ ├── icon-32x32.png
│ │ │ │ │ │ ├── icon-48x48.png
│ │ │ │ │ │ ├── icon-512x512.png
│ │ │ │ │ │ ├── icon-64x64.png
│ │ │ │ │ │ ├── icon-72x72.png
│ │ │ │ │ │ └── icon-96x96.png
│ │ │ │ │ └── favicon.ico
│ │ │ │ │ ├── index.html
│ │ │ │ │ ├── manifest.json
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── polymer.json
│ │ │ │ │ ├── service-worker.js
│ │ │ │ │ ├── src
│ │ │ │ │ ├── ${project_namespace}-locale-select.html
│ │ │ │ │ ├── ${project_namespace}-login.html
│ │ │ │ │ ├── ${project_namespace}-menu.html
│ │ │ │ │ ├── ${project_namespace}-shell.html
│ │ │ │ │ ├── ${project_namespace}-user-menu.html
│ │ │ │ │ ├── home
│ │ │ │ │ │ └── ${project_namespace}-home.html
│ │ │ │ │ ├── lumo-imports.html
│ │ │ │ │ ├── material-imports.html
│ │ │ │ │ └── shared-styles.html
│ │ │ │ │ └── sw-precache-config.js
│ │ │ ├── blank-component
│ │ │ │ ├── index.ts
│ │ │ │ ├── params.ts
│ │ │ │ ├── template-model.ts
│ │ │ │ └── template
│ │ │ │ │ └── component.html
│ │ │ ├── common
│ │ │ │ ├── fields
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── rest-params.ts
│ │ │ │ │ └── template
│ │ │ │ │ │ ├── booleanField.html
│ │ │ │ │ │ ├── dateField.html
│ │ │ │ │ │ ├── dateTimeField.html
│ │ │ │ │ │ ├── enumField.html
│ │ │ │ │ │ ├── fileField.html
│ │ │ │ │ │ ├── fpNumberField.html
│ │ │ │ │ │ ├── lookupField.html
│ │ │ │ │ │ ├── numberField.html
│ │ │ │ │ │ ├── textField.html
│ │ │ │ │ │ └── timeField.html
│ │ │ │ └── template-model.ts
│ │ │ ├── entity-cards
│ │ │ │ ├── index.ts
│ │ │ │ ├── params.ts
│ │ │ │ ├── template-model.ts
│ │ │ │ └── template
│ │ │ │ │ └── entity-cards.html
│ │ │ ├── entity-edit
│ │ │ │ ├── index.ts
│ │ │ │ ├── params.ts
│ │ │ │ ├── template-model.ts
│ │ │ │ └── template
│ │ │ │ │ └── entity-edit.html
│ │ │ ├── entity-list
│ │ │ │ ├── index.ts
│ │ │ │ ├── params.ts
│ │ │ │ ├── template-model.ts
│ │ │ │ └── template
│ │ │ │ │ └── entity-list.html
│ │ │ ├── entity-management
│ │ │ │ ├── index.ts
│ │ │ │ ├── params.ts
│ │ │ │ ├── template-model.ts
│ │ │ │ └── template
│ │ │ │ │ └── entity-management.html
│ │ │ ├── info.json
│ │ │ ├── query-results
│ │ │ │ ├── index.ts
│ │ │ │ ├── params.ts
│ │ │ │ ├── template-model.ts
│ │ │ │ └── template
│ │ │ │ │ └── query-result-list.html
│ │ │ ├── service-data
│ │ │ │ ├── index.ts
│ │ │ │ ├── params.ts
│ │ │ │ ├── template-model.ts
│ │ │ │ └── template
│ │ │ │ │ └── service-data.html
│ │ │ └── service-form
│ │ │ │ ├── index.ts
│ │ │ │ ├── params.ts
│ │ │ │ ├── template-model.ts
│ │ │ │ └── template
│ │ │ │ └── service-form.html
│ │ ├── react-native
│ │ │ ├── app
│ │ │ │ ├── index.ts
│ │ │ │ └── template
│ │ │ │ │ ├── .env
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── App.tsx
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── app.json
│ │ │ │ │ ├── assets
│ │ │ │ │ ├── icon.png
│ │ │ │ │ └── splash.png
│ │ │ │ │ ├── babel.config.js
│ │ │ │ │ ├── components
│ │ │ │ │ ├── Example.tsx
│ │ │ │ │ ├── Login.tsx
│ │ │ │ │ ├── PrimaryButton.tsx
│ │ │ │ │ └── Root.tsx
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── rest
│ │ │ │ │ ├── errorCodes.ts
│ │ │ │ │ └── rest.ts
│ │ │ │ │ ├── styles
│ │ │ │ │ └── palette.ts
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ └── util
│ │ │ │ │ └── base64.ts
│ │ │ └── info.json
│ │ ├── react-typescript
│ │ │ ├── app
│ │ │ │ ├── index.ts
│ │ │ │ ├── shared.ts
│ │ │ │ └── template
│ │ │ │ │ ├── .editorconfig
│ │ │ │ │ ├── .env.development.local
│ │ │ │ │ ├── .env.production.local
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── _editorconfig
│ │ │ │ │ ├── _gitignore
│ │ │ │ │ ├── i18n-message-packs
│ │ │ │ │ ├── en.json
│ │ │ │ │ ├── fr.json
│ │ │ │ │ ├── ru.json
│ │ │ │ │ └── zh-cn.json
│ │ │ │ │ ├── images.d.ts
│ │ │ │ │ ├── package-lock.json
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── public
│ │ │ │ │ ├── index.html
│ │ │ │ │ └── manifest.json
│ │ │ │ │ ├── src
│ │ │ │ │ ├── app
│ │ │ │ │ │ ├── App.css
│ │ │ │ │ │ ├── App.test.tsx
│ │ │ │ │ │ ├── App.tsx
│ │ │ │ │ │ ├── CenteredLoader.css
│ │ │ │ │ │ ├── CenteredLoader.tsx
│ │ │ │ │ │ ├── common
│ │ │ │ │ │ │ ├── Centered.css
│ │ │ │ │ │ │ └── Centered.tsx
│ │ │ │ │ │ ├── header
│ │ │ │ │ │ │ ├── AppHeader.css
│ │ │ │ │ │ │ ├── AppHeader.tsx
│ │ │ │ │ │ │ └── logo.png
│ │ │ │ │ │ ├── home
│ │ │ │ │ │ │ └── HomePage.tsx
│ │ │ │ │ │ └── login
│ │ │ │ │ │ │ ├── Login.css
│ │ │ │ │ │ │ ├── Login.tsx
│ │ │ │ │ │ │ └── logo.png
│ │ │ │ │ ├── config.ts
│ │ │ │ │ ├── i18n
│ │ │ │ │ │ ├── LanguageSwitcher.css
│ │ │ │ │ │ ├── LanguageSwitcher.tsx.ejs
│ │ │ │ │ │ ├── i18nMappings.ts.ejs
│ │ │ │ │ │ └── localeCaptions.ts.ejs
│ │ │ │ │ ├── index.css
│ │ │ │ │ ├── index.tsx.ejs
│ │ │ │ │ ├── react-app-env.d.ts
│ │ │ │ │ ├── registerServiceWorker.ts
│ │ │ │ │ └── routing.ts
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ ├── tsconfig.prod.json
│ │ │ │ │ ├── tsconfig.test.json
│ │ │ │ │ └── tslint.json
│ │ │ ├── blank-component
│ │ │ │ ├── index.ts
│ │ │ │ ├── params.ts
│ │ │ │ └── template
│ │ │ │ │ └── Component.tsx
│ │ │ ├── common
│ │ │ │ ├── base-entity-screen-generator
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── params.ts
│ │ │ │ │ └── template-model.ts
│ │ │ │ ├── entity.ts
│ │ │ │ ├── i18n.ts
│ │ │ │ ├── menu.ts
│ │ │ │ ├── questions.ts
│ │ │ │ └── template-model.ts
│ │ │ ├── entity-cards
│ │ │ │ ├── index.ts
│ │ │ │ ├── params.ts
│ │ │ │ ├── template-model.ts
│ │ │ │ └── template
│ │ │ │ │ └── EntityCards.tsx.ejs
│ │ │ ├── entity-management-hooks
│ │ │ │ ├── index.ts
│ │ │ │ └── template
│ │ │ │ │ ├── Cards.tsx.ejs
│ │ │ │ │ ├── EntityManagement.tsx.ejs
│ │ │ │ │ ├── EntityManagementEditor.tsx.ejs
│ │ │ │ │ ├── List.tsx.ejs
│ │ │ │ │ └── Table.tsx.ejs
│ │ │ ├── entity-management
│ │ │ │ ├── entity-management-en.json
│ │ │ │ ├── entity-management-fr.json
│ │ │ │ ├── entity-management-ru.json
│ │ │ │ ├── entity-management-zh-cn.json
│ │ │ │ ├── index.ts
│ │ │ │ ├── params.ts
│ │ │ │ ├── shared.ts
│ │ │ │ ├── template-model.ts
│ │ │ │ └── template
│ │ │ │ │ ├── Cards.tsx.ejs
│ │ │ │ │ ├── EntityManagement.tsx.ejs
│ │ │ │ │ ├── EntityManagementEditor.tsx.ejs
│ │ │ │ │ ├── List.tsx.ejs
│ │ │ │ │ └── Table.tsx.ejs
│ │ │ └── info.json
│ │ └── sdk
│ │ │ ├── README.md
│ │ │ ├── all
│ │ │ └── index.ts
│ │ │ ├── import-utils.ts
│ │ │ ├── info.json
│ │ │ ├── model
│ │ │ ├── entities-generation.ts
│ │ │ ├── entity-views-generation.ts
│ │ │ ├── enums-generation.ts
│ │ │ ├── index.ts
│ │ │ └── model-utils.ts
│ │ │ ├── sdk-generator.ts
│ │ │ └── services
│ │ │ ├── method-params-type.ts
│ │ │ ├── queries-generation.ts
│ │ │ └── services-generation.ts
│ ├── index.ts
│ ├── init.ts
│ ├── list.ts
│ └── test
│ │ ├── common
│ │ ├── base-generator.test.ts
│ │ ├── cli-options.test.ts
│ │ ├── model
│ │ │ └── cuba-model-utils.test.ts
│ │ ├── questions.test.ts
│ │ └── test-utils.ts
│ │ ├── fixtures
│ │ ├── answers.json
│ │ ├── answers
│ │ │ ├── hooks-management-cards.json
│ │ │ ├── hooks-management-list.json
│ │ │ ├── hooks-management-table.json
│ │ │ ├── int-id-management-table.json
│ │ │ ├── string-id-management-table-explicit-id-name.json
│ │ │ ├── string-id-management-table-no-id-name.json
│ │ │ ├── string-id-management-table-unexistent-id-name.json
│ │ │ └── string-id-management-table.json
│ │ ├── base-entity-model.json
│ │ ├── entity-model--association-o2o.json
│ │ ├── entity-model--datatypes-test-entity.json
│ │ ├── entity-model-favourite-car.json
│ │ ├── entity-model.json
│ │ ├── enums-model--identical-names.json
│ │ ├── enums-model.json
│ │ ├── mpg-projectModel.json
│ │ ├── project-model--scr-no-id-attr.json
│ │ ├── project-model--scr.json
│ │ ├── query-model-car.json
│ │ ├── query-model-full.json
│ │ ├── query-model-overloads.json
│ │ ├── react-client
│ │ │ ├── .env.development.local
│ │ │ ├── .env.production.local
│ │ │ └── src
│ │ │ │ ├── app
│ │ │ │ ├── component
│ │ │ │ │ └── BlankComponent.tsx
│ │ │ │ ├── entity-cards
│ │ │ │ │ └── MpgFavoriteCarCards.tsx
│ │ │ │ └── entity-management
│ │ │ │ │ ├── CarCards.tsx
│ │ │ │ │ ├── CarEdit.tsx
│ │ │ │ │ ├── CarEditLowCase.tsx
│ │ │ │ │ ├── CarList.tsx
│ │ │ │ │ ├── CarManagement.tsx
│ │ │ │ │ ├── CarManagementLowCase.tsx
│ │ │ │ │ ├── CarTable.tsx
│ │ │ │ │ ├── CarTableLowCase.tsx
│ │ │ │ │ ├── HooksEMCardsBrowse.tsx
│ │ │ │ │ ├── HooksEMCardsEdit.tsx
│ │ │ │ │ ├── HooksEMCardsMgt.tsx
│ │ │ │ │ ├── HooksEMListBrowse.tsx
│ │ │ │ │ ├── HooksEMListEdit.tsx
│ │ │ │ │ ├── HooksEMListMgt.tsx
│ │ │ │ │ ├── HooksEMTableBrowse.tsx
│ │ │ │ │ ├── HooksEMTableEdit.tsx
│ │ │ │ │ ├── HooksEMTableMgt.tsx
│ │ │ │ │ ├── StringIdMgtTableBrowse.tsx
│ │ │ │ │ ├── StringIdMgtTableEdit.tsx
│ │ │ │ │ └── StringIdMgtTableManagement.tsx
│ │ │ │ └── index.tsx
│ │ ├── react-native-client
│ │ │ └── components
│ │ │ │ └── Root.tsx
│ │ ├── service-model.json
│ │ ├── templates
│ │ │ ├── EntityManagementEditor.tsx
│ │ │ ├── i18nMappings.ts
│ │ │ └── i18nMappings.ts.ejs
│ │ ├── view-properties--association-o2o.json
│ │ └── view-properties--datatypes-test-entity.json
│ │ ├── generator.test.ts
│ │ ├── generators
│ │ ├── polymer2
│ │ │ └── polymer2-generator.test.ts
│ │ ├── react-native
│ │ │ └── react-native-generator.test.ts
│ │ ├── react-typrscript
│ │ │ ├── common
│ │ │ │ ├── base-entity-screen-generator
│ │ │ │ │ └── index.test.ts
│ │ │ │ ├── entity.test.ts
│ │ │ │ └── i18n.test.ts
│ │ │ ├── entity-management
│ │ │ │ └── index.test.ts
│ │ │ ├── react-generator-process-templates.test.ts
│ │ │ └── react-generator.test.ts
│ │ └── sdk
│ │ │ ├── model
│ │ │ ├── entities-generation.test.ts
│ │ │ └── enums-generation.test.ts
│ │ │ ├── sdk-generator.test.ts
│ │ │ └── services
│ │ │ ├── method-params-type.test.ts
│ │ │ ├── queries-generation.test.ts
│ │ │ └── services-generation.test.ts
│ │ ├── init.test.ts
│ │ ├── list.test.ts
│ │ ├── studio-integration.test.ts
│ │ ├── test-commons.ts
│ │ └── utils.test.ts
│ ├── test
│ ├── e2e
│ │ ├── e2e-common.js
│ │ ├── expect
│ │ │ ├── entities
│ │ │ │ ├── ScrUserInfo.ts
│ │ │ │ ├── scr$Car.ts
│ │ │ │ └── scr$SparePart.ts
│ │ │ ├── enums
│ │ │ │ └── enums.ts
│ │ │ ├── queries.ts
│ │ │ └── services.ts
│ │ ├── fixtures
│ │ │ ├── polymer-client
│ │ │ │ └── answers.json
│ │ │ ├── projectModel-empty.json
│ │ │ ├── projectModel-new.json
│ │ │ ├── projectModel-scr.json
│ │ │ ├── react-client
│ │ │ │ └── answers.json
│ │ │ └── sdk
│ │ │ │ └── tsconfig.json
│ │ ├── polymer2-ts.test.js
│ │ ├── polymer2.test.js
│ │ ├── react-client--empty-model.test.js
│ │ ├── react-client--new-project.test.js
│ │ └── sdk.test.js
│ └── mocha.opts
│ ├── tsconfig.declarations.json
│ ├── tsconfig.json
│ └── tsconfig_strict.json
├── sample-car-rent-7-1
├── .gitignore
├── build.gradle
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── modules
│ ├── core
│ │ ├── db
│ │ │ └── init
│ │ │ │ └── postgres
│ │ │ │ ├── 10.create-db.sql
│ │ │ │ ├── 20.create-db.sql
│ │ │ │ └── 30.create-db.sql
│ │ ├── src
│ │ │ └── com
│ │ │ │ └── company
│ │ │ │ └── scr
│ │ │ │ ├── app.properties
│ │ │ │ ├── service
│ │ │ │ └── FavoriteServiceBean.java
│ │ │ │ └── spring.xml
│ │ ├── test
│ │ │ └── com
│ │ │ │ └── company
│ │ │ │ └── scr
│ │ │ │ ├── ScrTestContainer.java
│ │ │ │ └── core
│ │ │ │ └── SampleIntegrationTest.java
│ │ └── web
│ │ │ ├── META-INF
│ │ │ └── context.xml
│ │ │ └── WEB-INF
│ │ │ └── web.xml
│ ├── global
│ │ └── src
│ │ │ └── com
│ │ │ └── company
│ │ │ └── scr
│ │ │ ├── entity
│ │ │ ├── Car.java
│ │ │ ├── CarRent.java
│ │ │ ├── CarType.java
│ │ │ ├── EcoRank.java
│ │ │ ├── FavoriteCar.java
│ │ │ ├── Garage.java
│ │ │ ├── ScrUser.java
│ │ │ ├── ScrUserInfo.java
│ │ │ ├── SparePart.java
│ │ │ ├── SparePartO2M.java
│ │ │ ├── SparePartO2O.java
│ │ │ ├── TechnicalCertificate.java
│ │ │ ├── constraints
│ │ │ │ ├── PurchasedAfterManufactured.java
│ │ │ │ ├── PurchasedAfterManufacturedValidator.java
│ │ │ │ ├── ReliabilityPolicyCompliant.java
│ │ │ │ ├── ReliabilityPolicyCompliantValidator.java
│ │ │ │ ├── messages.properties
│ │ │ │ └── messages_ru.properties
│ │ │ ├── messages.properties
│ │ │ └── messages_ru.properties
│ │ │ ├── metadata.xml
│ │ │ ├── persistence.xml
│ │ │ ├── service
│ │ │ └── FavoriteService.java
│ │ │ └── views.xml
│ └── web
│ │ ├── src
│ │ └── com
│ │ │ └── company
│ │ │ └── scr
│ │ │ ├── web-app.properties
│ │ │ ├── web-dispatcher-spring.xml
│ │ │ ├── web-menu.xml
│ │ │ ├── web-permissions.xml
│ │ │ ├── web-screens.xml
│ │ │ ├── web-spring.xml
│ │ │ └── web
│ │ │ ├── messages.properties
│ │ │ └── screens
│ │ │ ├── car
│ │ │ ├── CarBrowse.java
│ │ │ ├── CarEdit.java
│ │ │ ├── car-browse.xml
│ │ │ ├── car-edit.xml
│ │ │ └── messages.properties
│ │ │ ├── favoritecar
│ │ │ ├── FavoriteCarBrowse.java
│ │ │ ├── FavoriteCarEdit.java
│ │ │ ├── favorite-car-browse.xml
│ │ │ ├── favorite-car-edit.xml
│ │ │ └── messages.properties
│ │ │ └── garage
│ │ │ ├── GarageBrowse.java
│ │ │ ├── GarageEdit.java
│ │ │ ├── garage-browse.xml
│ │ │ ├── garage-edit.xml
│ │ │ └── messages.properties
│ │ └── web
│ │ ├── META-INF
│ │ └── context.xml
│ │ └── WEB-INF
│ │ └── web.xml
└── settings.gradle
├── sample-car-rent
├── .gitignore
├── README.md
├── build.gradle
├── extra.gradle
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── modules
│ ├── core
│ │ ├── db
│ │ │ └── init
│ │ │ │ └── postgres
│ │ │ │ ├── 10.create-db.sql
│ │ │ │ ├── 20.create-db.sql
│ │ │ │ └── 30.create-db.sql
│ │ ├── src
│ │ │ └── com
│ │ │ │ └── company
│ │ │ │ └── scr
│ │ │ │ ├── app.properties
│ │ │ │ ├── core
│ │ │ │ ├── FakeDataGenerator.java
│ │ │ │ ├── FakeDataGeneratorImpl.java
│ │ │ │ ├── FakeDataGeneratorMBean.java
│ │ │ │ └── FakeDataGeneratorMBeanImpl.java
│ │ │ │ ├── security
│ │ │ │ ├── GenericUiManagersRole.java
│ │ │ │ ├── GenericUiMechanicsRole.java
│ │ │ │ ├── RestAdminsRole.java
│ │ │ │ ├── RestManagersRole.java
│ │ │ │ └── RestMechanicsRole.java
│ │ │ │ ├── service
│ │ │ │ └── FavoriteServiceBean.java
│ │ │ │ └── spring.xml
│ │ └── web
│ │ │ ├── META-INF
│ │ │ └── context.xml
│ │ │ └── WEB-INF
│ │ │ └── web.xml
│ ├── global
│ │ └── src
│ │ │ └── com
│ │ │ └── company
│ │ │ └── scr
│ │ │ ├── entity
│ │ │ ├── Car.java
│ │ │ ├── CarRent.java
│ │ │ ├── CarType.java
│ │ │ ├── EcoRank.java
│ │ │ ├── FavoriteCar.java
│ │ │ ├── Garage.java
│ │ │ ├── ScrUser.java
│ │ │ ├── ScrUserInfo.java
│ │ │ ├── SparePart.java
│ │ │ ├── TechnicalCertificate.java
│ │ │ ├── constraints
│ │ │ │ ├── PurchasedAfterManufactured.java
│ │ │ │ ├── PurchasedAfterManufacturedValidator.java
│ │ │ │ ├── ReliabilityPolicyCompliant.java
│ │ │ │ ├── ReliabilityPolicyCompliantValidator.java
│ │ │ │ ├── messages.properties
│ │ │ │ └── messages_ru.properties
│ │ │ ├── messages.properties
│ │ │ ├── messages_ru.properties
│ │ │ └── test
│ │ │ │ ├── AssociationM2MTestEntity.java
│ │ │ │ ├── AssociationM2OTestEntity.java
│ │ │ │ ├── AssociationO2MTestEntity.java
│ │ │ │ ├── AssociationO2OTestEntity.java
│ │ │ │ ├── BoringStringIdTestEntity.java
│ │ │ │ ├── CompositeAttribute.java
│ │ │ │ ├── CompositeKeyEntity.java
│ │ │ │ ├── CompositionO2MTestEntity.java
│ │ │ │ ├── CompositionO2OTestEntity.java
│ │ │ │ ├── DatatypesTestEntity.java
│ │ │ │ ├── DatatypesTestEntity2.java
│ │ │ │ ├── DatatypesTestEntity3.java
│ │ │ │ ├── DeeplyNestedTestEntity.java
│ │ │ │ ├── IntIdentityIdTestEntity.java
│ │ │ │ ├── IntegerIdTestEntity.java
│ │ │ │ ├── StringIdTestEntity.java
│ │ │ │ ├── TestEnum.java
│ │ │ │ ├── WeirdStringIdTestEntity.java
│ │ │ │ └── messages.properties
│ │ │ ├── metadata.xml
│ │ │ ├── persistence.xml
│ │ │ ├── service
│ │ │ └── FavoriteService.java
│ │ │ └── views.xml
│ ├── gui
│ │ └── src
│ │ │ └── com
│ │ │ └── company
│ │ │ └── scr
│ │ │ ├── gui
│ │ │ └── messages.properties
│ │ │ └── screens.xml
│ ├── portal
│ │ ├── src
│ │ │ └── com
│ │ │ │ └── company
│ │ │ │ └── scr
│ │ │ │ ├── portal-app.properties
│ │ │ │ ├── portal-dispatcher-spring.xml
│ │ │ │ ├── portal-security-spring.xml
│ │ │ │ ├── portal-spring.xml
│ │ │ │ └── portal
│ │ │ │ ├── command
│ │ │ │ └── LoginUserCommand.java
│ │ │ │ ├── controllers
│ │ │ │ ├── LoginController.java
│ │ │ │ └── PortalController.java
│ │ │ │ └── messages.properties
│ │ └── web
│ │ │ ├── META-INF
│ │ │ └── context.xml
│ │ │ ├── WEB-INF
│ │ │ ├── templates
│ │ │ │ ├── error
│ │ │ │ │ ├── 404.html
│ │ │ │ │ └── 500.html
│ │ │ │ ├── index.html
│ │ │ │ ├── login.html
│ │ │ │ └── maintain.html
│ │ │ └── web.xml
│ │ │ └── resources
│ │ │ ├── css
│ │ │ └── common.css
│ │ │ └── favicon.ico
│ ├── readme.md
│ └── web
│ │ ├── src
│ │ └── com
│ │ │ └── company
│ │ │ └── scr
│ │ │ ├── rest-queries.xml
│ │ │ ├── rest-services.xml
│ │ │ ├── web-app.properties
│ │ │ ├── web-dispatcher-spring.xml
│ │ │ ├── web-menu.xml
│ │ │ ├── web-permissions.xml
│ │ │ ├── web-screens.xml
│ │ │ ├── web-spring.xml
│ │ │ └── web
│ │ │ ├── ScrApp.java
│ │ │ ├── car
│ │ │ ├── CarBrowse.java
│ │ │ ├── CarEdit.java
│ │ │ ├── car-browse.xml
│ │ │ ├── car-edit.xml
│ │ │ └── messages.properties
│ │ │ ├── carrent
│ │ │ ├── CarRentBrowse.java
│ │ │ ├── car-rent-browse.xml
│ │ │ └── messages.properties
│ │ │ ├── favoritecar
│ │ │ ├── FavoriteCarBrowse.java
│ │ │ ├── favorite-car-browse.xml
│ │ │ └── messages.properties
│ │ │ ├── garage
│ │ │ ├── GarageBrowse.java
│ │ │ ├── GarageEdit.java
│ │ │ ├── garage-browse.xml
│ │ │ ├── garage-edit.xml
│ │ │ └── messages.properties
│ │ │ ├── messages.properties
│ │ │ ├── messages_ru.properties
│ │ │ ├── screens
│ │ │ ├── associationm2mtestentity
│ │ │ │ ├── AssociationM2MTestEntityBrowse.java
│ │ │ │ ├── AssociationM2MTestEntityEdit.java
│ │ │ │ ├── association-m2m-test-entity-browse.xml
│ │ │ │ ├── association-m2m-test-entity-edit.xml
│ │ │ │ ├── messages.properties
│ │ │ │ └── messages_ru.properties
│ │ │ ├── associationm2otestentity
│ │ │ │ ├── AssociationM2OTestEntityBrowse.java
│ │ │ │ ├── AssociationM2OTestEntityEdit.java
│ │ │ │ ├── association-m2o-test-entity-browse.xml
│ │ │ │ ├── association-m2o-test-entity-edit.xml
│ │ │ │ ├── messages.properties
│ │ │ │ └── messages_ru.properties
│ │ │ ├── associationo2mtestentity
│ │ │ │ ├── AssociationO2MTestEntityBrowse.java
│ │ │ │ ├── AssociationO2MTestEntityEdit.java
│ │ │ │ ├── association-o2m-test-entity-browse.xml
│ │ │ │ ├── association-o2m-test-entity-edit.xml
│ │ │ │ ├── messages.properties
│ │ │ │ └── messages_ru.properties
│ │ │ ├── associationo2otestentity
│ │ │ │ ├── AssociationO2OTestEntityBrowse.java
│ │ │ │ ├── AssociationO2OTestEntityEdit.java
│ │ │ │ ├── association-o2o-test-entity-browse.xml
│ │ │ │ ├── association-o2o-test-entity-edit.xml
│ │ │ │ ├── messages.properties
│ │ │ │ └── messages_ru.properties
│ │ │ ├── compositekeyentity
│ │ │ │ ├── CompositeKeyEntityBrowse.java
│ │ │ │ ├── CompositeKeyEntityEdit.java
│ │ │ │ ├── composite-key-entity-browse.xml
│ │ │ │ └── composite-key-entity-edit.xml
│ │ │ ├── compositiono2mtestentity
│ │ │ │ ├── CompositionO2MTestEntityBrowse.java
│ │ │ │ ├── CompositionO2MTestEntityEdit.java
│ │ │ │ ├── composition-o2m-test-entity-browse.xml
│ │ │ │ ├── composition-o2m-test-entity-edit.xml
│ │ │ │ ├── messages.properties
│ │ │ │ └── messages_ru.properties
│ │ │ ├── compositiono2otestentity
│ │ │ │ ├── CompositionO2OTestEntityBrowse.java
│ │ │ │ ├── CompositionO2OTestEntityEdit.java
│ │ │ │ ├── composition-o2o-test-entity-browse.xml
│ │ │ │ ├── composition-o2o-test-entity-edit.xml
│ │ │ │ ├── messages.properties
│ │ │ │ └── messages_ru.properties
│ │ │ ├── datatypestestentity
│ │ │ │ ├── DatatypesTestEntityBrowse.java
│ │ │ │ ├── DatatypesTestEntityEdit.java
│ │ │ │ ├── datatypes-test-entity-browse.xml
│ │ │ │ ├── datatypes-test-entity-edit.xml
│ │ │ │ ├── messages.properties
│ │ │ │ └── messages_ru.properties
│ │ │ ├── datatypestestentity2
│ │ │ │ ├── DatatypesTestEntity2Browse.java
│ │ │ │ ├── DatatypesTestEntity2Edit.java
│ │ │ │ ├── datatypes-test-entity2-browse.xml
│ │ │ │ ├── datatypes-test-entity2-edit.xml
│ │ │ │ ├── messages.properties
│ │ │ │ └── messages_ru.properties
│ │ │ ├── datatypestestentity3
│ │ │ │ ├── DatatypesTestEntity3Browse.java
│ │ │ │ ├── DatatypesTestEntity3Edit.java
│ │ │ │ ├── datatypes-test-entity3-browse.xml
│ │ │ │ ├── datatypes-test-entity3-edit.xml
│ │ │ │ ├── messages.properties
│ │ │ │ └── messages_ru.properties
│ │ │ ├── deeplynestedtestentity
│ │ │ │ ├── DeeplyNestedTestEntityBrowse.java
│ │ │ │ ├── DeeplyNestedTestEntityEdit.java
│ │ │ │ ├── deeply-nested-test-entity-browse.xml
│ │ │ │ ├── deeply-nested-test-entity-edit.xml
│ │ │ │ ├── messages.properties
│ │ │ │ └── messages_ru.properties
│ │ │ ├── sparepart
│ │ │ │ ├── SparePartBrowse.java
│ │ │ │ ├── SparePartEdit.java
│ │ │ │ ├── messages.properties
│ │ │ │ ├── messages_ru.properties
│ │ │ │ ├── spare-part-browse.xml
│ │ │ │ └── spare-part-edit.xml
│ │ │ └── stringidtestentity
│ │ │ │ ├── StringIdTestEntityBrowse.java
│ │ │ │ ├── StringIdTestEntityEdit.java
│ │ │ │ ├── messages.properties
│ │ │ │ ├── messages_ru.properties
│ │ │ │ ├── string-id-test-entity-browse.xml
│ │ │ │ └── string-id-test-entity-edit.xml
│ │ │ └── technicalcertificate
│ │ │ ├── TechnicalCertificateBrowse.java
│ │ │ ├── messages.properties
│ │ │ └── technical-certificate-browse.xml
│ │ ├── themes
│ │ └── halo
│ │ │ ├── branding
│ │ │ ├── app-icon-login.png
│ │ │ └── app-icon-menu.png
│ │ │ ├── com.company.scr
│ │ │ ├── app-component.scss
│ │ │ ├── halo-ext-defaults.scss
│ │ │ └── halo-ext.scss
│ │ │ ├── favicon.ico
│ │ │ └── styles.scss
│ │ └── web
│ │ ├── META-INF
│ │ └── context.xml
│ │ └── WEB-INF
│ │ └── web.xml
├── settings.gradle
├── studio-intellij.xml
└── studio-settings.xml
├── scripts
├── audit
│ └── snyk.js
├── ci-bootstrap-backend.js
├── common.js
├── docs
│ ├── generate-docs-site.js
│ └── update-docs-src.js
├── generate-client-scr.js
├── generate-react-client-scr.js
├── generate-react-native-client-scr.js
├── model
│ ├── projectModel-scr.json
│ └── react-client-scr-answers.json
├── pack-client-libs.js
├── pack-given-client-libs.js
├── pack-react-client-libs.js
├── pack-react-native-client-libs.js
├── run-gradle.js
├── screens
│ ├── boring-string-id-management-table.json
│ ├── composite-key-entity-management-cards.json
│ ├── composite-key-entity-management-list.json
│ ├── composite-key-entity-management-table.json
│ ├── hooks-management-cards.json
│ ├── hooks-management-list.json
│ ├── hooks-management-table.json
│ ├── int-id-management-cards.json
│ ├── int-id-management-list.json
│ ├── int-id-management-table.json
│ ├── int-identity-id-cards.json
│ ├── int-identity-id-management-cards.json
│ ├── int-identity-id-management-list.json
│ ├── int-identity-id-management-table.json
│ ├── string-id-cards.json
│ ├── string-id-management-cards.json
│ ├── string-id-management-list.json
│ ├── string-id-management-table.json
│ ├── weird-string-id-management-cards.json
│ ├── weird-string-id-management-list.json
│ └── weird-string-id-management-table.json
├── update-client-libs.js
├── update-given-client-libs.js
├── update-react-client-libs.js
└── update-react-native-client-libs.js
├── test-pup
├── babel.config.js
├── common
│ ├── login-to-scr.js
│ └── paging.js
├── jest.config.js
├── package-lock.json
├── package.json
├── react-client-scr-71
│ └── car-editor-security.test.js
└── react-client-scr
│ ├── app-start.test.js
│ ├── car-browse-cards-paging.test.js
│ ├── car-browse-components.test.js
│ ├── car-browse-list-paging.test.js
│ ├── car-editor-security.test.js
│ └── data-table
│ └── data-table-custom-filter
│ ├── FilterActions.js
│ ├── data-table-filters-association-m2o.test.js
│ ├── data-table-filters-association-o2o.test.js
│ ├── data-table-filters-bigdecimal.test.js
│ ├── data-table-filters-boolean.test.js
│ ├── data-table-filters-composition-o2o.test.js
│ ├── data-table-filters-date.test.js
│ ├── data-table-filters-datetime.test.js
│ ├── data-table-filters-double.test.js
│ ├── data-table-filters-integer.test.js
│ ├── data-table-filters-localdate.test.js
│ ├── data-table-filters-localdatetime.test.js
│ ├── data-table-filters-localtime.test.js
│ ├── data-table-filters-long.test.js
│ ├── data-table-filters-offsetdatetime.test.js
│ ├── data-table-filters-offsettime.test.js
│ ├── data-table-filters-string.test.js
│ ├── data-table-filters-time.test.js
│ ├── data-table-filters-uuid.test.js
│ └── data-table-no-filters.test.js
└── travis
└── push-client-builds.sh
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Exclude docs folder from GitHub language statistics
2 | docs/** linguist-documentation
3 | docs-src/** linguist-documentation
4 | docs-src-cn/** linguist-documentation
5 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 | node_modules
3 | react-client-scr/**
4 | react-native-client-scr/**
5 | docs-build*/**
6 | _testgen/**
--------------------------------------------------------------------------------
/.nojekyll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/.nojekyll
--------------------------------------------------------------------------------
/.snyk:
--------------------------------------------------------------------------------
1 | # Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities.
2 | version: v1.13.5
3 | ignore: {}
4 | patch: {}
5 |
--------------------------------------------------------------------------------
/commitlint.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | extends: ['@commitlint/config-conventional'],
3 | rules: {
4 | 'scope-enum': [2, 'always', [
5 | 'React', 'React Native', 'SDK',
6 | 'DataTable', 'Front Generator',
7 | 'deps', 'deps-dev'
8 | ]],
9 | 'scope-case': [0],
10 | 'type-enum': [2, 'always', [
11 | 'feat', 'fix', 'docs', 'style', 'refactor', 'perf', 'test', 'chore', 'revert', 'WIP'
12 | ]],
13 | 'type-case': [0],
14 | 'header-max-length': [2, 'always', 100]
15 | }
16 | };
17 |
--------------------------------------------------------------------------------
/docs-src-cn/api-reference/cuba-react-core/assets/images/icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/api-reference/cuba-react-core/assets/images/icons.png
--------------------------------------------------------------------------------
/docs-src-cn/api-reference/cuba-react-core/assets/images/icons@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/api-reference/cuba-react-core/assets/images/icons@2x.png
--------------------------------------------------------------------------------
/docs-src-cn/api-reference/cuba-react-core/assets/images/widgets.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/api-reference/cuba-react-core/assets/images/widgets.png
--------------------------------------------------------------------------------
/docs-src-cn/api-reference/cuba-react-core/assets/images/widgets@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/api-reference/cuba-react-core/assets/images/widgets@2x.png
--------------------------------------------------------------------------------
/docs-src-cn/api-reference/cuba-react-ui/assets/images/icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/api-reference/cuba-react-ui/assets/images/icons.png
--------------------------------------------------------------------------------
/docs-src-cn/api-reference/cuba-react-ui/assets/images/icons@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/api-reference/cuba-react-ui/assets/images/icons@2x.png
--------------------------------------------------------------------------------
/docs-src-cn/api-reference/cuba-react-ui/assets/images/widgets.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/api-reference/cuba-react-ui/assets/images/widgets.png
--------------------------------------------------------------------------------
/docs-src-cn/api-reference/cuba-react-ui/assets/images/widgets@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/api-reference/cuba-react-ui/assets/images/widgets@2x.png
--------------------------------------------------------------------------------
/docs-src-cn/api-reference/cuba-rest-js/assets/images/icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/api-reference/cuba-rest-js/assets/images/icons.png
--------------------------------------------------------------------------------
/docs-src-cn/api-reference/cuba-rest-js/assets/images/icons@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/api-reference/cuba-rest-js/assets/images/icons@2x.png
--------------------------------------------------------------------------------
/docs-src-cn/api-reference/cuba-rest-js/assets/images/widgets.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/api-reference/cuba-rest-js/assets/images/widgets.png
--------------------------------------------------------------------------------
/docs-src-cn/api-reference/cuba-rest-js/assets/images/widgets@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/api-reference/cuba-rest-js/assets/images/widgets@2x.png
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/antora.yml:
--------------------------------------------------------------------------------
1 | name: cuba-frontend-docs
2 | title: CUBA 前端 UI 开发手册
3 | version: v20.1
4 | nav:
5 | - modules/overview/nav.adoc
6 | - modules/getting-started/nav.adoc
7 | - modules/client-react/nav.adoc
8 | - modules/client-react-native/nav.adoc
9 | - modules/client-polymer/nav.adoc
10 | - modules/cuba-react-core/nav.adoc
11 | - modules/cuba-react-ui/nav.adoc
12 | - modules/typescript-sdk/nav.adoc
13 | - modules/generator/nav.adoc
14 | - modules/cuba-rest-js/nav.adoc
15 | - modules/libs/nav.adoc
16 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/client-polymer/nav.adoc:
--------------------------------------------------------------------------------
1 | * xref:index.adoc[Polymer Client (Deprecated)]
2 | ** xref:polymer/polymer_requirements.adoc[Requirements]
3 | ** xref:polymer/polymer_supported_browsers.adoc[Supported Browsers]
4 | ** xref:polymer/polymer_build_and_structure.adoc[Build System and Project Structure]
5 | ** xref:polymer/cuba_web_components.adoc[CUBA Web Components]
6 | ** xref:polymer/polymer_styling.adoc[Styling]
7 | ** xref:polymer/polymer_offline.adoc[Offline Capabilities]
8 | ** xref:polymer/polymer2_typescript/polymer2_typescript.adoc[TypeScript Support]
9 | ** xref:polymer/polymer_troubleshooting.adoc[Troubleshooting]
10 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/client-polymer/pages/polymer/cuba_web_components.adoc:
--------------------------------------------------------------------------------
1 | = CUBA Web Components
2 |
3 | The detailed API reference of CUBA elements can be found https://cuba-elements.github.io/cuba-elements/[here].
4 |
5 | include::cuba_web_components/polymer_inintialization.adoc[leveloffset=+1]
6 |
7 | include::cuba_web_components/polymer_working_with_data.adoc[leveloffset=+1]
8 |
9 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/client-polymer/pages/polymer/cuba_web_components/polymer_inintialization.adoc:
--------------------------------------------------------------------------------
1 | = Initialization
2 |
3 | In order to use any `cuba-` element you need to initialize common library and connection to the REST API using `cuba-app` element :
4 |
5 | [source,html]
6 | ----
7 |
8 | ----
9 |
10 | It should be placed once in your app as early as possible. Do not change properties dynamically or detach/attach the element after initialization.
11 |
12 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/client-polymer/pages/polymer/polymer_requirements.adoc:
--------------------------------------------------------------------------------
1 | = Requirements
2 |
3 | http://git-scm.com/downloads[Git] should be installed and available from the command line.
4 | It’s required for https://bower.io/[bower] - the package manager for front-end applications.
5 |
6 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/client-polymer/pages/polymer/polymer_styling.adoc:
--------------------------------------------------------------------------------
1 | = Styling
2 |
3 | See the Polymer's https://www.polymer-project.org/2.0/docs/devguide/style-shadow-dom[styling guide]. The most noticeable difference between traditional approach is how global styles are specified.
4 | Since Polymer elements use Shadow DOM global styles do not leak inside the components. You need to use https://www.polymer-project.org/2.0/docs/devguide/style-shadow-dom#style-modules[style-modules] instead. There is a `shares-styles.html` file in Polymer client which is automatically being imported to any new component created in Studio.
5 |
6 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/client-polymer/pages/polymer/polymer_supported_browsers.adoc:
--------------------------------------------------------------------------------
1 | = Supported Browsers
2 |
3 | See the list of supported browsers on the Polymer’s https://polymer-library.polymer-project.org/2.0/docs/browsers[website]
4 |
5 | [WARNING]
6 | ====
7 | Please do not to use Polymer client if you are targeting legacy browsers.
8 | ====
9 |
10 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/client-react-native/images/RNDemo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/doc-component-repo/modules/client-react-native/images/RNDemo.gif
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/client-react-native/nav.adoc:
--------------------------------------------------------------------------------
1 | * React Native Client
2 | ** xref:starter-guide.adoc[开始使用 React Native Client]
3 | ** xref:technologies.adoc[技术概览]
4 | ** xref:learning-path.adoc[然后怎么办?]
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/client-react-native/pages/learning-path.adoc:
--------------------------------------------------------------------------------
1 | = 然后怎么办?
2 |
3 | 查阅 xref:cuba-react-core:index.adoc[CUBA React Core] 章节了解可用的组件以及如何使用。
4 |
5 | 查阅 {api_rest}[CUBA REST JS] 了解您的组件如何与 {manual_restApi}[Generic REST API] 通信。
6 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/client-react-native/pages/technologies.adoc:
--------------------------------------------------------------------------------
1 | = 技术概览
2 |
3 | React Native client 基于下面的框架和库开发:
4 |
5 | * https://facebook.github.io/react-native/[React Native] - UI 渲染
6 | * https://mobx.js.org/[MobX] - 响应式状态管理
7 | * xref:cuba-react-core:index.adoc[CUBA React Core] - CUBA React core 组件和工具
8 | * {api_rest}[CUBA REST JS] - 与 СUBA 通用 REST API 交互
9 | * https://expo.io/[Expo] - React Native 的开发工具
10 |
11 | React Native client 使用 link:https://www.typescriptlang.org/[TypeScript] 开发。
12 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/client-react/images/data-table-demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/doc-component-repo/modules/client-react/images/data-table-demo.gif
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/client-react/images/home-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/doc-component-repo/modules/client-react/images/home-screen.png
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/client-react/images/login-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/doc-component-repo/modules/client-react/images/login-screen.png
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/client-react/images/pet-clinic-browser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/doc-component-repo/modules/client-react/images/pet-clinic-browser.png
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/client-react/images/pet-clinic-editor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/doc-component-repo/modules/client-react/images/pet-clinic-editor.png
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/client-react/images/studio-adding-frontend-component.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/doc-component-repo/modules/client-react/images/studio-adding-frontend-component.gif
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/client-react/images/studio-create-front-module.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/doc-component-repo/modules/client-react/images/studio-create-front-module.gif
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/client-react/nav.adoc:
--------------------------------------------------------------------------------
1 | * React Client
2 | ** xref:starter-guide.adoc[开始使用 React Client]
3 | ** xref:learning-path.adoc[然后怎么办?]
4 | ** xref:technologies.adoc[技术概览]
5 | ** xref:supported-browsers.adoc[支持的浏览器]
6 | ** xref:creating-react-components.adoc[创建 React 组件]
7 | ** xref:mobx.adoc[MobX 处理 Observable State]
8 | ** xref:routing.adoc[路由和目录]
9 | ** xref:forms.adoc[表单]
10 | ** xref:i18n.adoc[国际化]
11 | ** xref:theme.adoc[自定义主题]
12 | ** xref:backend-model.adoc[后端模型]
13 | ** xref:sync-project-model.adoc[项目模型同步]
14 | ** xref:security.adoc[安全]
15 | ** xref:build.adoc[构建客户端]
16 | ** xref:config.adoc[配置]
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/client-react/pages/build.adoc:
--------------------------------------------------------------------------------
1 | = 构建客户端
2 |
3 | `npm run build` 命令可以构建生产环境版本。构建结果在 `build` 文件夹。
4 |
5 | 参阅 React 文档了解更多支持的 https://facebook.github.io/create-react-app/docs/available-scripts[可用脚本]。
6 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/client-react/pages/config.adoc:
--------------------------------------------------------------------------------
1 | = 配置
2 |
3 | 默认情况下,客户端使用生产版本部署至 Tomcat,用 `app-front` 作为路径上下文。修改 `PUBLIC_URL` 环境变量可以配置这个上下文路径(在 `.env.production.local` 内定义)。
4 |
5 | 开发阶段 serve 的话,客户端使用 REST API 的绝对路径,通过 `REACT_APP_CUBA_URL` 设置(在 `.env.development.local` 内定义)。
6 |
7 | 参阅 React 文档了解 https://facebook.github.io/create-react-app/docs/advanced-configuration[所有可用的环境变量]。
8 |
9 | 查看 `src/config.ts` 文件,了解运行时通用的应用程序配置。
10 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/client-react/pages/learning-path.adoc:
--------------------------------------------------------------------------------
1 | = 然后怎么办?
2 |
3 | *React Client* 部分剩下的章节主要介绍使用的技术,以及对于很多常见的用例给出了解决方法。我们建议您还是继续阅读,但是可以跳过某些主题,将来需要时再阅读。
4 |
5 | xref:generator:index.adoc[Frontend Generator 参考] 介绍了 generator 的详细信息。解释了如何使用 CLI 以及哪些 CLI 功能在 Studio 中也可用。一定要读一读(您会觉得以 `react-typescript` 开头的命令有点意思)。 {manual_studio_frontendUi}[Studio 使用手册] 更多是介绍如何在 Studio 中使用 generator。
6 |
7 | 当然,前端的开发过程不止是生成代码而已,您也需要手动创建一些组件,或者重用我们库里的一些组件。阅读 xref:cuba-react-core:index.adoc[CUBA React Core] 和 xref:cuba-react-ui:index.adoc[CUBA React UI] 章节,了解有哪些可用组件以及如何使用。
8 |
9 | 阅读 {api_rest}[CUBA REST JS] 文档了解您的组件如何与 {manual_restApi}[通用 REST API] 通信。
10 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/client-react/pages/supported-browsers.adoc:
--------------------------------------------------------------------------------
1 | = 支持的浏览器
2 |
3 | 该客户端支持所有现代浏览器。如果要支持 IE 9/10/11,需要 https://facebook.github.io/create-react-app/docs/supported-browsers-features[额外配置]。
4 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/client-react/pages/sync-project-model.adoc:
--------------------------------------------------------------------------------
1 | = 项目模型同步
2 |
3 | 如需同步后端改动的模型,可以通过下面命令重新生成项目模型:
4 |
5 | [source,bash]
6 | ----
7 | $ npm run `update-model`
8 | ----
9 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/cuba-react-core/nav.adoc:
--------------------------------------------------------------------------------
1 | * xref:index.adoc[CUBA React Core]
2 | ** xref:access-control.adoc[AccessControl]
3 | ** xref:attr-perm-access-control.adoc[AttrPermAccessControl]
4 | ** xref:client-side-data-collection-store.adoc[ClientSideDataCollectionStore]
5 | ** xref:cuba-app-provider.adoc[CubaAppProvider]
6 | ** xref:data-collection-store.adoc[DataCollectionStore]
7 | ** xref:data-instance-store.adoc[DataInstanceStore]
8 | ** xref:entity-perm-access-control.adoc[EntityPermAccessControl]
9 | ** xref:main-store.adoc[MainStore]
10 | ** xref:security.adoc[Security]
11 | ** xref:specific-perm-access-control.adoc[SpecificPermAccessControl]
12 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/cuba-react-core/pages/index.adoc:
--------------------------------------------------------------------------------
1 | = CUBA React Core 组件库
2 |
3 | *CUBA React Core* 组件库是由一系列组件和工具类组成,负责一些核心功能,比如操作 CUBA 实体。xref:client-react:starter-guide.adoc[React] 和 xref:client-react-native:starter-guide.adoc[React Native] 客户端都用到了这个库。该库可以通过 npm 安装: {npm_cubaReactCore}[@cuba-platform/react-core]
4 |
5 | API 参考在 link:../api-reference/cuba-react-core/index.html[这里]。
6 |
7 | 查阅本章其他内容了解如何使用该库提供的组件和工具。
8 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/cuba-react-ui/images/FileUploadAndImagePreviewDemo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/doc-component-repo/modules/cuba-react-ui/images/FileUploadAndImagePreviewDemo.gif
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/cuba-react-ui/nav.adoc:
--------------------------------------------------------------------------------
1 | * xref:index.adoc[CUBA React UI]
2 | ** xref:data-table.adoc[DataTable]
3 | ** xref:entity-editor.adoc[EntityEditor]
4 | ** xref:entity-property.adoc[EntityProperty]
5 | ** xref:file-upload.adoc[FileUpload]
6 | ** xref:form-field.adoc[FormField]
7 | ** xref:image-preview.adoc[ImagePreview]
8 | ** xref:nested-entities-table-field.adoc[NestedEntitiesTableField]
9 | ** xref:nested-entity-field.adoc[NestedEntityField]
10 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/cuba-react-ui/pages/entity-property.adoc:
--------------------------------------------------------------------------------
1 | = EntityProperty
2 | :api_ui_EntityPropertyProps: link:../api-reference/cuba-react-ui/interfaces/_ui_entityproperty_.entitypropertyprops.html
3 |
4 | `EntityProperty` 组件用来展示实体属性的值。可以根据属性的类型自动应用展示格式,并能从全局消息包(在后台定义)获取文本为属性添加相应的标签。
5 |
6 | [source,typescript]
7 | ----
8 |
11 | ----
12 |
13 | '''
14 |
15 | API: {api_ui_EntityPropertyProps}[EntityPropertyProps].
16 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/cuba-react-ui/pages/image-preview.adoc:
--------------------------------------------------------------------------------
1 | = ImagePreview
2 | :api_ui_ImagePreviewProps: link:../api-reference/cuba-react-ui/interfaces/_ui_imagepreview_.imagepreviewprops.html
3 |
4 | `ImagePreview` 可以预览并下载图片。需要使用 link:https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL[对象 URL]。
5 |
6 | '''
7 |
8 | API: {api_ui_ImagePreviewProps}[ImagePreviewProps].
9 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/cuba-react-ui/pages/index.adoc:
--------------------------------------------------------------------------------
1 | = CUBA React UI 组件
2 |
3 | *CUBA React UI* 包含 UI 组件。使用 {antDesign_base}/docs/react/introduce[Ant Design] UI 开发,在 xref:client-react:starter-guide.adoc[React] 客户端使用。可以通过 npm 安装:{npm_cubaReactUi}[@cuba-platform/react-ui]。
4 |
5 | API 参考文档在 link:../api-reference/cuba-react-ui/index.html[这里]。
6 |
7 | 阅读本章节剩下的部分了解如何使用该库提供的组件。
8 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/cuba-react-ui/pages/nested-entities-table-field.adoc:
--------------------------------------------------------------------------------
1 | = NestedEntitiesTableField
2 | :api_ui_NestedEntitiesTableFieldProps: link:../api-reference/cuba-react-ui/interfaces/_ui_form_form_.nestedentitiestablefieldprops.html
3 |
4 | `NestedEntitiesTableField` 是一个字段组件,用在一对多组合的上下文环境中,用来表示嵌套的实体。渲染结果会展示带有新建、编辑、删除嵌套实体操作按钮的 xref:data-table.adoc[DataTable]。点击新建或者编辑按钮会打开一个 xref:entity-editor.adoc[EntityEditor]。对于一对多组合的实体属性,xref:form-field.adoc[FormField] 可以自动渲染为 `NestedEntitiesTableField`。
5 |
6 | CAUTION: 多层级联组合(比如嵌套实体也带有嵌套实体),目前不支持。
7 |
8 | '''
9 |
10 | API: {api_ui_NestedEntitiesTableFieldProps}[NestedEntitiesTableFieldProps].
11 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/cuba-react-ui/pages/nested-entity-field.adoc:
--------------------------------------------------------------------------------
1 | = NestedEntityField
2 | :api_ui_NestedEntityFieldProps: link:../api-reference/cuba-react-ui/interfaces/_ui_form_form_.nestedentityfieldprops.html
3 |
4 | `NestedEntityField` 是一个字段组件,用在一对一组合的上下文环境中,用来表示嵌套的实体。可以用来新建、编辑或删除嵌套实体。新建、编辑时,会为嵌套实体打开 xref:entity-editor.adoc[EntityEditor]。对于一对一组合的实体属性,xref:form-field.adoc[FormField] 可以自动渲染为 `NestedEntityField`。
5 |
6 | CAUTION: 多层级联组合(比如嵌套实体也带有嵌套实体),目前不支持。
7 |
8 | '''
9 |
10 | API: {api_ui_NestedEntityFieldProps}[NestedEntityFieldProps].
11 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/cuba-rest-js/nav.adoc:
--------------------------------------------------------------------------------
1 | * xref:index.adoc[REST API]
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/cuba-rest-js/pages/index.adoc:
--------------------------------------------------------------------------------
1 | = REST API
2 |
3 | 生成的客户端代码使用 {manual_restApi}[通用 REST API]。详细的 API endpoint 文档在 {restApiSwagger}[这里] 发布。
4 |
5 | 使用 CUBA REST JS 与通用 REST API 通信。文档和 API 参考可以在 {api_rest}[这里]。
6 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/generator/images/browser-cards.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/doc-component-repo/modules/generator/images/browser-cards.png
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/generator/images/browser-list.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/doc-component-repo/modules/generator/images/browser-list.png
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/generator/images/interactive-projects.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/doc-component-repo/modules/generator/images/interactive-projects.png
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/generator/images/studio-integration.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/doc-component-repo/modules/generator/images/studio-integration.png
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/generator/nav.adoc:
--------------------------------------------------------------------------------
1 | * xref:index.adoc[Frontend Generator 参考]
2 | ** xref:commands-reference.adoc[命令参考]
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/generator/partials/feat-available-in-studio.adoc:
--------------------------------------------------------------------------------
1 | TIP: 该功能也能在 Studio 中使用,参阅 {manual_studio_frontendUi}[Studio 使用手册]。
2 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/getting-started/nav.adoc:
--------------------------------------------------------------------------------
1 | * xref:index.adoc[开始使用]
2 | ** xref:cli-specific-instructions.adoc[CLI 特性介绍]
3 | ** xref:learning-path.adoc[选择学习路径]
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/getting-started/pages/index.adoc:
--------------------------------------------------------------------------------
1 | = 开始使用
2 |
3 | 首先,请安装 {manual_studio}/#installation[CUBA Studio]。
4 |
5 | 您的学习路径一般会根据您准备构建什么样的前端(React,React Native,等等)而有所不同。但是,通常从 *Frontend Generator* 开始,两种使用的途径:
6 |
7 | - 从 Studio UI 使用
8 | - 在命令行窗口使用,这里要用到通过 Studio 生成的项目模型文件
9 |
10 | CAUTION: CLI 支持的大部分功能 Studio 都能支持,但是有一些不是。查看 xref:generator:commands-reference.adoc[Frontend Generator 参考] 了解具体支持哪些功能。另外,如果您希望您的前端项目独立于 CUBA 项目(比如前后端由不同团队开发),那么也需要在前端项目使用 CLI。
11 |
12 | 如果您需要在 CLI 使用 Frontend Generator,请参阅 xref:cli-specific-instructions.adoc[CLI 特性介绍]。否则,继续阅读 xref:learning-path.adoc[这章]。
13 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/getting-started/pages/learning-path.adoc:
--------------------------------------------------------------------------------
1 | = 选择学习路径
2 |
3 | 如果您想创建一个基于 React 的前端 UI,参阅 xref:client-react:starter-guide.adoc[React Client] 向导。
4 |
5 | 如果选择 React Native, 参阅 xref:client-react-native:starter-guide.adoc[该向导]。
6 |
7 | 即将废弃的 Polymer Client 文档在 xref:client-polymer:index.adoc[这里]。*译者注:由于 Polymer 即将废弃,我们不提供翻译。*
8 |
9 | 如果想使用其他的前端框架,可以参阅 xref:typescript-sdk:index.adoc[TypeScript SDK] 和 {api_rest}[CUBA REST JS] 文档。
10 |
11 | 如果您希望构建一个前端客户端,既可以用于桌面电脑也可以用于手机端,但是您不知道用什么框架比较好,我们推荐您使用 xref:client-react:starter-guide.adoc[React Client],这是目前能得到最优支持的选择。
12 |
13 | 如果您还是犹豫不决,或者我们的文档并没有覆盖您特殊的使用场景,请在 {forum}[论坛] 与我们联系。
14 |
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/libs/nav.adoc:
--------------------------------------------------------------------------------
1 | .Libraries API Reference
2 | * link:../api-reference/cuba-rest-js/index.html[CUBA REST JS^]
3 | * link:../api-reference/cuba-react-core/index.html[CUBA React Core^]
4 | * link:../api-reference/cuba-react-ui/index.html[CUBA React UI^]
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/overview/partials/getting-started-note.adoc:
--------------------------------------------------------------------------------
1 | NOTE: 如果您还没有阅读 xref:getting-started:index.adoc[开始使用] 部分,我们建议您先阅读那部分内容。
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/typescript-sdk/nav.adoc:
--------------------------------------------------------------------------------
1 | * xref:index.adoc[TypeScript SDK]
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/typescript-sdk/pages/entities.adoc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/doc-component-repo/modules/typescript-sdk/pages/entities.adoc
--------------------------------------------------------------------------------
/docs-src-cn/doc-component-repo/modules/typescript-sdk/pages/enums.adoc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src-cn/doc-component-repo/modules/typescript-sdk/pages/enums.adoc
--------------------------------------------------------------------------------
/docs-src-cn/redirect-page-template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
12 | 正在跳转...
13 |
14 |
15 |
16 | 如果没有为您自动跳转,请点击链接。
17 |
18 |
19 |
--------------------------------------------------------------------------------
/docs-src-cn/supplemental-ui/partials/head-styles.hbs:
--------------------------------------------------------------------------------
1 | {{! This Source Code Form is subject to the terms of the Mozilla Public }}
2 | {{! License, v. 2.0. If a copy of the MPL was not distributed with this }}
3 | {{! file, You can obtain one at http://mozilla.org/MPL/2.0/. }}
4 |
5 |
--------------------------------------------------------------------------------
/docs-src/api-reference/cuba-react-core/assets/images/icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/api-reference/cuba-react-core/assets/images/icons.png
--------------------------------------------------------------------------------
/docs-src/api-reference/cuba-react-core/assets/images/icons@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/api-reference/cuba-react-core/assets/images/icons@2x.png
--------------------------------------------------------------------------------
/docs-src/api-reference/cuba-react-core/assets/images/widgets.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/api-reference/cuba-react-core/assets/images/widgets.png
--------------------------------------------------------------------------------
/docs-src/api-reference/cuba-react-core/assets/images/widgets@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/api-reference/cuba-react-core/assets/images/widgets@2x.png
--------------------------------------------------------------------------------
/docs-src/api-reference/cuba-react-ui/assets/images/icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/api-reference/cuba-react-ui/assets/images/icons.png
--------------------------------------------------------------------------------
/docs-src/api-reference/cuba-react-ui/assets/images/icons@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/api-reference/cuba-react-ui/assets/images/icons@2x.png
--------------------------------------------------------------------------------
/docs-src/api-reference/cuba-react-ui/assets/images/widgets.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/api-reference/cuba-react-ui/assets/images/widgets.png
--------------------------------------------------------------------------------
/docs-src/api-reference/cuba-react-ui/assets/images/widgets@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/api-reference/cuba-react-ui/assets/images/widgets@2x.png
--------------------------------------------------------------------------------
/docs-src/api-reference/cuba-rest-js/assets/images/icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/api-reference/cuba-rest-js/assets/images/icons.png
--------------------------------------------------------------------------------
/docs-src/api-reference/cuba-rest-js/assets/images/icons@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/api-reference/cuba-rest-js/assets/images/icons@2x.png
--------------------------------------------------------------------------------
/docs-src/api-reference/cuba-rest-js/assets/images/widgets.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/api-reference/cuba-rest-js/assets/images/widgets.png
--------------------------------------------------------------------------------
/docs-src/api-reference/cuba-rest-js/assets/images/widgets@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/api-reference/cuba-rest-js/assets/images/widgets@2x.png
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/antora.yml:
--------------------------------------------------------------------------------
1 | name: cuba-frontend-docs
2 | title: CUBA Frontend UI Manual
3 | version: v20.1
4 | nav:
5 | - modules/overview/nav.adoc
6 | - modules/getting-started/nav.adoc
7 | - modules/client-react/nav.adoc
8 | - modules/client-react-native/nav.adoc
9 | - modules/client-polymer/nav.adoc
10 | - modules/cuba-react-core/nav.adoc
11 | - modules/cuba-react-ui/nav.adoc
12 | - modules/typescript-sdk/nav.adoc
13 | - modules/generator/nav.adoc
14 | - modules/cuba-rest-js/nav.adoc
15 | - modules/libs/nav.adoc
16 |
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/client-polymer/nav.adoc:
--------------------------------------------------------------------------------
1 | * xref:index.adoc[Polymer Client (Deprecated)]
2 | ** xref:polymer/polymer_requirements.adoc[Requirements]
3 | ** xref:polymer/polymer_supported_browsers.adoc[Supported Browsers]
4 | ** xref:polymer/polymer_build_and_structure.adoc[Build System and Project Structure]
5 | ** xref:polymer/cuba_web_components.adoc[CUBA Web Components]
6 | ** xref:polymer/polymer_styling.adoc[Styling]
7 | ** xref:polymer/polymer_offline.adoc[Offline Capabilities]
8 | ** xref:polymer/polymer2_typescript/polymer2_typescript.adoc[TypeScript Support]
9 | ** xref:polymer/polymer_troubleshooting.adoc[Troubleshooting]
10 |
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/client-polymer/pages/polymer/cuba_web_components.adoc:
--------------------------------------------------------------------------------
1 | = CUBA Web Components
2 |
3 | The detailed API reference of CUBA elements can be found https://cuba-elements.github.io/cuba-elements/[here].
4 |
5 | include::cuba_web_components/polymer_inintialization.adoc[leveloffset=+1]
6 |
7 | include::cuba_web_components/polymer_working_with_data.adoc[leveloffset=+1]
8 |
9 |
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/client-polymer/pages/polymer/cuba_web_components/polymer_inintialization.adoc:
--------------------------------------------------------------------------------
1 | = Initialization
2 |
3 | In order to use any `cuba-` element you need to initialize common library and connection to the REST API using `cuba-app` element :
4 |
5 | [source,html]
6 | ----
7 |
8 | ----
9 |
10 | It should be placed once in your app as early as possible. Do not change properties dynamically or detach/attach the element after initialization.
11 |
12 |
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/client-polymer/pages/polymer/polymer_requirements.adoc:
--------------------------------------------------------------------------------
1 | = Requirements
2 |
3 | http://git-scm.com/downloads[Git] should be installed and available from the command line.
4 | It’s required for https://bower.io/[bower] - the package manager for front-end applications.
5 |
6 |
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/client-polymer/pages/polymer/polymer_styling.adoc:
--------------------------------------------------------------------------------
1 | = Styling
2 |
3 | See the Polymer's https://www.polymer-project.org/2.0/docs/devguide/style-shadow-dom[styling guide]. The most noticeable difference between traditional approach is how global styles are specified.
4 | Since Polymer elements use Shadow DOM global styles do not leak inside the components. You need to use https://www.polymer-project.org/2.0/docs/devguide/style-shadow-dom#style-modules[style-modules] instead. There is a `shares-styles.html` file in Polymer client which is automatically being imported to any new component created in Studio.
5 |
6 |
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/client-polymer/pages/polymer/polymer_supported_browsers.adoc:
--------------------------------------------------------------------------------
1 | = Supported Browsers
2 |
3 | See the list of supported browsers on the Polymer’s https://polymer-library.polymer-project.org/2.0/docs/browsers[website]
4 |
5 | [WARNING]
6 | ====
7 | Please do not to use Polymer client if you are targeting legacy browsers.
8 | ====
9 |
10 |
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/client-react-native/images/RNDemo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/doc-component-repo/modules/client-react-native/images/RNDemo.gif
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/client-react-native/nav.adoc:
--------------------------------------------------------------------------------
1 | * React Native Client
2 | ** xref:starter-guide.adoc[Getting Started with React Native Client]
3 | ** xref:technologies.adoc[Technologies Overview]
4 | ** xref:learning-path.adoc[Where Do I Go From Here?]
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/client-react-native/pages/learning-path.adoc:
--------------------------------------------------------------------------------
1 | = Where Do I Go From Here?
2 |
3 | Check xref:cuba-react-core:index.adoc[CUBA React Core] section to see what components are available to you and how to use them.
4 |
5 | Check {api_rest}[CUBA REST JS] to see how your components can communicate with the {manual_restApi}[Generic REST API].
6 |
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/client-react-native/pages/technologies.adoc:
--------------------------------------------------------------------------------
1 | = Technologies Overview
2 |
3 | The client is based on the following frameworks and libraries:
4 |
5 | * https://facebook.github.io/react-native/[React Native] - UI rendering;
6 | * https://mobx.js.org/[MobX] - reactive state management;
7 | * xref:cuba-react-core:index.adoc[CUBA React Core] - CUBA React core components and utilities;
8 | * {api_rest}[CUBA REST JS] - interaction with СUBA generic REST API;
9 | * https://expo.io/[Expo] - development tools for React Native;
10 |
11 | React Native client is written in link:https://www.typescriptlang.org/[TypeScript].
12 |
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/client-react/images/data-table-demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/doc-component-repo/modules/client-react/images/data-table-demo.gif
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/client-react/images/home-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/doc-component-repo/modules/client-react/images/home-screen.png
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/client-react/images/login-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/doc-component-repo/modules/client-react/images/login-screen.png
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/client-react/images/pet-clinic-browser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/doc-component-repo/modules/client-react/images/pet-clinic-browser.png
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/client-react/images/pet-clinic-editor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/doc-component-repo/modules/client-react/images/pet-clinic-editor.png
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/client-react/images/studio-adding-frontend-component.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/doc-component-repo/modules/client-react/images/studio-adding-frontend-component.gif
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/client-react/images/studio-create-front-module.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/doc-component-repo/modules/client-react/images/studio-create-front-module.gif
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/client-react/pages/build.adoc:
--------------------------------------------------------------------------------
1 | = Building the Client
2 |
3 | `npm run build` command builds your app for production use. See `build` folder.
4 |
5 | See https://facebook.github.io/create-react-app/docs/available-scripts[available scripts] in Create React App documentation.
6 |
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/client-react/pages/config.adoc:
--------------------------------------------------------------------------------
1 | = Configuration
2 |
3 | By default, client deployed to Tomcat is built with production preset and aimed to be served under `app-front` context. Use `PUBLIC_URL` env variable to change this behavior (see `.env.production.local`).
4 |
5 | The client served from development server has absolute URL of REST API specified in `REACT_APP_CUBA_URL` (see `.env.development.local`).
6 |
7 | See the https://facebook.github.io/create-react-app/docs/advanced-configuration[list of all available environment variables].
8 |
9 | See `src/config.ts` for full list of common application settings used in runtime.
10 |
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/client-react/pages/supported-browsers.adoc:
--------------------------------------------------------------------------------
1 | = Supported Browsers
2 |
3 | The client supports all modern (evergreen) browsers. In order to support IE 9,10,11 https://facebook.github.io/create-react-app/docs/supported-browsers-features[additional configuration] is required.
4 |
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/client-react/pages/sync-project-model.adoc:
--------------------------------------------------------------------------------
1 | = Synchronizing the Project Model
2 |
3 | In order to sync up with the changes on the backend, you can re-generate the project model using the following command:
4 |
5 | [source,bash]
6 | ----
7 | $ npm run `update-model`
8 | ----
9 |
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/cuba-react-core/nav.adoc:
--------------------------------------------------------------------------------
1 | * xref:index.adoc[CUBA React Core]
2 | ** xref:access-control.adoc[AccessControl]
3 | ** xref:attr-perm-access-control.adoc[AttrPermAccessControl]
4 | ** xref:client-side-data-collection-store.adoc[ClientSideDataCollectionStore]
5 | ** xref:cuba-app-provider.adoc[CubaAppProvider]
6 | ** xref:data-collection-store.adoc[DataCollectionStore]
7 | ** xref:data-instance-store.adoc[DataInstanceStore]
8 | ** xref:entity-perm-access-control.adoc[EntityPermAccessControl]
9 | ** xref:main-store.adoc[MainStore]
10 | ** xref:security.adoc[Security]
11 | ** xref:specific-perm-access-control.adoc[SpecificPermAccessControl]
12 |
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/cuba-react-core/pages/index.adoc:
--------------------------------------------------------------------------------
1 | = CUBA React Core Components
2 |
3 | *CUBA React Core* library is a collection of components and utilities responsible for core functionalities such as working with CUBA entities. It is used by both xref:client-react:starter-guide.adoc[React] and xref:client-react-native:starter-guide.adoc[React Native] clients. This library is available as an npm package {npm_cubaReactCore}[@cuba-platform/react-core].
4 |
5 | API reference can be found link:../api-reference/cuba-react-core/index.html[here].
6 |
7 | See the rest of this section for information on how to use the components and utilities provided by this library.
8 |
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/cuba-react-ui/images/FileUploadAndImagePreviewDemo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/doc-component-repo/modules/cuba-react-ui/images/FileUploadAndImagePreviewDemo.gif
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/cuba-react-ui/nav.adoc:
--------------------------------------------------------------------------------
1 | * xref:index.adoc[CUBA React UI]
2 | ** xref:data-table.adoc[DataTable]
3 | ** xref:entity-editor.adoc[EntityEditor]
4 | ** xref:entity-property.adoc[EntityProperty]
5 | ** xref:file-upload.adoc[FileUpload]
6 | ** xref:form-field.adoc[FormField]
7 | ** xref:image-preview.adoc[ImagePreview]
8 | ** xref:nested-entities-table-field.adoc[NestedEntitiesTableField]
9 | ** xref:nested-entity-field.adoc[NestedEntityField]
10 |
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/cuba-react-ui/pages/image-preview.adoc:
--------------------------------------------------------------------------------
1 | = ImagePreview
2 | :api_ui_ImagePreviewProps: link:../api-reference/cuba-react-ui/interfaces/_ui_imagepreview_.imagepreviewprops.html
3 |
4 | `ImagePreview` allows to preview or download an image. It works with an link:https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL[object URL].
5 |
6 | '''
7 |
8 | API: {api_ui_ImagePreviewProps}[ImagePreviewProps].
9 |
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/cuba-react-ui/pages/index.adoc:
--------------------------------------------------------------------------------
1 | = CUBA React UI Components
2 |
3 | *CUBA React UI* contains the UI components. It uses {antDesign_base}/docs/react/introduce[Ant Design] UI kit and is used by the xref:client-react:starter-guide.adoc[React] client. It is available as an npm package {npm_cubaReactUi}[@cuba-platform/react-ui].
4 |
5 | API reference can be found link:../api-reference/cuba-react-ui/index.html[here].
6 |
7 | See the rest of this section for information on how to use the components provided by this library.
8 |
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/cuba-rest-js/images/rest-access-role-attr-perms.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/doc-component-repo/modules/cuba-rest-js/images/rest-access-role-attr-perms.jpg
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/cuba-rest-js/images/rest-access-role-entity-perms.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/doc-component-repo/modules/cuba-rest-js/images/rest-access-role-entity-perms.jpg
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/cuba-rest-js/images/rest-access-role.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/doc-component-repo/modules/cuba-rest-js/images/rest-access-role.jpg
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/cuba-rest-js/nav.adoc:
--------------------------------------------------------------------------------
1 | * xref:index.adoc[REST API]
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/generator/images/browser-cards.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/doc-component-repo/modules/generator/images/browser-cards.png
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/generator/images/browser-list.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/doc-component-repo/modules/generator/images/browser-list.png
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/generator/images/interactive-projects.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/doc-component-repo/modules/generator/images/interactive-projects.png
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/generator/images/studio-integration.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/doc-component-repo/modules/generator/images/studio-integration.png
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/generator/nav.adoc:
--------------------------------------------------------------------------------
1 | * xref:index.adoc[Frontend Generator Reference]
2 | ** xref:commands-reference.adoc[Commands Description]
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/generator/partials/feat-available-in-studio.adoc:
--------------------------------------------------------------------------------
1 | TIP: This feature is also available in CUBA Studio, see {manual_studio_frontendUi}[Studio Manual].
2 |
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/getting-started/nav.adoc:
--------------------------------------------------------------------------------
1 | * xref:index.adoc[Getting Started]
2 | ** xref:cli-specific-instructions.adoc[CLI-Specific Instructions]
3 | ** xref:learning-path.adoc[Choosing a Learning Path]
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/libs/nav.adoc:
--------------------------------------------------------------------------------
1 | .Libraries API Reference
2 | * link:../api-reference/cuba-rest-js/index.html[CUBA REST JS^]
3 | * link:../api-reference/cuba-react-core/index.html[CUBA React Core^]
4 | * link:../api-reference/cuba-react-ui/index.html[CUBA React UI^]
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/overview/partials/getting-started-note.adoc:
--------------------------------------------------------------------------------
1 | NOTE: If you haven't read our introductory xref:getting-started:index.adoc[Getting Started] section, we encourage you to do so now.
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/typescript-sdk/nav.adoc:
--------------------------------------------------------------------------------
1 | * xref:index.adoc[TypeScript SDK]
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/typescript-sdk/pages/entities.adoc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/doc-component-repo/modules/typescript-sdk/pages/entities.adoc
--------------------------------------------------------------------------------
/docs-src/doc-component-repo/modules/typescript-sdk/pages/enums.adoc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs-src/doc-component-repo/modules/typescript-sdk/pages/enums.adoc
--------------------------------------------------------------------------------
/docs-src/redirect-page-template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
11 | Redirecting...
12 |
13 |
14 | If you are not automatically redirected, please follow this link.
15 |
16 |
17 |
--------------------------------------------------------------------------------
/docs-src/supplemental-ui/partials/head-styles.hbs:
--------------------------------------------------------------------------------
1 | {{! This Source Code Form is subject to the terms of the Mozilla Public }}
2 | {{! License, v. 2.0. If a copy of the MPL was not distributed with this }}
3 | {{! file, You can obtain one at http://mozilla.org/MPL/2.0/. }}
4 |
5 |
--------------------------------------------------------------------------------
/docs/.nojekyll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/docs/.nojekyll
--------------------------------------------------------------------------------
/lerna.json:
--------------------------------------------------------------------------------
1 | {
2 | "packages": [
3 | "packages/*", "test-pup"
4 | ],
5 | "version": "independent"
6 | }
7 |
--------------------------------------------------------------------------------
/packages/cuba-react-core/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_size = 2
6 | indent_style = space
--------------------------------------------------------------------------------
/packages/cuba-react-core/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 | node_modules
3 | dist
4 | dist-transpiled
5 | cuba-platform-react-core-*.tgz
6 | coverage
7 |
--------------------------------------------------------------------------------
/packages/cuba-react-core/.snyk:
--------------------------------------------------------------------------------
1 | # Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities.
2 | version: v1.13.5
3 | ignore: {}
4 | patch: {}
5 |
--------------------------------------------------------------------------------
/packages/cuba-react-core/README.md:
--------------------------------------------------------------------------------
1 | # CUBA React Core
2 |
3 | Contains core components and utilities for CUBA Platform frontend clients based on React and React Native.
4 |
5 | Documentation and API reference can be found [here](https://doc.cuba-platform.com/frontend).
6 |
--------------------------------------------------------------------------------
/packages/cuba-react-core/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: ['@babel/preset-env', '@babel/preset-react'],
3 | };
--------------------------------------------------------------------------------
/packages/cuba-react-core/jest.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | "roots": [
3 | "/src"
4 | ],
5 | "transform": {
6 | "^.+\\.tsx?$": "ts-jest"
7 | },
8 | "coverageThreshold": {
9 | "global": {
10 | "statements": 49,
11 | "branches": 47,
12 | "functions": 30,
13 | "lines": 50
14 | }
15 | },
16 | "collectCoverageFrom": [
17 | "src/**/*.{ts,tsx}",
18 | ]
19 | };
20 |
--------------------------------------------------------------------------------
/packages/cuba-react-core/src/app/MenuConfig.ts:
--------------------------------------------------------------------------------
1 | export interface RouteItem {
2 | pathPattern: string
3 | menuLink: string
4 | component: any
5 | caption: string
6 | }
7 |
8 | export interface SubMenu {
9 | items: Array
10 | caption: string
11 | }
12 |
13 | const menuItems: Array = [];
14 |
15 | export function getMenuItems() : Array {
16 | return menuItems;
17 | }
18 |
--------------------------------------------------------------------------------
/packages/cuba-react-core/src/util/data.ts:
--------------------------------------------------------------------------------
1 | export const TEMPORARY_ENTITY_ID_PREFIX = '_CUBA_TEMPORARY_ENTITY_ID_';
2 |
3 | export const generateTemporaryEntityId = () => TEMPORARY_ENTITY_ID_PREFIX + Math.random().toString().slice(2);
4 |
--------------------------------------------------------------------------------
/packages/cuba-react-core/src/util/errorHandling.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * To be used in (supposedly) unreachable code after exhaustive check of `argument`.
3 | *
4 | * @remarks
5 | * Will cause a compile-time error if `argument` was not exhaustively checked.
6 | * Will cause a runtime error if reached.
7 | *
8 | * @param argumentName
9 | * @param argument
10 | */
11 | export function assertNever(argumentName: string, argument: never): never {
12 | throw new Error(`Unexpected ${argumentName}: ${argument}`);
13 | }
14 |
--------------------------------------------------------------------------------
/packages/cuba-react-core/src/util/temporal.ts:
--------------------------------------------------------------------------------
1 | import { Moment } from "moment";
2 |
3 | /**
4 | *
5 | * @param momentInstance
6 | *
7 | * @returns a clone of provided Moment instance with milliseconds set to zero,
8 | * or `undefined` if a nullish value was provided.
9 | */
10 | export function stripMilliseconds<
11 | P extends Moment | null | undefined,
12 | R = P extends Moment ? Moment : undefined
13 | >(momentInstance: P): R {
14 | return momentInstance?.clone().milliseconds(0) as unknown as R;
15 | }
--------------------------------------------------------------------------------
/packages/cuba-react-ui/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_size = 2
6 | indent_style = space
--------------------------------------------------------------------------------
/packages/cuba-react-ui/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 | node_modules
3 | dist
4 | dist-transpiled
5 | cuba-platform-react-ui-*.tgz
6 | coverage
7 |
--------------------------------------------------------------------------------
/packages/cuba-react-ui/.snyk:
--------------------------------------------------------------------------------
1 | # Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities.
2 | version: v1.13.5
3 | ignore: {}
4 | patch: {}
5 |
--------------------------------------------------------------------------------
/packages/cuba-react-ui/README.md:
--------------------------------------------------------------------------------
1 | # CUBA React UI
2 |
3 | Contains UI components and utilities for CUBA Platform React client.
4 |
5 | Documentation and API reference can be found [here](https://doc.cuba-platform.com/frontend).
6 |
--------------------------------------------------------------------------------
/packages/cuba-react-ui/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: ['@babel/preset-env', '@babel/preset-react'],
3 | };
--------------------------------------------------------------------------------
/packages/cuba-react-ui/src/index.less:
--------------------------------------------------------------------------------
1 | @import "ui/FileUpload";
2 | @import "ui/table/DataTable";
3 | @import "ui/table/DataTableCustomFilter";
4 | @import "ui/table/DataTableFilterControlLayout";
5 | @import "ui/table/DataTableIntervalEditor";
6 | @import "ui/table/DataTableListEditor";
7 | @import "ui/form/InputNumber";
8 | @import "ui/form/EntityEditor";
9 | @import "ui/form/NestedEntitiesTableField";
10 | @import "ui/form/NestedEntityField";
11 | @import "style/palette";
12 |
--------------------------------------------------------------------------------
/packages/cuba-react-ui/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from './ui/EntityProperty';
2 | export * from './ui/form/Form';
3 | export * from './ui/Msg';
4 | export * from './ui/table/DataTable';
5 | export * from './ui/table/DataTableHelpers';
6 | export * from './ui/table/DataTableCustomFilter';
7 | export * from './ui/FileUpload';
8 | export * from './ui/ImagePreview';
9 | export * from './ui/MultilineText';
10 | export * from './ui/Spinner';
11 | export * from './ui/paging/Paging';
12 |
13 | export * from './util/errorHandling';
14 | export * from './util/mapCubaRestErrorToIntlId';
15 |
16 | export * from './i18n/I18nProvider';
17 | export * from './i18n/validation';
18 |
--------------------------------------------------------------------------------
/packages/cuba-react-ui/src/ui/ImagePreview.less:
--------------------------------------------------------------------------------
1 | .cuba-image-preview {
2 | & > .title {
3 | margin-bottom: 8px;
4 | }
5 |
6 | & > .image {
7 | display: block;
8 | margin: 0 auto;
9 | max-height: 60vh;
10 | max-width: 100%;
11 | }
12 | }
13 |
14 | .cuba-image-preview-spinner {
15 | margin: 64px 0 64px 0;
16 | }
--------------------------------------------------------------------------------
/packages/cuba-react-ui/src/ui/MultilineText.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 |
3 | export type MultilineTextProps = {
4 | lines: string[]
5 | }
6 |
7 | export function MultilineText({lines}: MultilineTextProps) {
8 | return (
9 | <>
10 | { lines.map((line, index) => {line}
) }
11 | >
12 | );
13 | }
14 |
--------------------------------------------------------------------------------
/packages/cuba-react-ui/src/ui/Spinner.less:
--------------------------------------------------------------------------------
1 | .spinner-component {
2 | position: absolute;
3 | left: 50%;
4 | top: 50%;
5 | transform: translate(-50%, -50%);
6 | }
--------------------------------------------------------------------------------
/packages/cuba-react-ui/src/ui/Spinner.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {Spin} from "antd";
3 | import './Spinner.less';
4 |
5 | export function Spinner() {
6 |
7 | return (
8 |
9 |
10 |
11 | );
12 |
13 | }
--------------------------------------------------------------------------------
/packages/cuba-react-ui/src/ui/form/DoubleInput.tsx:
--------------------------------------------------------------------------------
1 | import {InputNumber} from "antd";
2 | import * as React from "react";
3 | import './InputNumber.less';
4 | import {forwardRef, Ref} from 'react';
5 | import {InputNumberProps} from 'antd/es/input-number';
6 |
7 | export const DoubleInput = forwardRef((props: InputNumberProps, ref: Ref) => {
8 | return (
9 |
13 | );
14 | });
15 |
--------------------------------------------------------------------------------
/packages/cuba-react-ui/src/ui/form/EntityEditor.less:
--------------------------------------------------------------------------------
1 | .cuba-entity-editor {
2 | > .errormessage {
3 | margin-bottom: 24px;
4 | }
5 |
6 | > .actions {
7 | text-align: center;
8 | }
9 |
10 | .submitbutton {
11 | margin-left: 8px;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/packages/cuba-react-ui/src/ui/form/InputNumber.less:
--------------------------------------------------------------------------------
1 | .inputnumber-field {
2 | width: 100%;
3 | }
4 |
--------------------------------------------------------------------------------
/packages/cuba-react-ui/src/ui/form/NestedEntitiesTableField.less:
--------------------------------------------------------------------------------
1 | .cuba-nested-entity-editor-buttons {
2 | margin-bottom: 12px;
3 |
4 | > .button {
5 | margin-right: 12px;
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/cuba-react-ui/src/ui/form/NestedEntityField.less:
--------------------------------------------------------------------------------
1 | .cuba-nested-entity-editor-icon {
2 | margin-left: 8px;
3 | }
4 |
--------------------------------------------------------------------------------
/packages/cuba-react-ui/src/ui/table/DataTable.less:
--------------------------------------------------------------------------------
1 | @import "antd/es/style/themes/default";
2 |
3 | .cuba-data-table {
4 | > .buttons {
5 | display: flex;
6 | flex-wrap: wrap;
7 | }
8 | }
9 |
10 | .cuba-data-table-clear-filters {
11 | margin-left: auto;
12 | }
13 |
14 | .cuba-data-table-loader {
15 | position: absolute;
16 | left: 50%;
17 | top: 50%;
18 | transform: translate(-50%, -50%);
19 | }
20 |
21 | ._cuba-hide-selection-column .ant-table-selection-column {
22 | display: none;
23 | }
24 |
25 | @media screen and (max-width: @screen-xs-max) {
26 | .cuba-data-table-clear-filters {
27 | margin-left: 0;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/packages/cuba-react-ui/src/ui/table/DataTableCustomFilter.less:
--------------------------------------------------------------------------------
1 | @import "antd/es/style/themes/default";
2 |
3 | .cuba-table-filter {
4 | > .settings {
5 | max-width: 550px;
6 | padding: @padding-sm;
7 |
8 | > .filtercontrol {
9 | &.-complex-editor {
10 | margin-right: 0;
11 | }
12 | }
13 | }
14 | > .divider {
15 | margin: 0;
16 | }
17 | > .footer {
18 | display: flex;
19 | justify-content: left;
20 |
21 | &:first-child {
22 | margin-right: 12px;
23 | }
24 | }
25 | }
26 |
27 | .cuba-table-filter-loader {
28 | margin: 12px;
29 | }
30 |
--------------------------------------------------------------------------------
/packages/cuba-react-ui/src/ui/table/DataTableIntervalEditor.less:
--------------------------------------------------------------------------------
1 | @import "antd/es/style/themes/default";
2 |
3 | .cuba-table-filter-interval {
4 | margin-top: 12px;
5 | }
6 |
7 | .cuba-interval-mode-select {
8 | display: flex;
9 | flex-direction: column;
10 |
11 | padding: 6px;
12 | margin-top: 0;
13 | margin-right: 16px;
14 | border: dotted @border-width-base @normal-color;
15 | border-radius: @border-radius-base;
16 | }
17 |
18 | .cuba-interval-predefined-select {
19 | min-width: 100px;
20 | }
21 |
22 | .cuba-interval-include-current {
23 | white-space: nowrap;
24 | }
25 |
--------------------------------------------------------------------------------
/packages/cuba-react-ui/src/ui/table/DataTableListEditor.less:
--------------------------------------------------------------------------------
1 | .cuba-table-filter-list {
2 | line-height: 32px;
3 | margin-top: 8px;
4 | }
5 |
6 | .cuba-table-filter-list-new {
7 | border-style: dashed;
8 | }
9 |
10 | .cuba-table-filter-list-input.ant-row {
11 | display: inline-block;
12 | }
13 |
--------------------------------------------------------------------------------
/packages/cuba-react-ui/src/util/files.ts:
--------------------------------------------------------------------------------
1 | export function saveFile(objectUrl: string, fileName: string) {
2 | const anchor: HTMLAnchorElement = document.createElement('a');
3 | anchor.href = objectUrl;
4 | anchor.download = fileName;
5 | anchor.click();
6 | }
--------------------------------------------------------------------------------
/packages/cuba-react-ui/src/util/regex.ts:
--------------------------------------------------------------------------------
1 | // More strict validation would be:
2 | // export const uuidPattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
3 | // However, we are using relaxed validation rules as Generic UI allows to create UUIDs with invalid
4 | // versions and variants (https://github.com/cuba-platform/cuba/issues/2867)
5 | // TODO Once https://github.com/cuba-platform/cuba/issues/2867 is fixed, choose the regex dynamically based on Platform version.
6 | export const uuidPattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
--------------------------------------------------------------------------------
/packages/cuba-rest-js/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | end_of_line = lf
5 | indent_style = space
6 | indent_size = 2
7 |
--------------------------------------------------------------------------------
/packages/cuba-rest-js/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 | .local-storage
3 | node_modules
4 | npm-debug.log
5 | .nyc_output
6 | coverage
7 | .gradle
8 | cuba-platform-rest-*.tgz
9 | dist-browser
10 | dist-node
11 |
--------------------------------------------------------------------------------
/packages/cuba-rest-js/.npmignore:
--------------------------------------------------------------------------------
1 | .idea
2 | .editorconfig
3 | .gradle
4 | .travis.yml
5 | node_modules
6 | tsconfig.json
7 | tslint.json
8 |
9 | src
10 | test
11 | test-app
12 | .nyc_output
13 | .local-storage
14 | coverage
15 | docs
16 | examples
17 |
18 | gradle
19 | gradlew
20 | gradlew.bat
21 | build.gradle
--------------------------------------------------------------------------------
/packages/cuba-rest-js/.snyk:
--------------------------------------------------------------------------------
1 | # Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities.
2 | version: v1.13.5
3 | ignore: {}
4 | patch: {}
5 |
--------------------------------------------------------------------------------
/packages/cuba-rest-js/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "cuba-rest-js",
3 | "description": "JavaScript library for working with CUBA Platform's REST API v2",
4 | "main": [
5 | "dist-browser/cuba.js"
6 | ],
7 | "ignore": [
8 | "*",
9 | "!/dist-browser/*",
10 | "!/package.json",
11 | "!/bower.json"
12 | ],
13 | "license": "Apache-2.0"
14 | }
--------------------------------------------------------------------------------
/packages/cuba-rest-js/examples/node/README.md:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install
3 | node index.js
4 | ```
--------------------------------------------------------------------------------
/packages/cuba-rest-js/examples/node/index.js:
--------------------------------------------------------------------------------
1 | global.fetch = require('node-fetch');
2 | global.localStorage = new require('node-localstorage').LocalStorage('./.local-storage');
3 |
4 | const cuba = require('../../dist-node/cuba.js');
5 |
6 | const app = cuba.initializeApp({apiUrl: 'http://localhost:8080/app/rest/'});
7 |
8 | app.getUserInfo().then((d) => {
9 | console.log(d);
10 | });
11 |
12 | app.login('admin', 'admin').then((d) => {
13 | console.log(d);
14 | });
--------------------------------------------------------------------------------
/packages/cuba-rest-js/examples/node/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "cuba-rest-js-node-example",
3 | "version": "1.0.0",
4 | "description": "Example of cuba-rest-js in node js app",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "license": "Apache-2.0",
10 | "dependencies": {
11 | "node-fetch": "^1.7.1",
12 | "node-localstorage": "^1.3.0"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/packages/cuba-rest-js/jest.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | "coverageThreshold": {
3 | "global": {
4 | "statements": 87,
5 | "branches": 88,
6 | "functions": 78,
7 | "lines": 88
8 | }
9 | }
10 | };
11 |
--------------------------------------------------------------------------------
/packages/cuba-rest-js/src/error.ts:
--------------------------------------------------------------------------------
1 | export class CubaRestError extends Error {
2 | public response?: Response;
3 | public name = 'CubaRestError' as const;
4 |
5 | constructor({message, response}: {
6 | message: string,
7 | response?: Response
8 | }) {
9 | super(message);
10 | if(response !== undefined) {
11 | this.response = response;
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/packages/cuba-rest-js/src/filter.ts:
--------------------------------------------------------------------------------
1 | export type OperatorType = '=' | '>' | '>=' | '<' | '<=' | '<>' | 'startsWith' | 'endsWith' | 'contains'
2 | | 'doesNotContain' | 'in' | 'notIn' | 'notEmpty';
3 |
4 | export type GroupType = 'AND' | 'OR';
5 |
6 | export interface EntityFilter {
7 | conditions: Array;
8 | }
9 |
10 | export interface ConditionsGroup {
11 | group: GroupType;
12 | conditions: Condition[];
13 | }
14 |
15 | export type FilterValue = string | number | string[] | number[] | null;
16 |
17 | export interface Condition {
18 | property: string;
19 | operator: OperatorType;
20 | value: FilterValue;
21 | }
22 |
--------------------------------------------------------------------------------
/packages/cuba-rest-js/test/common.js:
--------------------------------------------------------------------------------
1 | const cuba = require('../dist-node/cuba.js');
2 | const apiUrl = 'http://localhost:8080/app/rest/';
3 |
4 | exports.initApp = function initApp(initApiVersion) {
5 | return new cuba.CubaApp('', apiUrl, 'scr-886snZDO',
6 | 'bf37f38be32f307c4fc5b2c1517cac2984ea46eaf6856dfa56cfe92212ee26c9',
7 | undefined, undefined, initApiVersion);
8 | };
9 |
--------------------------------------------------------------------------------
/packages/cuba-rest-js/test/cuba-app-not-logged.spec.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | const {initApp} = require('./common');
4 | global.fetch = require('node-fetch');
5 |
6 | describe('CubaApp not logged in', function() {
7 | describe('.setSessionLocal()', function() {
8 | it('should fail if not logged in', function(done) {
9 | const app = initApp();
10 | app.setSessionLocale()
11 | .then(() => {
12 | done('did not fail');
13 | })
14 | .catch(() => {
15 | done();
16 | })
17 | });
18 | });
19 | });
20 |
--------------------------------------------------------------------------------
/packages/cuba-rest-js/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES5",
4 | "noEmitOnError": true,
5 | "removeComments": false,
6 | "declaration": true,
7 | "sourceMap": true,
8 | "outDir": "dist-node",
9 | "lib": [
10 | "DOM",
11 | "ES5",
12 | "ES2015.Promise",
13 | "ES2015.Symbol",
14 | "ES2015.Iterable"
15 | ]
16 | },
17 | "include": [
18 | "src/**/*"
19 | ],
20 | "exclude": [
21 | "node_modules"
22 | ]
23 | }
--------------------------------------------------------------------------------
/packages/cuba-rest-js/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "tslint:recommended",
3 | "rules": {
4 | "max-line-length": [true, 120],
5 | "object-literal-sort-keys": false,
6 | "no-string-literal": false,
7 | "quotemark": false,
8 | "interface-name": false,
9 | "ordered-imports": false,
10 | "trailing-comma": false,
11 | "no-trailing-whitespace": false,
12 | "curly": {
13 | "options": "ignore-same-line"
14 | },
15 | "arrow-parens": false
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/packages/front-generator/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*.{js,ts,tsx,ejs}]
4 | indent_size = 2
--------------------------------------------------------------------------------
/packages/front-generator/.gitignore:
--------------------------------------------------------------------------------
1 | .tmp
2 | .idea
3 | test/e2e/generated
4 | src/test/generated
5 | lib
6 | node_modules
7 | coverage
8 | .nyc_output
9 |
--------------------------------------------------------------------------------
/packages/front-generator/.npmignore:
--------------------------------------------------------------------------------
1 | /*
2 | !package.json
3 | !bin
4 | !lib
--------------------------------------------------------------------------------
/packages/front-generator/.nycrc.yaml:
--------------------------------------------------------------------------------
1 | # coverage check config
2 |
3 | extends: "@istanbuljs/nyc-config-typescript"
4 | check-coverage: true
5 | skip-full: true
6 |
7 | # do not check coverage in this folders
8 | # polymer apps is deprecated and will be removed in future releases
9 | exclude: [
10 | "src/test/**",
11 | "src/generators/*/*/template/**",
12 | "src/generators/polymer2/**",
13 | "src/generators/polymer2-typescript/**"
14 | ]
15 |
16 | statements: 89
17 | branches: 74
18 | functions: 90
19 | lines: 89
20 |
--------------------------------------------------------------------------------
/packages/front-generator/README.md:
--------------------------------------------------------------------------------
1 | # Frontend Generator
2 |
3 | The Frontend Generator is a scaffolding tool that can be used to speed up the process of developing a frontend client. It can be used from [CUBA Studio](https://doc.cuba-platform.com/studio/) or as a standalone CLI tool. It can generate a starter app and add the pieces you need such as entity browser and editor screens.
4 |
5 | ## Documentation
6 |
7 | You can find documentation on Frontend Generator in [Frontend UI Manual](https://doc.cuba-platform.com/frontend).
--------------------------------------------------------------------------------
/packages/front-generator/bin/gen-cuba-front.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | 'use strict';
4 |
5 | process.title = 'gen-cuba-front';
6 |
7 | process.on('unhandledRejection', (reason, p) => {
8 | console.log('Unhandled Rejection ', p, ' reason: ', reason);
9 | process.exit(1);
10 | });
11 |
12 | require('../lib/cli').createAndLaunchCli();
--------------------------------------------------------------------------------
/packages/front-generator/custom_types/inquirer-autocomplete-prompt.d.ts:
--------------------------------------------------------------------------------
1 | declare module "inquirer-autocomplete-prompt" {}
2 |
--------------------------------------------------------------------------------
/packages/front-generator/custom_types/rxjs.d.ts:
--------------------------------------------------------------------------------
1 | // added since @types/yeoman-generator@2.0.3 contains reference to Rx.Observable
2 | declare namespace Rx {
3 | export interface Observable {}
4 | }
--------------------------------------------------------------------------------
/packages/front-generator/custom_types/yeoman-environment.d.ts:
--------------------------------------------------------------------------------
1 | declare module 'yeoman-environment' {
2 |
3 | class YeomanEnvironment {
4 | register(library: any, target?: string): string;
5 | registerStub(generator: any, namespace?: string): any;
6 | run(target: string, options?: any, done?: Function): void;
7 | getGeneratorsMeta(): {[name: string]: YeomanEnvironment.GeneratorMeta};
8 | lookup(callback: (error?: any) => void): void;
9 | }
10 |
11 | namespace YeomanEnvironment {
12 | interface GeneratorMeta {
13 | resolved: string;
14 | namespace: string;
15 | }
16 | }
17 |
18 | export = YeomanEnvironment;
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/packages/front-generator/scripts/copy-templates.js:
--------------------------------------------------------------------------------
1 | const vfs = require('vinyl-fs');
2 |
3 | vfs.src([
4 | 'src/**/template/**',
5 | 'src/**/template/.**',
6 | 'src/**/info.json']
7 | ).pipe(vfs.dest('lib'));
--------------------------------------------------------------------------------
/packages/front-generator/src/common/constants.ts:
--------------------------------------------------------------------------------
1 | export const ENTITIES_DIR = 'entities';
2 | export const BASE_ENTITIES_DIR = 'base';
3 | export const ENUMS_DIR = 'enums';
4 | export const ENUMS_FILE = 'enums';
5 |
6 | export const CUBA_APP_NAME = 'cubaApp';
7 | export const CUBA_APP_TYPE = 'CubaApp';
8 | export const FETCH_OPTIONS_TYPE = 'FetchOptions';
9 | export const SERIALIZED_ENTITY_TYPE = 'SerializedEntity';
10 | export const ENTITIES_WITH_COUNT_TYPE = 'EntitiesWithCount';
11 | export const FETCH_OPTIONS_NAME = 'fetchOpts';
12 | export const CUBA_APP_MODULE_SPEC = '@cuba-platform/rest';
13 |
--------------------------------------------------------------------------------
/packages/front-generator/src/common/ts-helpers.ts:
--------------------------------------------------------------------------------
1 | import * as ts from "typescript";
2 |
3 | export function renderTSNodes(nodes: ts.Node[], separator: string = '\n'): string {
4 | const resultFile = ts.createSourceFile(
5 | 'temp.ts',
6 | '',
7 | ts.ScriptTarget.Latest,
8 | false,
9 | ts.ScriptKind.TS,
10 | );
11 | const printer = ts.createPrinter({
12 | newLine: ts.NewLineKind.LineFeed,
13 | });
14 | // todo VM
15 | let content = '';
16 | nodes.forEach(node => {
17 | content += printer.printNode(
18 | ts.EmitHint.Unspecified,
19 | node,
20 | resultFile,
21 | ) + separator;
22 | });
23 |
24 | return content;
25 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2-typescript/app/index.ts:
--------------------------------------------------------------------------------
1 | import {commonGenerationOptionsConfig} from "../../../common/cli-options";
2 | import {createPolymer2AppGenerator} from "../../polymer2/app";
3 | import * as path from "path";
4 |
5 | export const generator = createPolymer2AppGenerator(path.join(__dirname, 'template'));
6 | export {commonGenerationOptionsConfig as options};
7 | export const params = [];
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2-typescript/app/template/_gitignore:
--------------------------------------------------------------------------------
1 | bower_components
2 | node_modules
3 | build
4 | /build-gradle
5 | src/**/*.js
6 | src/**/*.js.map
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2-typescript/app/template/images/app-icon/icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/packages/front-generator/src/generators/polymer2-typescript/app/template/images/app-icon/icon-144x144.png
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2-typescript/app/template/images/app-icon/icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/packages/front-generator/src/generators/polymer2-typescript/app/template/images/app-icon/icon-192x192.png
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2-typescript/app/template/images/app-icon/icon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/packages/front-generator/src/generators/polymer2-typescript/app/template/images/app-icon/icon-32x32.png
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2-typescript/app/template/images/app-icon/icon-48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/packages/front-generator/src/generators/polymer2-typescript/app/template/images/app-icon/icon-48x48.png
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2-typescript/app/template/images/app-icon/icon-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/packages/front-generator/src/generators/polymer2-typescript/app/template/images/app-icon/icon-512x512.png
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2-typescript/app/template/images/app-icon/icon-64x64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/packages/front-generator/src/generators/polymer2-typescript/app/template/images/app-icon/icon-64x64.png
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2-typescript/app/template/images/app-icon/icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/packages/front-generator/src/generators/polymer2-typescript/app/template/images/app-icon/icon-72x72.png
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2-typescript/app/template/images/app-icon/icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/packages/front-generator/src/generators/polymer2-typescript/app/template/images/app-icon/icon-96x96.png
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2-typescript/app/template/images/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/packages/front-generator/src/generators/polymer2-typescript/app/template/images/favicon.ico
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2-typescript/app/template/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "<%= title %>",
3 | "short_name": "<%= project.name %>",
4 | "start_url": "/<%= basePath %>/",
5 | "display": "standalone",
6 | "background_color": "<%= baseColor %>",
7 | "icons": [
8 | {
9 | "src": "images/app-icon/icon-192x192.png",
10 | "sizes": "192x192",
11 | "type": "image/png"
12 | },
13 | {
14 | "src": "images/app-icon/icon-512x512.png",
15 | "sizes": "512x512",
16 | "type": "image/png"
17 | }
18 | ]
19 | }
20 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2-typescript/app/template/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "<%= project.name %>",
3 | "version": "0.0.1",
4 | "scripts": {
5 | "build": "npm run compile && polymer build",
6 | "serve": "polymer serve",
7 | "compile": "tsc",
8 | "watch": "tsc -w"
9 | },
10 | "devDependencies": {
11 | "bower": "~1.8.2",
12 | "polymer-cli": "~1.8.0",
13 | "typescript": "~2.8.1"
14 | },
15 | "private": true,
16 | "cubaPlatform": {
17 | "generator": "polymer2-typescript"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2-typescript/app/template/polymer.json:
--------------------------------------------------------------------------------
1 | {
2 | "entrypoint": "index.html",
3 | "shell": "src/<%= project.namespace %>-shell.html",
4 | "sources": [
5 | "src/**/*",
6 | "images/**/*",
7 | "bower.json"
8 | ],
9 | "extraDependencies": [
10 | "manifest.json",
11 | "service-worker.js",
12 | "bower_components/webcomponentsjs/*.js",
13 | "bower_components/fetch/fetch.js"
14 | ],
15 | "lint": {
16 | "rules": ["polymer-2"]
17 | },
18 | "builds": [
19 | {
20 | "preset": "es6-unbundled",
21 | "basePath": "/<%= basePath %>/",
22 | "addServiceWorker": false
23 | }
24 | ]
25 | }
26 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2-typescript/app/template/service-worker.js:
--------------------------------------------------------------------------------
1 | console.info('Service worker disabled for development, will be generated at build time.');
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2-typescript/app/template/src/shared-styles.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2-typescript/app/template/sw-precache-config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | replacePrefix: '/<%= basePath %>/',
3 | staticFileGlobs: [
4 | 'index.html',
5 | 'src/**.html',
6 | 'images/*',
7 | 'manifest.json',
8 | 'bower_components/webcomponentsjs/webcomponents-loader.js',
9 | 'bower_components/fetch/fetch.js'
10 | ],
11 | navigateFallback: 'index.html'
12 | };
13 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2-typescript/blank-component/template/component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2-typescript/blank-component/template/component.ts:
--------------------------------------------------------------------------------
1 | namespace <%= projectNamespace %> {
2 | const {customElement} = Polymer.decorators;
3 |
4 | @customElement('<%= componentName %>')
5 | class <%= className %> extends Polymer.Element {
6 | }
7 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2-typescript/common.ts:
--------------------------------------------------------------------------------
1 | export interface TSPolymerElementModel {
2 | projectNamespace: string;
3 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2-typescript/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "clientBaseTech": "Polymer",
3 | "bower": true
4 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/app/template-model.ts:
--------------------------------------------------------------------------------
1 | import {ProjectInfo} from "../../../common/model/cuba-model";
2 |
3 | export interface Polymer2AppTemplateModel {
4 | generatorPackageVersion: string;
5 | title: string;
6 | baseColor: string;
7 | basePath: string;
8 | project: ProjectInfo;
9 | genClassName: (suffix: string) => string;
10 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/app/template/_gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | bower_components
3 | build
4 | /build-gradle
5 | .generation
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/app/template/images/app-icon/icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/packages/front-generator/src/generators/polymer2/app/template/images/app-icon/icon-144x144.png
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/app/template/images/app-icon/icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/packages/front-generator/src/generators/polymer2/app/template/images/app-icon/icon-192x192.png
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/app/template/images/app-icon/icon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/packages/front-generator/src/generators/polymer2/app/template/images/app-icon/icon-32x32.png
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/app/template/images/app-icon/icon-48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/packages/front-generator/src/generators/polymer2/app/template/images/app-icon/icon-48x48.png
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/app/template/images/app-icon/icon-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/packages/front-generator/src/generators/polymer2/app/template/images/app-icon/icon-512x512.png
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/app/template/images/app-icon/icon-64x64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/packages/front-generator/src/generators/polymer2/app/template/images/app-icon/icon-64x64.png
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/app/template/images/app-icon/icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/packages/front-generator/src/generators/polymer2/app/template/images/app-icon/icon-72x72.png
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/app/template/images/app-icon/icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/packages/front-generator/src/generators/polymer2/app/template/images/app-icon/icon-96x96.png
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/app/template/images/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/packages/front-generator/src/generators/polymer2/app/template/images/favicon.ico
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/app/template/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "<%= title %>",
3 | "short_name": "<%= project.name %>",
4 | "start_url": "/<%= basePath %>/",
5 | "display": "standalone",
6 | "background_color": "<%= baseColor %>",
7 | "icons": [
8 | {
9 | "src": "images/app-icon/icon-192x192.png",
10 | "sizes": "192x192",
11 | "type": "image/png"
12 | },
13 | {
14 | "src": "images/app-icon/icon-512x512.png",
15 | "sizes": "512x512",
16 | "type": "image/png"
17 | }
18 | ]
19 | }
20 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/app/template/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "<%= project.name %>",
3 | "version": "0.0.1",
4 | "scripts": {
5 | "build": "polymer build",
6 | "serve": "polymer serve"
7 | },
8 | "devDependencies": {
9 | "bower": "~1.8.2",
10 | "polymer-cli": "~1.8.0"
11 | },
12 | "private": true,
13 | "cubaPlatform": {
14 | "generator": "polymer2"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/app/template/polymer.json:
--------------------------------------------------------------------------------
1 | {
2 | "entrypoint": "index.html",
3 | "shell": "src/<%= project.namespace %>-shell.html",
4 | "sources": [
5 | "src/**/*",
6 | "images/**/*",
7 | "bower.json"
8 | ],
9 | "extraDependencies": [
10 | "manifest.json",
11 | "service-worker.js",
12 | "bower_components/webcomponentsjs/*.js",
13 | "bower_components/fetch/fetch.js"
14 | ],
15 | "lint": {
16 | "rules": ["polymer-2"]
17 | },
18 | "builds": [
19 | {
20 | "preset": "es6-unbundled",
21 | "basePath": "/<%= basePath %>/",
22 | "addServiceWorker": false
23 | }
24 | ]
25 | }
26 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/app/template/service-worker.js:
--------------------------------------------------------------------------------
1 | console.info('Service worker disabled for development, will be generated at build time.');
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/app/template/sw-precache-config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | replacePrefix: '/<%= basePath %>/',
3 | staticFileGlobs: [
4 | 'index.html',
5 | 'src/**.html',
6 | 'images/*',
7 | 'manifest.json',
8 | 'bower_components/webcomponentsjs/webcomponents-loader.js',
9 | 'bower_components/fetch/fetch.js'
10 | ],
11 | navigateFallback: 'index.html'
12 | };
13 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/blank-component/params.ts:
--------------------------------------------------------------------------------
1 | import {StudioTemplateProperty, StudioTemplatePropertyType} from "../../../common/studio/studio-model";
2 |
3 | export const blankComponentParams: StudioTemplateProperty[] = [
4 | {
5 | caption: "Component name",
6 | code: "componentName",
7 | propertyType: StudioTemplatePropertyType.POLYMER_COMPONENT_NAME,
8 | required: true
9 | }
10 | ];
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/blank-component/template-model.ts:
--------------------------------------------------------------------------------
1 | import {CommonTemplateModel} from "../common/template-model";
2 |
3 | export interface Polymer2ComponentTemplateModel extends CommonTemplateModel {
4 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/common/fields/template/booleanField.html:
--------------------------------------------------------------------------------
1 | <%- label %>
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/common/fields/template/dateField.html:
--------------------------------------------------------------------------------
1 | required <%}%>>
7 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/common/fields/template/dateTimeField.html:
--------------------------------------------------------------------------------
1 | required <% }%>
4 | <% if (maxLength!=null) { %> maxlength="<%-maxLength%>" <%}%>
5 | error-message="[[<%-errorBindPath%>]]"
6 | invalid="[[_isInvalid(<%-errorBindPath%>)]]">
7 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/common/fields/template/enumField.html:
--------------------------------------------------------------------------------
1 | required <%}%>>
7 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/common/fields/template/fileField.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/common/fields/template/fpNumberField.html:
--------------------------------------------------------------------------------
1 | required <%}%>
6 | error-message="[[<%-errorBindPath%>]]"
7 | invalid="[[_isInvalid(<%-errorBindPath%>)]]">
8 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/common/fields/template/numberField.html:
--------------------------------------------------------------------------------
1 | print "required" <%}%>
5 | error-message="[[<%-errorBindPath%>]]"
6 | invalid="[[_isInvalid(<%-errorBindPath%>)]]">
7 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/common/fields/template/textField.html:
--------------------------------------------------------------------------------
1 | required <%}%>
4 | <% if (maxLength != null) { %>maxlength="<%-maxLength%>" <%}%>
5 | error-message="[[<%-errorBindPath%>]]"
6 | invalid="[[_isInvalid(<%-errorBindPath%>)]]">
7 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/common/fields/template/timeField.html:
--------------------------------------------------------------------------------
1 | required <% } %>
4 | <% if (maxLength) { %> maxlength="<%-maxLength%>"<% } %>
5 | error-message="[[<%-errorBindPath%>]]"
6 | invalid="[[_isInvalid(<%-errorBindPath%>)]]">
7 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/common/template-model.ts:
--------------------------------------------------------------------------------
1 | export interface CommonTemplateModel {
2 | componentName: string;
3 | className: string;
4 | relDirShift: string;
5 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/entity-cards/template-model.ts:
--------------------------------------------------------------------------------
1 | import {CommonTemplateModel} from "../common/template-model";
2 | import {Entity, View} from "../../../common/model/cuba-model";
3 |
4 | export interface EntityCardsTemplateModel extends CommonTemplateModel {
5 | entity: Entity,
6 | view: View,
7 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/entity-edit/template-model.ts:
--------------------------------------------------------------------------------
1 | import {CommonTemplateModel} from "../common/template-model";
2 | import {Entity, View} from "../../../common/model/cuba-model";
3 |
4 | export interface EntityEditTemplateModel extends CommonTemplateModel {
5 | view: View,
6 | entity: Entity,
7 | imports: string[],
8 | fields: string[]
9 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/entity-list/template-model.ts:
--------------------------------------------------------------------------------
1 | import {CommonTemplateModel} from "../common/template-model";
2 | import {Entity, View} from "../../../common/model/cuba-model";
3 |
4 | export interface EntityListTemplateModel extends CommonTemplateModel {
5 | entity: Entity,
6 | view: View,
7 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/entity-management/template-model.ts:
--------------------------------------------------------------------------------
1 | import {CommonTemplateModel} from "../common/template-model";
2 | import {entityManagementListType} from "./params";
3 |
4 | export interface EntityManagementTemplateModel extends CommonTemplateModel {
5 | listComponentName: string;
6 | editComponentName: string;
7 | listType: entityManagementListType
8 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "clientBaseTech": "Polymer",
3 | "bower": true
4 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/query-results/template-model.ts:
--------------------------------------------------------------------------------
1 | import {CommonTemplateModel} from "../common/template-model";
2 | import {RestQuery} from "../../../common/model/cuba-model";
3 |
4 | export interface QueryResultsTemplateModel extends CommonTemplateModel {
5 | query: RestQuery;
6 | fields: string[];
7 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/service-data/template-model.ts:
--------------------------------------------------------------------------------
1 | import {CommonTemplateModel} from "../common/template-model";
2 | import {RestService, RestServiceMethod} from "../../../common/model/cuba-model";
3 |
4 | export interface ServiceDataTemplateModel extends CommonTemplateModel {
5 | method: RestServiceMethod;
6 | service: RestService;
7 | fields: string[];
8 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/polymer2/service-form/template-model.ts:
--------------------------------------------------------------------------------
1 | import {CommonTemplateModel} from "../common/template-model";
2 | import {RestService, RestServiceMethod} from "../../../common/model/cuba-model";
3 |
4 | export interface ServiceFormTemplateModel extends CommonTemplateModel {
5 | method: RestServiceMethod;
6 | service: RestService;
7 | fields: string[];
8 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-native/app/template/.env:
--------------------------------------------------------------------------------
1 | REACT_NATIVE_APP_CUBA_URL="http://localhost:8080/<%= project.modulePrefix %>/rest/"
2 | REACT_NATIVE_APP_REST_CLIENT_ID=<%= project.restClientId %>
3 | REACT_NATIVE_APP_REST_CLIENT_SECRET=<%= project.restClientSecret %>
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-native/app/template/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/**/*
2 | .expo/*
3 | .idea/*
4 | npm-debug.*
5 | *.jks
6 | *.p8
7 | *.p12
8 | *.key
9 | *.mobileprovision
10 | *.orig.*
11 | web-build/
12 | web-report/
13 |
14 | # macOS
15 | .DS_Store
16 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-native/app/template/App.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {AsyncStorage} from 'react-native';
3 | import {registerBase64} from "./util/base64";
4 | import {CubaAppProvider} from "@cuba-platform/react-core";
5 | import {Root} from "./components/Root";
6 | import {cubaREST, REST_TOKEN_STORAGE_KEY} from './rest/rest';
7 |
8 | registerBase64();
9 |
10 | export default function App() {
11 | return (
12 | AsyncStorage.getItem(REST_TOKEN_STORAGE_KEY)}>
13 |
14 |
15 | );
16 | }
17 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-native/app/template/assets/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/packages/front-generator/src/generators/react-native/app/template/assets/icon.png
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-native/app/template/assets/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/packages/front-generator/src/generators/react-native/app/template/assets/splash.png
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-native/app/template/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = function(api) {
2 | api.cache(true);
3 | return {
4 | presets: ['babel-preset-expo', 'module:react-native-dotenv'],
5 | };
6 | };
7 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-native/app/template/rest/errorCodes.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Error code indicating that authorization grant is not valid (for example, login credentials are incorrect).
3 | * Refer to OAuth 2.0 specification at https://tools.ietf.org/html/rfc6749#section-5.2 for more details
4 | */
5 | export const OAUTH2_INVALID_GRANT = 'invalid_grant';
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-native/app/template/rest/rest.ts:
--------------------------------------------------------------------------------
1 | import { initializeApp } from "@cuba-platform/rest";
2 | import { REACT_NATIVE_APP_CUBA_URL, REACT_NATIVE_APP_REST_CLIENT_ID, REACT_NATIVE_APP_REST_CLIENT_SECRET } from "react-native-dotenv";
3 |
4 | export const cubaREST = initializeApp({
5 | name: '<%=project.namespace%>',
6 | apiUrl: REACT_NATIVE_APP_CUBA_URL,
7 | restClientId: REACT_NATIVE_APP_REST_CLIENT_ID,
8 | restClientSecret: REACT_NATIVE_APP_REST_CLIENT_SECRET,
9 | });
10 |
11 | export const REST_TOKEN_STORAGE_KEY = "cubaAccessToken";
12 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-native/app/template/styles/palette.ts:
--------------------------------------------------------------------------------
1 | export const colors = {
2 | primary: '#3D88EC',
3 |
4 | error: "#bb0000",
5 |
6 | borders: '#EAEAEA',
7 | placeholders: '#C7C7C7',
8 |
9 | textPrimary: '#3D3D3D',
10 | textInverted: '#FFFFFF',
11 | };
12 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-native/app/template/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "allowSyntheticDefaultImports": true,
4 | "experimentalDecorators": true,
5 | "jsx": "react-native",
6 | "lib": ["dom", "esnext"],
7 | "moduleResolution": "node",
8 | "noEmit": true,
9 | "skipLibCheck": true,
10 | "resolveJsonModule": true
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-native/app/template/util/base64.ts:
--------------------------------------------------------------------------------
1 | import * as base64 from 'base-64';
2 |
3 | declare const global;
4 | export function registerBase64() {
5 | if (!global.btoa) {
6 | global.btoa = base64.encode;
7 | }
8 |
9 | if (!global.atob) {
10 | global.atob = base64.decode;
11 | }
12 | }
13 |
14 | registerBase64();
15 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-native/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "clientBaseTech": "React Native",
3 | "bower": false
4 | }
5 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | indent_style = space
5 | indent_size = 2
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/.env.development.local:
--------------------------------------------------------------------------------
1 | REACT_APP_CUBA_URL=http://localhost:8080/<%= project.modulePrefix %>/rest/
2 | REACT_APP_REST_CLIENT_ID=<%= project.restClientId %>
3 | REACT_APP_REST_CLIENT_SECRET=<%= project.restClientSecret %>
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/.env.production.local:
--------------------------------------------------------------------------------
1 | PUBLIC_URL=/<%= basePath %>/
2 | REACT_APP_CUBA_URL=/<%= project.modulePrefix %>/rest/
3 | REACT_APP_REST_CLIENT_ID=<%= project.restClientId %>
4 | REACT_APP_REST_CLIENT_SECRET=<%= project.restClientSecret %>
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/README.md:
--------------------------------------------------------------------------------
1 | # React Front-end Client for CUBA Platform
2 |
3 | This project was generated with [@cuba-platform/front-generator](https://github.com/cuba-platform/frontend).
4 |
5 | Install dependencies:
6 |
7 | ```bash
8 | npm install
9 | ```
10 |
11 | Run project:
12 |
13 | ```bash
14 | npm run start
15 | ```
16 |
17 | This will launch a dev server and allow you to access your app at `localhost:3000`.
18 |
19 | ### Learn More
20 |
21 | React client documentation is available [here](https://doc.cuba-platform.com/frontend).
22 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/_editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | indent_style = space
5 | indent_size = 2
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/_gitignore:
--------------------------------------------------------------------------------
1 | # dependencies
2 | /node_modules
3 |
4 | # testing
5 | /coverage
6 |
7 | # production
8 | /build
9 | /build-gradle
10 |
11 | # misc
12 | .DS_Store
13 |
14 | npm-debug.log*
15 | yarn-debug.log*
16 | yarn-error.log*
17 |
18 | .idea
19 | .vscode
20 | .gradle
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/images.d.ts:
--------------------------------------------------------------------------------
1 | declare module '*.svg'
2 | declare module '*.png'
3 | declare module '*.jpg'
4 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "<%= project.name %>",
3 | "name": "<%= title %>",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "64x64 32x32 24x24 16x16",
8 | "type": "image/x-icon"
9 | }
10 | ],
11 | "start_url": "./index.html",
12 | "display": "standalone",
13 | "theme_color": "#000000",
14 | "background_color": "#ffffff"
15 | }
16 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/src/app/App.css:
--------------------------------------------------------------------------------
1 | .main-layout {
2 | height: 100%;
3 | }
4 |
5 | .layout-container.ant-layout {
6 | min-height: initial;
7 | }
8 |
9 | .layout-sider {
10 | background: #ffffff;
11 | }
12 |
13 | .layout-content {
14 | padding: 24px 24px 24px;
15 | }
16 |
17 | .narrow-layout {
18 | max-width: 1024px;
19 | margin: auto;
20 | }
21 |
22 | .narrow-layout.ant-card {
23 | max-width: 1024px;
24 | margin: auto;
25 | }
26 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/src/app/App.test.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import * as ReactDOM from 'react-dom';
3 | import App from './App';
4 | import {MainStore} from "@cuba-platform/react-core";
5 | import {initializeApp} from "@cuba-platform/rest";
6 | import {IntlProvider} from 'react-intl';
7 |
8 | it('renders without crashing', () => {
9 | const div = document.createElement('div');
10 | ReactDOM.render(, div);
11 | ReactDOM.unmountComponentAtNode(div);
12 | });
13 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/src/app/CenteredLoader.css:
--------------------------------------------------------------------------------
1 | .centered-loader-icon {
2 | font-size: 24px;
3 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/src/app/CenteredLoader.tsx:
--------------------------------------------------------------------------------
1 | import { LoadingOutlined } from '@ant-design/icons';
2 | import Centered from './common/Centered';
3 | import * as React from 'react';
4 | import './CenteredLoader.css';
5 |
6 | export class CenteredLoader extends React.Component {
7 | render() {
8 | return (
9 |
10 |
11 |
12 | );
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/src/app/common/Centered.css:
--------------------------------------------------------------------------------
1 | ._centered {
2 | width: 100vw;
3 | height: 100vh;
4 | display: flex;
5 | align-items: center;
6 | justify-content: center;
7 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/src/app/common/Centered.tsx:
--------------------------------------------------------------------------------
1 | import * as React from "react";
2 | import {ReactNode} from "react";
3 | import './Centered.css';
4 |
5 | export default function Centered({children}: {children?: ReactNode}) {
6 | return (
7 |
8 | {children}
9 |
10 | )
11 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/src/app/header/AppHeader.css:
--------------------------------------------------------------------------------
1 | .app-header {
2 | display: flex;
3 | justify-content: space-between;
4 | color: #CCCCCC;
5 | }
6 |
7 | .user-panel > .panelelement {
8 | margin: 6px;
9 | border: 0;
10 | }
11 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/src/app/header/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/packages/front-generator/src/generators/react-typescript/app/template/src/app/header/logo.png
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/src/app/home/HomePage.tsx:
--------------------------------------------------------------------------------
1 | import * as React from "react";
2 | import {FormattedMessage} from 'react-intl';
3 |
4 | class HomePage extends React.Component {
5 |
6 | render() {
7 | return(
8 |
9 | <%=title%>!
10 |
11 | )
12 | }
13 | }
14 |
15 | export default HomePage;
16 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/src/app/login/Login.css:
--------------------------------------------------------------------------------
1 | .login-form {
2 | border-radius: 4px;
3 | background: #fff;
4 | padding: 32px 32px 0;
5 | min-width: 300px;
6 | box-shadow: 0 0 50px 0 rgba(0,0,0,0.2);
7 | }
8 |
9 | .login-form > .title {
10 | text-align: center;
11 | margin-bottom: 24px;
12 | font-size: 20px;
13 | }
14 |
15 | .login-form > .logo {
16 | display: block;
17 | margin: 0 auto 12px;
18 | }
19 |
20 | .language-switcher-container {
21 | float: right;
22 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/src/app/login/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/packages/front-generator/src/generators/react-typescript/app/template/src/app/login/logo.png
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/src/config.ts:
--------------------------------------------------------------------------------
1 | export const CUBA_APP_URL = process.env.REACT_APP_CUBA_URL ?? '/app/rest/';
2 | export const REST_CLIENT_ID = process.env.REACT_APP_REST_CLIENT_ID ?? "client";
3 | export const REST_CLIENT_SECRET = process.env.REACT_APP_REST_CLIENT_SECRET ?? "secret";
4 |
5 | export const DEFAULT_COUNT = 10; // Typical amount of entities to be loaded on browse screens
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/src/i18n/LanguageSwitcher.css:
--------------------------------------------------------------------------------
1 | .language-switcher.-header.ant-select {
2 | background: none;
3 | color: #CCCCCC;
4 | }
5 |
6 | .language-switcher.-header .ant-select-arrow {
7 | color: #CCCCCC;
8 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/src/i18n/localeCaptions.ts.ejs:
--------------------------------------------------------------------------------
1 | const localeCaptions = {
2 | <% if (isLocaleUsed('en')) { -%>
3 | 'en': 'English',
4 | <% } -%>
5 | <% if (isLocaleUsed('fr')) { -%>
6 | 'fr': 'Français',
7 | <% } -%>
8 | <% if (isLocaleUsed('ru')) { -%>
9 | 'ru': 'Русский',
10 | <% } -%>
11 | <% if (isLocaleUsed('zh-cn')) { -%>
12 | 'zh-cn': '中文',
13 | <% } -%>
14 | };
15 |
16 | export default localeCaptions;
17 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/src/index.css:
--------------------------------------------------------------------------------
1 | html, body, #root {
2 | height: 100%;
3 | }
4 |
5 | body {
6 | margin: 0;
7 | padding: 0;
8 | font-family: sans-serif;
9 | background: #fafafa;
10 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/src/react-app-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/tsconfig.prod.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json"
3 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/app/template/tsconfig.test.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "module": "commonjs"
5 | }
6 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/blank-component/params.ts:
--------------------------------------------------------------------------------
1 | import {StudioTemplateProperty, StudioTemplatePropertyType} from "../../../common/studio/studio-model";
2 |
3 | export const blankComponentParams: StudioTemplateProperty[] = [
4 | {
5 | caption: "Component class name",
6 | code: "componentName",
7 | propertyType: StudioTemplatePropertyType.POLYMER_COMPONENT_NAME,
8 | required: true
9 | }
10 | ];
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/blank-component/template/Component.tsx:
--------------------------------------------------------------------------------
1 | import * as React from "react";
2 |
3 | export class <%= className %> extends React.Component {
4 | render() {
5 | return(
6 |
7 | <%= className %>
8 |
9 | )
10 | }
11 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/common/base-entity-screen-generator/params.ts:
--------------------------------------------------------------------------------
1 | import {Entity} from '../../../../common/model/cuba-model';
2 |
3 | export interface BaseEntityScreenAnswers {
4 | entity: Entity;
5 | listShowIdAttr?: boolean;
6 | listIdAttrPos?: number;
7 | editIdAttrPos?: number;
8 | idAttrName?: string; // Will be asked for if not found in project model
9 | }
10 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/common/base-entity-screen-generator/template-model.ts:
--------------------------------------------------------------------------------
1 | import {CommonTemplateModel} from '../template-model';
2 |
3 | export interface BaseEntityScreenTemplateModel extends CommonTemplateModel {
4 | stringIdName?: string;
5 | }
6 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/common/questions.ts:
--------------------------------------------------------------------------------
1 | import {StudioTemplatePropertyType} from '../../../common/studio/studio-model';
2 |
3 | export const idAttrNameQuestions = [
4 | {
5 | code: 'idAttrName',
6 | caption: 'You have chosen a String ID entity, but we could not find the ID attribute name in the project model. \n' +
7 | 'What is the ID attribute name?',
8 | propertyType: StudioTemplatePropertyType.STRING,
9 | required: true
10 | }
11 | ];
12 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/entity-cards/template-model.ts:
--------------------------------------------------------------------------------
1 | import {Entity, EntityAttribute, View} from "../../../common/model/cuba-model";
2 | import {BaseEntityScreenTemplateModel} from '../common/base-entity-screen-generator/template-model';
3 |
4 | export interface EntityCardsTemplateModel extends BaseEntityScreenTemplateModel {
5 | nameLiteral: string;
6 | entity: Entity,
7 | view: View,
8 | attributes: EntityAttribute[]
9 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/entity-management/entity-management-en.json:
--------------------------------------------------------------------------------
1 | {
2 | "management.browser.delete.areYouSure": "Are you sure you want to delete {instanceName}?",
3 | "management.browser.delete.ok": "Delete",
4 | "management.browser.noItems": "No data",
5 | "management.editor.validationError": "Validation Error. Please check the data you entered.",
6 | "management.editor.success": "Entity has been updated"
7 | }
8 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/entity-management/entity-management-fr.json:
--------------------------------------------------------------------------------
1 | {
2 | "management.browser.delete.areYouSure": "Êtes-vous sûr de vouloir supprimer {instanceName}?",
3 | "management.browser.delete.ok": "Supprimer",
4 | "management.browser.noItems": "Aucune donnée",
5 | "management.editor.validationError": "Erreur de validation. Veuillez vérifier votre saisie.",
6 | "management.editor.success": "L'entité a été mise à jour"
7 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/entity-management/entity-management-ru.json:
--------------------------------------------------------------------------------
1 | {
2 | "management.browser.delete.areYouSure": "Вы уверены, что хотите удалить {instanceName}?",
3 | "management.browser.delete.ok": "Удалить",
4 | "management.browser.noItems": "Нет данных",
5 | "management.editor.validationError": "Ошибка валидации. Пожалуйста, проверьте введенные данные.",
6 | "management.editor.success": "Сущность успешно сохранена"
7 | }
8 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/entity-management/entity-management-zh-cn.json:
--------------------------------------------------------------------------------
1 | {
2 | "management.browser.delete.areYouSure": "确定要删除 {instanceName}?",
3 | "management.browser.delete.ok": "删除",
4 | "management.browser.noItems": "暂无数据",
5 | "management.editor.validationError": "验证错误。请检查输入的数据",
6 | "management.editor.success": "实体已更新"
7 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/react-typescript/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "clientBaseTech": "React",
3 | "bower": false
4 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/sdk/README.md:
--------------------------------------------------------------------------------
1 | # TypeScript SDK
2 |
3 | Documentation is available [here](https://doc.cuba-platform.com/frontend).
4 |
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/sdk/all/index.ts:
--------------------------------------------------------------------------------
1 | import {commonGenerationOptionsConfig} from "../../../common/cli-options";
2 | import {SdkAllGenerator} from "../sdk-generator";
3 |
4 | export const options = commonGenerationOptionsConfig;
5 | export const params = [];
6 | export const generator = SdkAllGenerator;
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/sdk/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "clientBaseTech": "Typescript",
3 | "bower": false
4 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/generators/sdk/model/index.ts:
--------------------------------------------------------------------------------
1 | import {commonGenerationOptionsConfig} from "../../../common/cli-options";
2 | import {SdkModelGenerator} from "../sdk-generator";
3 |
4 | export const options = commonGenerationOptionsConfig;
5 | export const params = [];
6 | export const generator = SdkModelGenerator;
--------------------------------------------------------------------------------
/packages/front-generator/src/test/common/test-utils.ts:
--------------------------------------------------------------------------------
1 | import { expect } from "chai";
2 |
3 | export async function expectRejectedPromise(promiseCallback: () => Promise, errorMessage?: string) {
4 | try {
5 | await promiseCallback();
6 | expect.fail('The promise is fulfilled');
7 | } catch (err: any) {
8 | if (errorMessage != null) {
9 | expect(err.message).to.equal(errorMessage);
10 | }
11 | return;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/packages/front-generator/src/test/fixtures/answers/int-id-management-table.json:
--------------------------------------------------------------------------------
1 | {
2 | "editView": {
3 | "name": "_local",
4 | "entityName": "scr_IntegerIdTestEntity"
5 | },
6 | "editComponentName": "IntIdMgtTableEdit",
7 | "listView": {
8 | "name": "_local",
9 | "entityName": "scr_IntegerIdTestEntity"
10 | },
11 | "listComponentName": "IntIdMgtTableBrowse",
12 | "listType": "table",
13 | "entity": {
14 | "name": "scr_IntegerIdTestEntity"
15 | },
16 | "managementComponentName": "int-id-management-table"
17 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/test/fixtures/answers/string-id-management-table-explicit-id-name.json:
--------------------------------------------------------------------------------
1 | {
2 | "editView": {
3 | "name": "_local",
4 | "entityName": "scr_StringIdTestEntity"
5 | },
6 | "editComponentName": "StringIdMgtTableEdit",
7 | "editIdAttrPos": 1,
8 | "listView": {
9 | "name": "_local",
10 | "entityName": "scr_StringIdTestEntity"
11 | },
12 | "listComponentName": "StringIdMgtTableBrowse",
13 | "listType": "table",
14 | "listShowIdAttr": true,
15 | "listIdAttrPos": 2,
16 | "entity": {
17 | "name": "scr_StringIdTestEntity"
18 | },
19 | "managementComponentName": "string-id-mgt-table-management",
20 | "idAttrName": "identifier"
21 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/test/fixtures/answers/string-id-management-table-no-id-name.json:
--------------------------------------------------------------------------------
1 | {
2 | "editView": {
3 | "name": "_local",
4 | "entityName": "scr_StringIdTestEntity"
5 | },
6 | "editComponentName": "StringIdMgtTableEdit",
7 | "editIdAttrPos": 1,
8 | "listView": {
9 | "name": "_local",
10 | "entityName": "scr_StringIdTestEntity"
11 | },
12 | "listComponentName": "StringIdMgtTableBrowse",
13 | "listType": "table",
14 | "listShowIdAttr": true,
15 | "listIdAttrPos": 2,
16 | "entity": {
17 | "name": "scr_StringIdTestEntity"
18 | },
19 | "managementComponentName": "string-id-mgt-table-management"
20 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/test/fixtures/answers/string-id-management-table.json:
--------------------------------------------------------------------------------
1 | {
2 | "editView": {
3 | "name": "_local",
4 | "entityName": "scr_StringIdTestEntity"
5 | },
6 | "editComponentName": "StringIdMgtTableEdit",
7 | "editIdAttrPos": 1,
8 | "listView": {
9 | "name": "_local",
10 | "entityName": "scr_StringIdTestEntity"
11 | },
12 | "listComponentName": "StringIdMgtTableBrowse",
13 | "listType": "table",
14 | "listShowIdAttr": true,
15 | "listIdAttrPos": 2,
16 | "entity": {
17 | "name": "scr_StringIdTestEntity",
18 | "idAttributeName": "identifier"
19 | },
20 | "managementComponentName": "string-id-mgt-table-management"
21 | }
--------------------------------------------------------------------------------
/packages/front-generator/src/test/fixtures/query-model-car.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "ecoCars",
4 | "jpql": "select c from mpg$Car c where c.ecoRank = 3",
5 | "entity": "mpg$Car",
6 | "view": "_local",
7 | "params": []
8 | },
9 | {
10 | "name": "carsByType",
11 | "jpql": "select c from mpg$Car c where c.carType = :carType",
12 | "entity": "mpg$Car",
13 | "view": "_local",
14 | "params": [
15 | {
16 | "name": "carType",
17 | "type": "java.lang.String"
18 | }
19 | ]
20 | }
21 | ]
22 |
--------------------------------------------------------------------------------
/packages/front-generator/src/test/fixtures/react-client/.env.development.local:
--------------------------------------------------------------------------------
1 | REACT_APP_CUBA_URL=http://localhost:8080/app/rest/
2 | REACT_APP_REST_CLIENT_ID=rest-client-id-9876
3 | REACT_APP_REST_CLIENT_SECRET=rest-secret-54321
--------------------------------------------------------------------------------
/packages/front-generator/src/test/fixtures/react-client/.env.production.local:
--------------------------------------------------------------------------------
1 | PUBLIC_URL=/app-front/
2 | REACT_APP_CUBA_URL=/app/rest/
3 | REACT_APP_REST_CLIENT_ID=rest-client-id-9876
4 | REACT_APP_REST_CLIENT_SECRET=rest-secret-54321
--------------------------------------------------------------------------------
/packages/front-generator/src/test/fixtures/react-client/src/app/component/BlankComponent.tsx:
--------------------------------------------------------------------------------
1 | import * as React from "react";
2 |
3 | export class BlankComponent extends React.Component {
4 | render() {
5 | return BlankComponent
;
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/front-generator/src/test/fixtures/templates/EntityManagementEditor.tsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/packages/front-generator/src/test/fixtures/templates/EntityManagementEditor.tsx
--------------------------------------------------------------------------------
/packages/front-generator/src/test/fixtures/templates/i18nMappings.ts:
--------------------------------------------------------------------------------
1 | import en from "./en.json";
2 | import enUs from "antd/es/locale/en_US";
3 | import ru from "./ru.json";
4 | import ruRu from "antd/es/locale/ru_RU";
5 |
6 | export const antdLocaleMapping = {
7 | en: enUs,
8 | ru: ruRu
9 | };
10 |
11 | export const messagesMapping = {
12 | en: en,
13 | ru: ru
14 | };
15 |
--------------------------------------------------------------------------------
/packages/front-generator/src/test/fixtures/view-properties--association-o2o.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "name",
4 | "lazy": false
5 | },
6 | {
7 | "name": "datatypesTestEntity",
8 | "entity": "scr_DatatypesTestEntity",
9 | "lazy": false
10 | }
11 | ]
12 |
--------------------------------------------------------------------------------
/packages/front-generator/src/test/generator.test.ts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/packages/front-generator/src/test/generator.test.ts
--------------------------------------------------------------------------------
/packages/front-generator/test/e2e/expect/entities/ScrUserInfo.ts:
--------------------------------------------------------------------------------
1 | import { BaseUuidEntity } from "./base/sys$BaseUuidEntity";
2 | import { Car } from "./scr$Car";
3 | export class ScrUserInfo extends BaseUuidEntity {
4 | static NAME = "ScrUserInfo";
5 | firstName?: string | null;
6 | lastName?: string | null;
7 | favouriteCars?: Car | null;
8 | }
9 | export type ScrUserInfoViewName = "_minimal" | "_local" | "_base";
10 | export type ScrUserInfoView = never;
11 |
--------------------------------------------------------------------------------
/packages/front-generator/test/e2e/expect/enums/enums.ts:
--------------------------------------------------------------------------------
1 | export enum CarType {
2 | SEDAN = "SEDAN",
3 | HATCHBACK = "HATCHBACK"
4 | }
5 |
6 | export enum EcoRank {
7 | EURO1 = "EURO1",
8 | EURO2 = "EURO2",
9 | EURO3 = "EURO3"
10 | }
11 |
12 |
--------------------------------------------------------------------------------
/packages/front-generator/test/e2e/fixtures/projectModel-empty.json:
--------------------------------------------------------------------------------
1 | {
2 | "project": {
3 | "name": "empty-prj",
4 | "namespace": "emptyprj",
5 | "modulePrefix": "app",
6 | "modelPrefix": "app"
7 | },
8 | "entities": [],
9 | "enums": [],
10 | "baseProjectEntities": [],
11 | "views": [],
12 | "restQueries": [],
13 | "restServices": []
14 | }
--------------------------------------------------------------------------------
/packages/front-generator/test/e2e/fixtures/sdk/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es2015",
4 | "module": "commonjs",
5 | "outDir": "./lib",
6 | "sourceMap": true,
7 | "strict": true,
8 | "types": []
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/packages/front-generator/test/mocha.opts:
--------------------------------------------------------------------------------
1 | --require ts-node/register
2 | src/test/**/*.test.ts
3 | --timeout 0
4 |
--------------------------------------------------------------------------------
/packages/front-generator/tsconfig.declarations.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "declaration": true,
5 | "emitDeclarationOnly": true,
6 | "outDir": "./lib"
7 | },
8 | "include": [
9 | "custom_types/**/*.ts",
10 | "src/index.ts"
11 | ]
12 | }
--------------------------------------------------------------------------------
/sample-car-rent-7-1/.gitignore:
--------------------------------------------------------------------------------
1 | .gradle
2 | .studio
3 | *.ipr
4 | *.iml
5 | *.iws
6 | build/*
7 | deploy/*
8 | modules/*/build/*
9 | .idea/*
10 | out
11 | test-run
--------------------------------------------------------------------------------
/sample-car-rent-7-1/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/sample-car-rent-7-1/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/sample-car-rent-7-1/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/sample-car-rent-7-1/modules/core/src/com/company/scr/spring.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/sample-car-rent-7-1/modules/global/src/com/company/scr/entity/constraints/messages.properties:
--------------------------------------------------------------------------------
1 | Car.ReliabilityPolicyCompliant.constraintViolationMessage = Adding cars that are both older than 10 years and have mileage greater than 100 000 is prohibited
2 | Car.PurchasedAfterManufactured.constraintViolationMessage = Purchase date cannot precede manufacture date
3 |
--------------------------------------------------------------------------------
/sample-car-rent-7-1/modules/global/src/com/company/scr/entity/constraints/messages_ru.properties:
--------------------------------------------------------------------------------
1 | Car.ReliabilityPolicyCompliant.constraintViolationMessage = Нельзя добавить автомобиль, выпущенный более 10 лет назад, если он имеет пробег свыше 100 000
2 | Car.PurchasedAfterManufactured.constraintViolationMessage = Дата покупки не может предшествовать дате изготовления
3 |
--------------------------------------------------------------------------------
/sample-car-rent-7-1/modules/global/src/com/company/scr/metadata.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/sample-car-rent-7-1/modules/web/src/com/company/scr/web-dispatcher-spring.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
--------------------------------------------------------------------------------
/sample-car-rent-7-1/modules/web/src/com/company/scr/web-menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
--------------------------------------------------------------------------------
/sample-car-rent-7-1/modules/web/src/com/company/scr/web-permissions.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/sample-car-rent-7-1/modules/web/src/com/company/scr/web-screens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/sample-car-rent-7-1/modules/web/src/com/company/scr/web-spring.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/sample-car-rent-7-1/modules/web/src/com/company/scr/web/messages.properties:
--------------------------------------------------------------------------------
1 |
2 | application.caption = CUBA Application
3 | application.logoLabel = CUBA Application
4 | application.logoImage = branding/app-icon-menu.png
5 | application.welcomeText = Welcome to CUBA Application!
6 |
7 | loginWindow.caption = CUBA Login
8 | loginWindow.welcomeLabel = Welcome to CUBA!
9 | loginWindow.logoImage = branding/app-icon-login.png
10 |
11 | menu-config.application-scr = Application
12 | menu-config.scr$Car.browse=Cars
13 | menu-config.scr$FavoriteCar.browse=Favorite Cars
14 | menu-config.scr$Garage.browse=Garages
15 |
--------------------------------------------------------------------------------
/sample-car-rent-7-1/modules/web/src/com/company/scr/web/screens/car/CarBrowse.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.car;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.Car;
5 |
6 | @UiController("scr$Car.browse")
7 | @UiDescriptor("car-browse.xml")
8 | @LookupComponent("carsTable")
9 | @LoadDataBeforeShow
10 | public class CarBrowse extends StandardLookup {
11 | }
--------------------------------------------------------------------------------
/sample-car-rent-7-1/modules/web/src/com/company/scr/web/screens/car/CarEdit.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.car;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.Car;
5 |
6 | @UiController("scr$Car.edit")
7 | @UiDescriptor("car-edit.xml")
8 | @EditedEntityContainer("carDc")
9 | @LoadDataBeforeShow
10 | public class CarEdit extends StandardEditor {
11 | }
--------------------------------------------------------------------------------
/sample-car-rent-7-1/modules/web/src/com/company/scr/web/screens/car/messages.properties:
--------------------------------------------------------------------------------
1 | browseCaption=Car browser
2 | editorCaption=Car editor
--------------------------------------------------------------------------------
/sample-car-rent-7-1/modules/web/src/com/company/scr/web/screens/favoritecar/FavoriteCarBrowse.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.favoritecar;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.FavoriteCar;
5 |
6 | @UiController("scr$FavoriteCar.browse")
7 | @UiDescriptor("favorite-car-browse.xml")
8 | @LookupComponent("favoriteCarsTable")
9 | @LoadDataBeforeShow
10 | public class FavoriteCarBrowse extends StandardLookup {
11 | }
--------------------------------------------------------------------------------
/sample-car-rent-7-1/modules/web/src/com/company/scr/web/screens/favoritecar/FavoriteCarEdit.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.favoritecar;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.FavoriteCar;
5 |
6 | @UiController("scr$FavoriteCar.edit")
7 | @UiDescriptor("favorite-car-edit.xml")
8 | @EditedEntityContainer("favoriteCarDc")
9 | @LoadDataBeforeShow
10 | public class FavoriteCarEdit extends StandardEditor {
11 | }
--------------------------------------------------------------------------------
/sample-car-rent-7-1/modules/web/src/com/company/scr/web/screens/favoritecar/messages.properties:
--------------------------------------------------------------------------------
1 | browseCaption=FavoriteCar browser
2 | editorCaption=FavoriteCar editor
--------------------------------------------------------------------------------
/sample-car-rent-7-1/modules/web/src/com/company/scr/web/screens/garage/GarageBrowse.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.garage;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.Garage;
5 |
6 | @UiController("scr$Garage.browse")
7 | @UiDescriptor("garage-browse.xml")
8 | @LookupComponent("garagesTable")
9 | @LoadDataBeforeShow
10 | public class GarageBrowse extends StandardLookup {
11 | }
--------------------------------------------------------------------------------
/sample-car-rent-7-1/modules/web/src/com/company/scr/web/screens/garage/GarageEdit.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.garage;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.Garage;
5 |
6 | @UiController("scr$Garage.edit")
7 | @UiDescriptor("garage-edit.xml")
8 | @EditedEntityContainer("garageDc")
9 | @LoadDataBeforeShow
10 | public class GarageEdit extends StandardEditor {
11 | }
--------------------------------------------------------------------------------
/sample-car-rent-7-1/modules/web/src/com/company/scr/web/screens/garage/messages.properties:
--------------------------------------------------------------------------------
1 | browseCaption=Garage browser
2 | editorCaption=Garage editor
--------------------------------------------------------------------------------
/sample-car-rent-7-1/modules/web/web/META-INF/context.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/sample-car-rent-7-1/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'sample-car-rent-7-1'
2 | def modulePrefix = 'app'
3 | include(":${modulePrefix}-global", ":${modulePrefix}-core", ":${modulePrefix}-web")
4 | project(":${modulePrefix}-global").projectDir = new File(settingsDir, 'modules/global')
5 | project(":${modulePrefix}-core").projectDir = new File(settingsDir, 'modules/core')
6 | project(":${modulePrefix}-web").projectDir = new File(settingsDir, 'modules/web')
--------------------------------------------------------------------------------
/sample-car-rent/.gitignore:
--------------------------------------------------------------------------------
1 | .gradle
2 | .studio
3 | *.ipr
4 | *.iml
5 | *.iws
6 | build/*
7 | deploy/*
8 | modules/*/build/*
9 | out
10 | test-run
11 | .idea
12 |
--------------------------------------------------------------------------------
/sample-car-rent/README.md:
--------------------------------------------------------------------------------
1 | # CUBA Sample Project - Car Rent
2 | Sample CUBA project with non trivial model, which used as base for tests in
3 | [@cuba-platform/front-generator](https://github.com/cuba-platform/frontend).
4 |
5 | ## Data
6 | ### Users
7 | admin/admin
8 | mechanic/1
9 | manager/2
10 |
11 | ## Development
12 | ### Create Init Script With Data Already Added in App
13 | * Export data from table
14 | ```bash
15 | sudo -u postgres pg_dump --table= --data-only --column-inserts scr
16 | ```
17 | * Paste generated script to [30.create-db.sql](modules/core/db/init/hsql/30.create-db.sql)
18 | * Script will be executed when database will be created next time
--------------------------------------------------------------------------------
/sample-car-rent/extra.gradle:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/sample-car-rent/extra.gradle
--------------------------------------------------------------------------------
/sample-car-rent/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/sample-car-rent/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/sample-car-rent/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jan 18 16:49:24 SAMT 2019
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
7 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/core/src/com/company/scr/core/FakeDataGenerator.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.core;
2 |
3 | import com.haulmont.chile.core.model.MetaClass;
4 |
5 | /**
6 | * @author minaev
7 | * @version $Id$
8 | */
9 | public interface FakeDataGenerator {
10 |
11 | String NAME = "FakeDataGenerator";
12 |
13 | void generate(MetaClass metaClass, int amount);
14 |
15 | void cleanup();
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/core/src/com/company/scr/core/FakeDataGeneratorMBean.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.core;
2 |
3 | import org.springframework.jmx.export.annotation.ManagedOperation;
4 | import org.springframework.jmx.export.annotation.ManagedResource;
5 |
6 | /**
7 | * @author minaev
8 | * @version $Id$
9 | */
10 | @ManagedResource(description = "Generates fake data")
11 | public interface FakeDataGeneratorMBean {
12 |
13 | @ManagedOperation
14 | String generate(String entityName, int amount);
15 |
16 | @ManagedOperation
17 | String cleanup();
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/global/src/com/company/scr/entity/constraints/messages.properties:
--------------------------------------------------------------------------------
1 | Car.ReliabilityPolicyCompliant.constraintViolationMessage = Adding cars that are both older than 10 years and have mileage greater than 100 000 is prohibited
2 | Car.PurchasedAfterManufactured.constraintViolationMessage = Purchase date cannot precede manufacture date
3 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/global/src/com/company/scr/entity/constraints/messages_ru.properties:
--------------------------------------------------------------------------------
1 | Car.ReliabilityPolicyCompliant.constraintViolationMessage = Нельзя добавить автомобиль, выпущенный более 10 лет назад, если он имеет пробег свыше 100 000
2 | Car.PurchasedAfterManufactured.constraintViolationMessage = Дата покупки не может предшествовать дате изготовления
3 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/global/src/com/company/scr/metadata.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/gui/src/com/company/scr/gui/messages.properties:
--------------------------------------------------------------------------------
1 |
2 | application.caption = CUBA Application
3 | application.logoImage = branding/app-icon-menu.png
4 |
5 | loginWindow.caption = CUBA Login
6 | loginWindow.welcomeLabel = Welcome to CUBA!
7 | loginWindow.logoImage = branding/app-icon-login.png
8 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/gui/src/com/company/scr/screens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/portal/src/com/company/scr/portal/command/LoginUserCommand.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.portal.command;
2 |
3 |
4 | @SuppressWarnings({"UnusedDeclaration"})
5 | public class LoginUserCommand {
6 |
7 | private String login;
8 |
9 | private String password;
10 |
11 | public String getLogin() {
12 | return login;
13 | }
14 |
15 | public void setLogin(String login) {
16 | this.login = login;
17 | }
18 |
19 | public String getPassword() {
20 | return password;
21 | }
22 |
23 | public void setPassword(String password) {
24 | this.password = password;
25 | }
26 | }
--------------------------------------------------------------------------------
/sample-car-rent/modules/portal/src/com/company/scr/portal/messages.properties:
--------------------------------------------------------------------------------
1 | page.head = Head sample
--------------------------------------------------------------------------------
/sample-car-rent/modules/portal/web/META-INF/context.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/portal/web/WEB-INF/templates/error/404.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Not found
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | 404
13 |
14 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/portal/web/WEB-INF/templates/error/500.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Not found
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | 500
13 |
14 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/portal/web/WEB-INF/templates/maintain.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Under construction
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | Sorry, resource is unavailable
13 |
14 | Please, try again after 20 min
15 |
16 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/portal/web/resources/css/common.css:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/portal/web/resources/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/sample-car-rent/modules/portal/web/resources/favicon.ico
--------------------------------------------------------------------------------
/sample-car-rent/modules/readme.md:
--------------------------------------------------------------------------------
1 | `master` branch should not contain `polymer-client` module
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web-dispatcher-spring.xml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web-permissions.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/ScrApp.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web;
2 |
3 | import com.haulmont.cuba.web.DefaultApp;
4 | import org.jetbrains.annotations.NotNull;
5 |
6 | public class ScrApp extends DefaultApp {
7 |
8 | @Override @NotNull
9 | protected String routeTopLevelWindowId() {
10 | return "mainWindow";
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/car/CarBrowse.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.car;
2 |
3 | import com.haulmont.cuba.gui.components.AbstractLookup;
4 |
5 | public class CarBrowse extends AbstractLookup {
6 | }
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/car/CarEdit.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.car;
2 |
3 | import com.haulmont.cuba.gui.components.AbstractEditor;
4 | import com.company.scr.entity.Car;
5 |
6 | public class CarEdit extends AbstractEditor {
7 | }
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/car/messages.properties:
--------------------------------------------------------------------------------
1 | browseCaption = Car browser
2 | editCaption = Car editor
3 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/carrent/messages.properties:
--------------------------------------------------------------------------------
1 | caption = Car Rents
2 | browseCaption = CarRent browser
3 | mainTab = Main
4 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/favoritecar/messages.properties:
--------------------------------------------------------------------------------
1 | caption = Favorite Cars
2 | browseCaption = FavoriteCar browser
3 | mainTab = Main
4 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/garage/GarageBrowse.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.garage;
2 |
3 | import com.haulmont.cuba.gui.components.AbstractLookup;
4 |
5 | public class GarageBrowse extends AbstractLookup {
6 | }
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/garage/GarageEdit.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.garage;
2 |
3 | import com.haulmont.cuba.gui.components.AbstractEditor;
4 | import com.company.scr.entity.Garage;
5 |
6 | public class GarageEdit extends AbstractEditor {
7 | }
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/garage/messages.properties:
--------------------------------------------------------------------------------
1 | browseCaption = Garage browser
2 | editCaption = Garage editor
3 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/messages_ru.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/sample-car-rent/modules/web/src/com/company/scr/web/messages_ru.properties
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/associationm2mtestentity/AssociationM2MTestEntityBrowse.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.associationm2mtestentity;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.test.AssociationM2MTestEntity;
5 |
6 | @UiController("scr_AssociationM2MTestEntity.browse")
7 | @UiDescriptor("association-m2m-test-entity-browse.xml")
8 | @LookupComponent("associationM2MTestEntitiesTable")
9 | @LoadDataBeforeShow
10 | public class AssociationM2MTestEntityBrowse extends StandardLookup {
11 | }
12 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/associationm2mtestentity/AssociationM2MTestEntityEdit.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.associationm2mtestentity;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.test.AssociationM2MTestEntity;
5 |
6 | @UiController("scr_AssociationM2MTestEntity.edit")
7 | @UiDescriptor("association-m2m-test-entity-edit.xml")
8 | @EditedEntityContainer("associationM2MTestEntityDc")
9 | @LoadDataBeforeShow
10 | public class AssociationM2MTestEntityEdit extends StandardEditor {
11 | }
12 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/associationm2mtestentity/messages.properties:
--------------------------------------------------------------------------------
1 | browseCaption=AssociationM2MTestEntity browser
2 | editorCaption=AssociationM2MTestEntity editor
3 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/associationm2mtestentity/messages_ru.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/sample-car-rent/modules/web/src/com/company/scr/web/screens/associationm2mtestentity/messages_ru.properties
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/associationm2otestentity/AssociationM2OTestEntityBrowse.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.associationm2otestentity;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.test.AssociationM2OTestEntity;
5 |
6 | @UiController("scr_AssociationM2OTestEntity.browse")
7 | @UiDescriptor("association-m2o-test-entity-browse.xml")
8 | @LookupComponent("associationM2OTestEntitiesTable")
9 | @LoadDataBeforeShow
10 | public class AssociationM2OTestEntityBrowse extends StandardLookup {
11 | }
12 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/associationm2otestentity/AssociationM2OTestEntityEdit.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.associationm2otestentity;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.test.AssociationM2OTestEntity;
5 |
6 | @UiController("scr_AssociationM2OTestEntity.edit")
7 | @UiDescriptor("association-m2o-test-entity-edit.xml")
8 | @EditedEntityContainer("associationM2OTestEntityDc")
9 | @LoadDataBeforeShow
10 | public class AssociationM2OTestEntityEdit extends StandardEditor {
11 | }
12 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/associationm2otestentity/messages.properties:
--------------------------------------------------------------------------------
1 | browseCaption=AssociationM2OTestEntity browser
2 | editorCaption=AssociationM2OTestEntity editor
3 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/associationm2otestentity/messages_ru.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/sample-car-rent/modules/web/src/com/company/scr/web/screens/associationm2otestentity/messages_ru.properties
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/associationo2mtestentity/AssociationO2MTestEntityBrowse.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.associationo2mtestentity;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.test.AssociationO2MTestEntity;
5 |
6 | @UiController("scr_AssociationO2MTestEntity.browse")
7 | @UiDescriptor("association-o2m-test-entity-browse.xml")
8 | @LookupComponent("associationO2MTestEntitiesTable")
9 | @LoadDataBeforeShow
10 | public class AssociationO2MTestEntityBrowse extends StandardLookup {
11 | }
12 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/associationo2mtestentity/AssociationO2MTestEntityEdit.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.associationo2mtestentity;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.test.AssociationO2MTestEntity;
5 |
6 | @UiController("scr_AssociationO2MTestEntity.edit")
7 | @UiDescriptor("association-o2m-test-entity-edit.xml")
8 | @EditedEntityContainer("associationO2MTestEntityDc")
9 | @LoadDataBeforeShow
10 | public class AssociationO2MTestEntityEdit extends StandardEditor {
11 | }
12 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/associationo2mtestentity/messages.properties:
--------------------------------------------------------------------------------
1 | browseCaption=AssociationO2MTestEntity browser
2 | editorCaption=AssociationO2MTestEntity editor
3 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/associationo2mtestentity/messages_ru.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/sample-car-rent/modules/web/src/com/company/scr/web/screens/associationo2mtestentity/messages_ru.properties
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/associationo2otestentity/AssociationO2OTestEntityBrowse.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.associationo2otestentity;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.test.AssociationO2OTestEntity;
5 |
6 | @UiController("scr_AssociationO2OTestEntity.browse")
7 | @UiDescriptor("association-o2o-test-entity-browse.xml")
8 | @LookupComponent("associationO2OTestEntitiesTable")
9 | @LoadDataBeforeShow
10 | public class AssociationO2OTestEntityBrowse extends StandardLookup {
11 | }
12 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/associationo2otestentity/AssociationO2OTestEntityEdit.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.associationo2otestentity;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.test.AssociationO2OTestEntity;
5 |
6 | @UiController("scr_AssociationO2OTestEntity.edit")
7 | @UiDescriptor("association-o2o-test-entity-edit.xml")
8 | @EditedEntityContainer("associationO2OTestEntityDc")
9 | @LoadDataBeforeShow
10 | public class AssociationO2OTestEntityEdit extends StandardEditor {
11 | }
12 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/associationo2otestentity/messages.properties:
--------------------------------------------------------------------------------
1 | browseCaption=AssociationO2OTestEntity browser
2 | editorCaption=AssociationO2OTestEntity editor
3 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/associationo2otestentity/messages_ru.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/sample-car-rent/modules/web/src/com/company/scr/web/screens/associationo2otestentity/messages_ru.properties
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/compositekeyentity/CompositeKeyEntityBrowse.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.compositekeyentity;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.test.CompositeKeyEntity;
5 |
6 | @UiController("scr_CompositeKeyEntity.browse")
7 | @UiDescriptor("composite-key-entity-browse.xml")
8 | @LookupComponent("compositeKeyEntitiesTable")
9 | @LoadDataBeforeShow
10 | public class CompositeKeyEntityBrowse extends StandardLookup {
11 | }
12 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/compositekeyentity/CompositeKeyEntityEdit.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.compositekeyentity;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.test.CompositeKeyEntity;
5 |
6 | @UiController("scr_CompositeKeyEntity.edit")
7 | @UiDescriptor("composite-key-entity-edit.xml")
8 | @EditedEntityContainer("compositeKeyEntityDc")
9 | @LoadDataBeforeShow
10 | public class CompositeKeyEntityEdit extends StandardEditor {
11 | }
12 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/compositiono2mtestentity/CompositionO2MTestEntityBrowse.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.compositiono2mtestentity;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.test.CompositionO2MTestEntity;
5 |
6 | @UiController("scr_CompositionO2MTestEntity.browse")
7 | @UiDescriptor("composition-o2m-test-entity-browse.xml")
8 | @LookupComponent("compositionO2MTestEntitiesTable")
9 | @LoadDataBeforeShow
10 | public class CompositionO2MTestEntityBrowse extends StandardLookup {
11 | }
12 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/compositiono2mtestentity/CompositionO2MTestEntityEdit.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.compositiono2mtestentity;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.test.CompositionO2MTestEntity;
5 |
6 | @UiController("scr_CompositionO2MTestEntity.edit")
7 | @UiDescriptor("composition-o2m-test-entity-edit.xml")
8 | @EditedEntityContainer("compositionO2MTestEntityDc")
9 | @LoadDataBeforeShow
10 | public class CompositionO2MTestEntityEdit extends StandardEditor {
11 | }
12 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/compositiono2mtestentity/messages.properties:
--------------------------------------------------------------------------------
1 | browseCaption=CompositionO2MTestEntity browser
2 | editorCaption=CompositionO2MTestEntity editor
3 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/compositiono2mtestentity/messages_ru.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/sample-car-rent/modules/web/src/com/company/scr/web/screens/compositiono2mtestentity/messages_ru.properties
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/compositiono2otestentity/CompositionO2OTestEntityBrowse.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.compositiono2otestentity;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.test.CompositionO2OTestEntity;
5 |
6 | @UiController("scr_CompositionO2OTestEntity.browse")
7 | @UiDescriptor("composition-o2o-test-entity-browse.xml")
8 | @LookupComponent("compositionO2OTestEntitiesTable")
9 | @LoadDataBeforeShow
10 | public class CompositionO2OTestEntityBrowse extends StandardLookup {
11 | }
12 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/compositiono2otestentity/CompositionO2OTestEntityEdit.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.compositiono2otestentity;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.test.CompositionO2OTestEntity;
5 |
6 | @UiController("scr_CompositionO2OTestEntity.edit")
7 | @UiDescriptor("composition-o2o-test-entity-edit.xml")
8 | @EditedEntityContainer("compositionO2OTestEntityDc")
9 | @LoadDataBeforeShow
10 | public class CompositionO2OTestEntityEdit extends StandardEditor {
11 | }
12 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/compositiono2otestentity/messages.properties:
--------------------------------------------------------------------------------
1 | browseCaption=CompositionO2OTestEntity browser
2 | editorCaption=CompositionO2OTestEntity editor
3 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/compositiono2otestentity/messages_ru.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/sample-car-rent/modules/web/src/com/company/scr/web/screens/compositiono2otestentity/messages_ru.properties
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/datatypestestentity/DatatypesTestEntityBrowse.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.datatypestestentity;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.test.DatatypesTestEntity;
5 |
6 | @UiController("scr_DatatypesTestEntity.browse")
7 | @UiDescriptor("datatypes-test-entity-browse.xml")
8 | @LookupComponent("datatypesTestEntitiesTable")
9 | @LoadDataBeforeShow
10 | public class DatatypesTestEntityBrowse extends StandardLookup {
11 | }
12 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/datatypestestentity/DatatypesTestEntityEdit.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.datatypestestentity;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.test.DatatypesTestEntity;
5 |
6 | @UiController("scr_DatatypesTestEntity.edit")
7 | @UiDescriptor("datatypes-test-entity-edit.xml")
8 | @EditedEntityContainer("datatypesTestEntityDc")
9 | @LoadDataBeforeShow
10 | public class DatatypesTestEntityEdit extends StandardEditor {
11 | }
12 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/datatypestestentity/messages.properties:
--------------------------------------------------------------------------------
1 | browseCaption=DatatypesTestEntity browser
2 | editorCaption=DatatypesTestEntity editor
3 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/datatypestestentity/messages_ru.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/sample-car-rent/modules/web/src/com/company/scr/web/screens/datatypestestentity/messages_ru.properties
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/datatypestestentity2/DatatypesTestEntity2Browse.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.datatypestestentity2;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.test.DatatypesTestEntity2;
5 |
6 | @UiController("scr_DatatypesTestEntity2.browse")
7 | @UiDescriptor("datatypes-test-entity2-browse.xml")
8 | @LookupComponent("datatypesTestEntity2sTable")
9 | @LoadDataBeforeShow
10 | public class DatatypesTestEntity2Browse extends StandardLookup {
11 | }
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/datatypestestentity2/DatatypesTestEntity2Edit.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.datatypestestentity2;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.test.DatatypesTestEntity2;
5 |
6 | @UiController("scr_DatatypesTestEntity2.edit")
7 | @UiDescriptor("datatypes-test-entity2-edit.xml")
8 | @EditedEntityContainer("datatypesTestEntity2Dc")
9 | @LoadDataBeforeShow
10 | public class DatatypesTestEntity2Edit extends StandardEditor {
11 | }
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/datatypestestentity2/messages.properties:
--------------------------------------------------------------------------------
1 | browseCaption=DatatypesTestEntity2 browser
2 | editorCaption=DatatypesTestEntity2 editor
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/datatypestestentity2/messages_ru.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/sample-car-rent/modules/web/src/com/company/scr/web/screens/datatypestestentity2/messages_ru.properties
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/datatypestestentity3/DatatypesTestEntity3Browse.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.datatypestestentity3;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.test.DatatypesTestEntity3;
5 |
6 | @UiController("scr_DatatypesTestEntity3.browse")
7 | @UiDescriptor("datatypes-test-entity3-browse.xml")
8 | @LookupComponent("datatypesTestEntity3sTable")
9 | @LoadDataBeforeShow
10 | public class DatatypesTestEntity3Browse extends StandardLookup {
11 | }
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/datatypestestentity3/DatatypesTestEntity3Edit.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.datatypestestentity3;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.test.DatatypesTestEntity3;
5 |
6 | @UiController("scr_DatatypesTestEntity3.edit")
7 | @UiDescriptor("datatypes-test-entity3-edit.xml")
8 | @EditedEntityContainer("datatypesTestEntity3Dc")
9 | @LoadDataBeforeShow
10 | public class DatatypesTestEntity3Edit extends StandardEditor {
11 | }
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/datatypestestentity3/messages.properties:
--------------------------------------------------------------------------------
1 | browseCaption=DatatypesTestEntity3 browser
2 | editorCaption=DatatypesTestEntity3 editor
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/datatypestestentity3/messages_ru.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/sample-car-rent/modules/web/src/com/company/scr/web/screens/datatypestestentity3/messages_ru.properties
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/deeplynestedtestentity/DeeplyNestedTestEntityBrowse.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.deeplynestedtestentity;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.test.DeeplyNestedTestEntity;
5 |
6 | @UiController("scr_DeeplyNestedTestEntity.browse")
7 | @UiDescriptor("deeply-nested-test-entity-browse.xml")
8 | @LookupComponent("deeplyNestedTestEntitiesTable")
9 | @LoadDataBeforeShow
10 | public class DeeplyNestedTestEntityBrowse extends StandardLookup {
11 | }
12 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/deeplynestedtestentity/DeeplyNestedTestEntityEdit.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.deeplynestedtestentity;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.test.DeeplyNestedTestEntity;
5 |
6 | @UiController("scr_DeeplyNestedTestEntity.edit")
7 | @UiDescriptor("deeply-nested-test-entity-edit.xml")
8 | @EditedEntityContainer("deeplyNestedTestEntityDc")
9 | @LoadDataBeforeShow
10 | public class DeeplyNestedTestEntityEdit extends StandardEditor {
11 | }
12 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/deeplynestedtestentity/messages.properties:
--------------------------------------------------------------------------------
1 | browseCaption=DeeplyNestedTestEntity browser
2 | editorCaption=DeeplyNestedTestEntity editor
3 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/deeplynestedtestentity/messages_ru.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/sample-car-rent/modules/web/src/com/company/scr/web/screens/deeplynestedtestentity/messages_ru.properties
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/sparepart/SparePartBrowse.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.sparepart;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.SparePart;
5 |
6 | @UiController("scr$SparePart.browse")
7 | @UiDescriptor("spare-part-browse.xml")
8 | @LookupComponent("sparePartsTable")
9 | @LoadDataBeforeShow
10 | public class SparePartBrowse extends StandardLookup {
11 | }
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/sparepart/SparePartEdit.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.sparepart;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.SparePart;
5 |
6 | @UiController("scr$SparePart.edit")
7 | @UiDescriptor("spare-part-edit.xml")
8 | @EditedEntityContainer("sparePartDc")
9 | @LoadDataBeforeShow
10 | public class SparePartEdit extends StandardEditor {
11 | }
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/sparepart/messages.properties:
--------------------------------------------------------------------------------
1 | browseCaption=SparePart browser
2 | editorCaption=SparePart editor
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/sparepart/messages_ru.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/sample-car-rent/modules/web/src/com/company/scr/web/screens/sparepart/messages_ru.properties
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/stringidtestentity/StringIdTestEntityBrowse.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.stringidtestentity;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.test.StringIdTestEntity;
5 |
6 | @UiController("scr_StringIdTestEntity.browse")
7 | @UiDescriptor("string-id-test-entity-browse.xml")
8 | @LookupComponent("stringIdTestEntitiesTable")
9 | @LoadDataBeforeShow
10 | public class StringIdTestEntityBrowse extends StandardLookup {
11 | }
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/stringidtestentity/StringIdTestEntityEdit.java:
--------------------------------------------------------------------------------
1 | package com.company.scr.web.screens.stringidtestentity;
2 |
3 | import com.haulmont.cuba.gui.screen.*;
4 | import com.company.scr.entity.test.StringIdTestEntity;
5 |
6 | @UiController("scr_StringIdTestEntity.edit")
7 | @UiDescriptor("string-id-test-entity-edit.xml")
8 | @EditedEntityContainer("stringIdTestEntityDc")
9 | @LoadDataBeforeShow
10 | public class StringIdTestEntityEdit extends StandardEditor {
11 | }
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/stringidtestentity/messages.properties:
--------------------------------------------------------------------------------
1 | stringIdTestEntityBrowse.caption=StringIdTestEntity browser
2 | stringIdTestEntityEdit.caption=StringIdTestEntity editor
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/screens/stringidtestentity/messages_ru.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/sample-car-rent/modules/web/src/com/company/scr/web/screens/stringidtestentity/messages_ru.properties
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/src/com/company/scr/web/technicalcertificate/messages.properties:
--------------------------------------------------------------------------------
1 | caption = Technical Certificates
2 | browseCaption = TechnicalCertificate browser
3 | mainTab = Main
4 |
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/themes/halo/branding/app-icon-login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/sample-car-rent/modules/web/themes/halo/branding/app-icon-login.png
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/themes/halo/branding/app-icon-menu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/sample-car-rent/modules/web/themes/halo/branding/app-icon-menu.png
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/themes/halo/com.company.scr/app-component.scss:
--------------------------------------------------------------------------------
1 | @import "halo-ext";
2 |
3 | @mixin com_company_scr {
4 | @include com_company_scr-halo-ext;
5 | }
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/themes/halo/com.company.scr/halo-ext-defaults.scss:
--------------------------------------------------------------------------------
1 | /* Override global theme constants or define new ones here */
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/themes/halo/com.company.scr/halo-ext.scss:
--------------------------------------------------------------------------------
1 | /* Define your theme modifications inside next mixin */
2 | @mixin com_company_scr-halo-ext {
3 |
4 | }
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/themes/halo/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cuba-platform/frontend/bbe4f3d5d944b20fd077341770401a0f6dddc8ce/sample-car-rent/modules/web/themes/halo/favicon.ico
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/themes/halo/styles.scss:
--------------------------------------------------------------------------------
1 | @import "halo-defaults";
2 | @import "com.company.scr/halo-ext-defaults";
3 | @import "app-components";
4 | @import "com.company.scr/halo-ext";
5 |
6 | .halo {
7 | // include auto-generated app components SCSS
8 | @include app_components;
9 |
10 | @include com_company_scr-halo-ext;
11 | }
--------------------------------------------------------------------------------
/sample-car-rent/modules/web/web/META-INF/context.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/sample-car-rent/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'sample-car-rent'
2 | def modulePrefix = 'app'
3 | include(":${modulePrefix}-global", ":${modulePrefix}-core", ":${modulePrefix}-gui", ":${modulePrefix}-web", ":${modulePrefix}-portal")
4 | project(":${modulePrefix}-global" ).projectDir = new File(settingsDir, 'modules/global')
5 | project(":${modulePrefix}-core" ).projectDir = new File(settingsDir, 'modules/core')
6 | project(":${modulePrefix}-gui" ).projectDir = new File(settingsDir, 'modules/gui')
7 | project(":${modulePrefix}-web" ).projectDir = new File(settingsDir, 'modules/web')
8 | project(":${modulePrefix}-portal").projectDir = new File(settingsDir, 'modules/portal')
9 |
--------------------------------------------------------------------------------
/sample-car-rent/studio-intellij.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/sample-car-rent/studio-settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
8 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/scripts/ci-bootstrap-backend.js:
--------------------------------------------------------------------------------
1 | const {runCmdSync} = require('./common');
2 |
3 | const ciBootstrapBackend = () => {
4 |
5 | const backendAppDir = process.argv.length > 2 ? process.argv[2] : `sample-car-rent`;
6 |
7 | runCmdSync(`psql -c "create user cuba with encrypted password 'cuba';" -U postgres`);
8 | runCmdSync(`psql -c "alter user cuba createdb;" -U postgres`);
9 | runCmdSync(`${backendAppDir}/gradlew -v`);
10 | runCmdSync(`${backendAppDir}/gradlew -p ${backendAppDir} setupTomcat createDb --no-daemon`);
11 | runCmdSync(`${backendAppDir}/gradlew -p ${backendAppDir} assemble deploy start waitAppStarted --no-daemon`);
12 | };
13 |
14 | ciBootstrapBackend();
15 |
--------------------------------------------------------------------------------
/scripts/generate-react-native-client-scr.js:
--------------------------------------------------------------------------------
1 | const gen = require('./generate-client-scr');
2 |
3 | gen(
4 | 'React Native client SCR',
5 | 'react-native-client-scr',
6 | 'scripts/model/projectModel-scr.json',
7 | [
8 | { command: 'react-native:app' }
9 | ]
10 | );
11 |
--------------------------------------------------------------------------------
/scripts/pack-given-client-libs.js:
--------------------------------------------------------------------------------
1 | const packClientLibs = require('./pack-client-libs');
2 |
3 | const libs = process.argv.slice(2);
4 |
5 | packClientLibs(libs, libs);
6 |
--------------------------------------------------------------------------------
/scripts/pack-react-client-libs.js:
--------------------------------------------------------------------------------
1 | const packClientLibs = require('./pack-client-libs');
2 |
3 | packClientLibs(
4 | [
5 | '@cuba-platform/front-generator',
6 | '@cuba-platform/rest',
7 | '@cuba-platform/react-core',
8 | '@cuba-platform/react-ui'
9 | ],
10 | [
11 | '@cuba-platform/rest',
12 | '@cuba-platform/react-core',
13 | '@cuba-platform/react-ui'
14 | ]
15 | );
16 |
17 |
--------------------------------------------------------------------------------
/scripts/pack-react-native-client-libs.js:
--------------------------------------------------------------------------------
1 | const packClientLibs = require('./pack-client-libs');
2 |
3 | packClientLibs(
4 | [
5 | '@cuba-platform/front-generator',
6 | '@cuba-platform/rest',
7 | '@cuba-platform/react-core'
8 | ],
9 | [
10 | '@cuba-platform/rest',
11 | '@cuba-platform/react-core'
12 | ]
13 | );
14 |
15 |
--------------------------------------------------------------------------------
/scripts/run-gradle.js:
--------------------------------------------------------------------------------
1 | const { runCmdSync, isWindows } = require("./common")
2 | const path = require('path');
3 |
4 | let [, , ...scriptArg] = process.argv;
5 | scriptArg = scriptArg.join(" ");
6 |
7 | const basePath = process.cwd();
8 | const scriptName = isWindows() ? 'gradlew.bat' : 'gradlew';
9 | const pathToScript = path.join(basePath, 'sample-car-rent', scriptName);
10 |
11 | const cmd = `${pathToScript} ${scriptArg}`;
12 | runCmdSync(`${cmd}`);
13 |
--------------------------------------------------------------------------------
/scripts/screens/boring-string-id-management-table.json:
--------------------------------------------------------------------------------
1 | {
2 | "editView": {
3 | "name": "_local",
4 | "entityName": "scr_BoringStringIdTestEntity"
5 | },
6 | "editComponentName": "BoringStringIdMgtTableEdit",
7 | "editIdAttrPos": 1,
8 | "listView": {
9 | "name": "_local",
10 | "entityName": "scr_BoringStringIdTestEntity"
11 | },
12 | "listComponentName": "BoringStringIdMgtTableBrowse",
13 | "listType": "table",
14 | "listShowIdAttr": true,
15 | "listIdAttrPos": 2,
16 | "entity": {
17 | "name": "scr_BoringStringIdTestEntity"
18 | },
19 | "managementComponentName": "boring-string-id-management-table"
20 | }
--------------------------------------------------------------------------------
/scripts/screens/composite-key-entity-management-cards.json:
--------------------------------------------------------------------------------
1 | {
2 | "editView": {
3 | "name": "_local",
4 | "entityName": "scr_CompositeKeyEntity"
5 | },
6 | "editComponentName": "CompositeKeyEntityCardsEdit",
7 | "listView": {
8 | "name": "_local",
9 | "entityName": "scr_CompositeKeyEntity"
10 | },
11 | "listComponentName": "CompositeKeyEntityCards",
12 | "listType": "cards",
13 | "entity": {
14 | "name": "scr_CompositeKeyEntity"
15 | },
16 | "managementComponentName": "CompositeKeyEntityManagement3"
17 | }
18 |
--------------------------------------------------------------------------------
/scripts/screens/composite-key-entity-management-list.json:
--------------------------------------------------------------------------------
1 | {
2 | "editView": {
3 | "name": "_local",
4 | "entityName": "scr_CompositeKeyEntity"
5 | },
6 | "editComponentName": "CompositeKeyEntityListEdit",
7 | "listView": {
8 | "name": "_local",
9 | "entityName": "scr_CompositeKeyEntity"
10 | },
11 | "listComponentName": "CompositeKeyEntityList",
12 | "listType": "list",
13 | "entity": {
14 | "name": "scr_CompositeKeyEntity"
15 | },
16 | "managementComponentName": "CompositeKeyEntityManagement2"
17 | }
18 |
--------------------------------------------------------------------------------
/scripts/screens/composite-key-entity-management-table.json:
--------------------------------------------------------------------------------
1 | {
2 | "editView": {
3 | "name": "_local",
4 | "entityName": "scr_CompositeKeyEntity"
5 | },
6 | "editComponentName": "CompositeKeyEntityTableEdit",
7 | "listView": {
8 | "name": "_local",
9 | "entityName": "scr_CompositeKeyEntity"
10 | },
11 | "listComponentName": "CompositeKeyEntityTable",
12 | "listType": "table",
13 | "entity": {
14 | "name": "scr_CompositeKeyEntity"
15 | },
16 | "managementComponentName": "CompositeKeyEntityManagement1"
17 | }
18 |
--------------------------------------------------------------------------------
/scripts/screens/hooks-management-list.json:
--------------------------------------------------------------------------------
1 | {
2 | "editView": {
3 | "name": "datatypesTestEntity-view",
4 | "entityName": "scr_DatatypesTestEntity"
5 | },
6 | "editComponentName": "HooksEMListEdit",
7 | "listView": {
8 | "name": "datatypesTestEntity-view",
9 | "entityName": "scr_DatatypesTestEntity"
10 | },
11 | "listComponentName": "HooksEMListBrowse",
12 | "listType": "list",
13 | "entity": {
14 | "name": "scr_DatatypesTestEntity"
15 | },
16 | "managementComponentName": "HooksEMListMgt",
17 | "nestedEntityInfo": {
18 | "compositionO2Oattr": "compositionO2OTestEntity-view",
19 | "compositionO2Mattr": "compositionO2MTestEntity-view"
20 | }
21 | }
--------------------------------------------------------------------------------
/scripts/screens/int-id-management-cards.json:
--------------------------------------------------------------------------------
1 | {
2 | "editView": {
3 | "name": "_local",
4 | "entityName": "scr_IntegerIdTestEntity"
5 | },
6 | "editComponentName": "IntIdMgtCardsEdit",
7 | "listView": {
8 | "name": "_local",
9 | "entityName": "scr_IntegerIdTestEntity"
10 | },
11 | "listComponentName": "IntIdMgtCardsBrowse",
12 | "listType": "cards",
13 | "entity": {
14 | "name": "scr_IntegerIdTestEntity"
15 | },
16 | "managementComponentName": "int-id-management-cards"
17 | }
--------------------------------------------------------------------------------
/scripts/screens/int-id-management-list.json:
--------------------------------------------------------------------------------
1 | {
2 | "editView": {
3 | "name": "_local",
4 | "entityName": "scr_IntegerIdTestEntity"
5 | },
6 | "editComponentName": "IntIdMgtListEdit",
7 | "listView": {
8 | "name": "_local",
9 | "entityName": "scr_IntegerIdTestEntity"
10 | },
11 | "listComponentName": "IntIdMgtListBrowse",
12 | "listType": "list",
13 | "entity": {
14 | "name": "scr_IntegerIdTestEntity"
15 | },
16 | "managementComponentName": "int-id-management-list"
17 | }
--------------------------------------------------------------------------------
/scripts/screens/int-id-management-table.json:
--------------------------------------------------------------------------------
1 | {
2 | "editView": {
3 | "name": "_local",
4 | "entityName": "scr_IntegerIdTestEntity"
5 | },
6 | "editComponentName": "IntIdMgtTableEdit",
7 | "listView": {
8 | "name": "_local",
9 | "entityName": "scr_IntegerIdTestEntity"
10 | },
11 | "listComponentName": "IntIdMgtTableBrowse",
12 | "listType": "table",
13 | "entity": {
14 | "name": "scr_IntegerIdTestEntity"
15 | },
16 | "managementComponentName": "int-id-management-table"
17 | }
--------------------------------------------------------------------------------
/scripts/screens/int-identity-id-cards.json:
--------------------------------------------------------------------------------
1 | {
2 | "entity": {
3 | "name": "scr_IntIdentityIdTestEntity"
4 | },
5 | "componentName": "IntIdentityIdCards",
6 | "entityView": {
7 | "name": "_local",
8 | "entityName": "scr_IntIdentityIdTestEntity"
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/scripts/screens/int-identity-id-management-cards.json:
--------------------------------------------------------------------------------
1 | {
2 | "editView": {
3 | "name": "_local",
4 | "entityName": "scr_IntIdentityIdTestEntity"
5 | },
6 | "editComponentName": "IntIdentityIdMgtCardsEdit",
7 | "listView": {
8 | "name": "_local",
9 | "entityName": "scr_IntIdentityIdTestEntity"
10 | },
11 | "listComponentName": "IntIdentityIdMgtCardsBrowse",
12 | "listType": "cards",
13 | "entity": {
14 | "name": "scr_IntIdentityIdTestEntity"
15 | },
16 | "managementComponentName": "int-identity-id-mgt-cards-management"
17 | }
--------------------------------------------------------------------------------
/scripts/screens/int-identity-id-management-list.json:
--------------------------------------------------------------------------------
1 | {
2 | "editView": {
3 | "name": "_local",
4 | "entityName": "scr_IntIdentityIdTestEntity"
5 | },
6 | "editComponentName": "IntIdentityIdMgtListEdit",
7 | "listView": {
8 | "name": "_local",
9 | "entityName": "scr_IntIdentityIdTestEntity"
10 | },
11 | "listComponentName": "IntIdentityIdMgtListBrowse",
12 | "listType": "list",
13 | "entity": {
14 | "name": "scr_IntIdentityIdTestEntity"
15 | },
16 | "managementComponentName": "int-identity-id-mgt-list-management"
17 | }
--------------------------------------------------------------------------------
/scripts/screens/int-identity-id-management-table.json:
--------------------------------------------------------------------------------
1 | {
2 | "editView": {
3 | "name": "_local",
4 | "entityName": "scr_IntIdentityIdTestEntity"
5 | },
6 | "editComponentName": "IntIdentityIdMgtTableEdit",
7 | "listView": {
8 | "name": "_local",
9 | "entityName": "scr_IntIdentityIdTestEntity"
10 | },
11 | "listComponentName": "IntIdentityIdMgtTableBrowse",
12 | "listType": "table",
13 | "entity": {
14 | "name": "scr_IntIdentityIdTestEntity"
15 | },
16 | "managementComponentName": "int-identity-id-mgt-table-management"
17 | }
--------------------------------------------------------------------------------
/scripts/screens/string-id-cards.json:
--------------------------------------------------------------------------------
1 | {
2 | "entity": {
3 | "name": "scr_StringIdTestEntity"
4 | },
5 | "componentName": "StringIdCards",
6 | "entityView": {
7 | "name": "_local",
8 | "entityName": "scr_StringIdTestEntity"
9 | },
10 | "listShowIdAttr": true,
11 | "listIdAttrPos": 1
12 | }
13 |
--------------------------------------------------------------------------------
/scripts/screens/string-id-management-cards.json:
--------------------------------------------------------------------------------
1 | {
2 | "editView": {
3 | "name": "_local",
4 | "entityName": "scr_StringIdTestEntity"
5 | },
6 | "editComponentName": "StringIdMgtCardsEdit",
7 | "editIdAttrPos": 1,
8 | "listView": {
9 | "name": "_local",
10 | "entityName": "scr_StringIdTestEntity"
11 | },
12 | "listComponentName": "StringIdMgtCardsBrowse",
13 | "listType": "cards",
14 | "listShowIdAttr": true,
15 | "listIdAttrPos": 2,
16 | "entity": {
17 | "name": "scr_StringIdTestEntity"
18 | },
19 | "managementComponentName": "string-id-mgt-cards-management"
20 | }
--------------------------------------------------------------------------------
/scripts/screens/string-id-management-list.json:
--------------------------------------------------------------------------------
1 | {
2 | "editView": {
3 | "name": "_local",
4 | "entityName": "scr_StringIdTestEntity"
5 | },
6 | "editComponentName": "StringIdMgtListEdit",
7 | "editIdAttrPos": 1,
8 | "listView": {
9 | "name": "_local",
10 | "entityName": "scr_StringIdTestEntity"
11 | },
12 | "listComponentName": "StringIdMgtListBrowse",
13 | "listType": "list",
14 | "listShowIdAttr": true,
15 | "listIdAttrPos": 2,
16 | "entity": {
17 | "name": "scr_StringIdTestEntity"
18 | },
19 | "managementComponentName": "string-id-mgt-list-management"
20 | }
--------------------------------------------------------------------------------
/scripts/screens/string-id-management-table.json:
--------------------------------------------------------------------------------
1 | {
2 | "editView": {
3 | "name": "_local",
4 | "entityName": "scr_StringIdTestEntity"
5 | },
6 | "editComponentName": "StringIdMgtTableEdit",
7 | "editIdAttrPos": 1,
8 | "listView": {
9 | "name": "_local",
10 | "entityName": "scr_StringIdTestEntity"
11 | },
12 | "listComponentName": "StringIdMgtTableBrowse",
13 | "listType": "table",
14 | "listShowIdAttr": true,
15 | "listIdAttrPos": 2,
16 | "entity": {
17 | "name": "scr_StringIdTestEntity"
18 | },
19 | "managementComponentName": "string-id-mgt-table-management"
20 | }
--------------------------------------------------------------------------------
/scripts/screens/weird-string-id-management-cards.json:
--------------------------------------------------------------------------------
1 | {
2 | "editView": {
3 | "name": "_local",
4 | "entityName": "scr_WeirdStringIdTestEntity"
5 | },
6 | "editComponentName": "WeirdStringIdMgtCardsEdit",
7 | "editIdAttrPos": 1,
8 | "listView": {
9 | "name": "_local",
10 | "entityName": "scr_WeirdStringIdTestEntity"
11 | },
12 | "listComponentName": "WeirdStringIdMgtCardsBrowse",
13 | "listType": "cards",
14 | "listShowIdAttr": true,
15 | "listIdAttrPos": 2,
16 | "entity": {
17 | "name": "scr_WeirdStringIdTestEntity"
18 | },
19 | "managementComponentName": "weird-string-id-mgt-cards-management"
20 | }
--------------------------------------------------------------------------------
/scripts/screens/weird-string-id-management-list.json:
--------------------------------------------------------------------------------
1 | {
2 | "editView": {
3 | "name": "_local",
4 | "entityName": "scr_WeirdStringIdTestEntity"
5 | },
6 | "editComponentName": "WeirdStringIdMgtListEdit",
7 | "editIdAttrPos": 1,
8 | "listView": {
9 | "name": "_local",
10 | "entityName": "scr_WeirdStringIdTestEntity"
11 | },
12 | "listComponentName": "WeirdStringIdMgtListBrowse",
13 | "listType": "list",
14 | "listShowIdAttr": true,
15 | "listIdAttrPos": 2,
16 | "entity": {
17 | "name": "scr_WeirdStringIdTestEntity"
18 | },
19 | "managementComponentName": "weird-string-id-mgt-list-management"
20 | }
--------------------------------------------------------------------------------
/scripts/screens/weird-string-id-management-table.json:
--------------------------------------------------------------------------------
1 | {
2 | "editView": {
3 | "name": "_local",
4 | "entityName": "scr_WeirdStringIdTestEntity"
5 | },
6 | "editComponentName": "WeirdStringIdMgtTableEdit",
7 | "editIdAttrPos": 1,
8 | "listView": {
9 | "name": "_local",
10 | "entityName": "scr_WeirdStringIdTestEntity"
11 | },
12 | "listComponentName": "WeirdStringIdMgtTableBrowse",
13 | "listType": "table",
14 | "listShowIdAttr": true,
15 | "listIdAttrPos": 2,
16 | "entity": {
17 | "name": "scr_WeirdStringIdTestEntity"
18 | },
19 | "managementComponentName": "weird-string-id-mgt-table-management"
20 | }
--------------------------------------------------------------------------------
/scripts/update-given-client-libs.js:
--------------------------------------------------------------------------------
1 | const updateClientLibs = require('./update-client-libs');
2 |
3 | const args = process.argv.slice(2);
4 | const clientDir = args[0];
5 | const libs = args.slice(1);
6 |
7 | updateClientLibs(clientDir, libs, true);
8 |
--------------------------------------------------------------------------------
/scripts/update-react-client-libs.js:
--------------------------------------------------------------------------------
1 | const updateClientLibs = require('./update-client-libs');
2 |
3 | updateClientLibs(
4 | 'react-client-scr',
5 | ['rest', 'react-core', 'react-ui']
6 | );
--------------------------------------------------------------------------------
/scripts/update-react-native-client-libs.js:
--------------------------------------------------------------------------------
1 | const updateClientLibs = require('./update-client-libs');
2 |
3 | updateClientLibs(
4 | 'react-native-client-scr',
5 | ['rest', 'react-core']
6 | );
--------------------------------------------------------------------------------
/test-pup/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: [
3 | '@babel/plugin-proposal-class-properties'
4 | ]
5 | }
--------------------------------------------------------------------------------
/test-pup/common/paging.js:
--------------------------------------------------------------------------------
1 |
2 | exports.checkPaging = (rowSelector) => async (page, url, [cardsCount, buttonTitles]) => {
3 | await page.goto(`http://localhost:3000/#/${url}`);
4 | await page.reload();
5 | await page.waitFor(rowSelector);
6 | await page.waitFor('ul.ant-pagination li');
7 |
8 | const carCards = await page.$$(rowSelector);
9 | if (cardsCount != null) expect(carCards.length).toEqual(cardsCount);
10 |
11 | const pagingButtonCaptions = await page
12 | .$$eval('ul.ant-pagination li', els => els.map(el => el.getAttribute('title')));
13 | expect(pagingButtonCaptions).toEqual(buttonTitles);
14 | };
15 |
--------------------------------------------------------------------------------
/test-pup/jest.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | verbose: true,
3 | preset: "jest-puppeteer",
4 | testTimeout: 10000
5 | };
6 |
--------------------------------------------------------------------------------
/test-pup/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "test-puppeteer",
3 | "private": true,
4 | "scripts": {
5 | "test": "jest"
6 | },
7 | "devDependencies": {
8 | "@babel/plugin-proposal-class-properties": "^7.8.3",
9 | "@types/jest": "^25.1.3",
10 | "jest": "^24.9.0",
11 | "jest-puppeteer": "^4.3.0",
12 | "puppeteer": "^2.0.0"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/test-pup/react-client-scr/data-table/data-table-custom-filter/data-table-no-filters.test.js:
--------------------------------------------------------------------------------
1 | const FilterActions = require('./FilterActions');
2 |
3 | // TODO https://github.com/cuba-platform/frontend/issues/284
4 | xdescribe('DataTable - no filters', () => {
5 | let fa = new FilterActions();
6 | beforeAll(fa.beforeAll);
7 | beforeEach(fa.beforeEach);
8 | afterAll(fa.afterAll);
9 |
10 | it('No filters applied', async () => {
11 | await fa.expectResults(0, ['0', '-8273729824.34', '9131354156.12', '']);
12 | });
13 |
14 | });
--------------------------------------------------------------------------------
/travis/push-client-builds.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | REPO_URL=https://${GH_TOKEN}@github.com/cuba-labs/frontend-scr-builds.git
4 | BRANCH=master
5 |
6 | echo "Cloning frontend-scr-builds"
7 | git clone $REPO_URL --branch=$BRANCH > /dev/null 2>&1
8 | cd frontend-scr-builds || exit
9 | git remote set-url origin $REPO_URL > /dev/null 2>&1
10 |
11 | echo "Copying the built clients"
12 | cp -r ../react-client-scr .
13 | cp -r ../react-native-client-scr .
14 |
15 | echo "Committing"
16 | git config user.name "Travis CI"
17 | git config user.email "<>"
18 | git add -A
19 | git commit -m "Build $TRAVIS_BUILD_NUMBER"
20 |
21 | echo "Pushing"
22 | git push --quiet --set-upstream origin $BRANCH
--------------------------------------------------------------------------------