├── .editorconfig
├── .gitignore
├── .mvn
└── wrapper
│ ├── maven-wrapper.jar
│ └── maven-wrapper.properties
├── LICENSE
├── README.md
├── go.bat
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
└── main
├── config
└── header.txt
├── java
└── ch
│ └── rasc
│ └── extdirectspring
│ └── demo
│ ├── DemoUtil.java
│ ├── FeedCache.java
│ ├── Main.java
│ ├── Poll.java
│ ├── SimpleCORSFilter.java
│ ├── SseController.java
│ ├── TestAction.java
│ ├── are
│ ├── AreService.java
│ ├── Company.java
│ └── History.java
│ ├── bancha
│ ├── Article.java
│ ├── ArticleService.java
│ ├── Book.java
│ ├── BookService.java
│ ├── User.java
│ └── UserService.java
│ ├── bigdata
│ ├── Employee.java
│ ├── EmployeeDb.java
│ └── EmployeeService.java
│ ├── book
│ ├── Book.java
│ └── ExtJsBookService.java
│ ├── calendar
│ ├── Calendar.java
│ ├── CalendarService.java
│ ├── Event.java
│ └── EventDb.java
│ ├── carstore
│ ├── CarData.java
│ ├── CarService.java
│ └── Quality.java
│ ├── chart
│ ├── AreaData.java
│ ├── ChartService.java
│ ├── DynamicDataProvider.java
│ ├── ReportService.java
│ ├── SeasonData.java
│ └── SiteInfo.java
│ ├── execdashboard
│ ├── ExecDashboardService.java
│ ├── Kpi.java
│ ├── News.java
│ ├── StockHistoryData.java
│ └── StockOHLC.java
│ ├── exp
│ ├── Author.java
│ ├── Book.java
│ └── ExpService.java
│ ├── feed
│ ├── Feed.java
│ ├── FeedItem.java
│ └── FeedService.java
│ ├── filter
│ ├── Company.java
│ ├── CompanyDataBean.java
│ ├── FilterActionImplementation.java
│ ├── FilterActionInterface.java
│ ├── SizeEnum.java
│ └── SizeSerializer.java
│ ├── filterbar
│ ├── Company.java
│ ├── CompanyService.java
│ ├── CompanyStoreReadResult.java
│ └── IdText.java
│ ├── form
│ ├── BasicInfo.java
│ └── Profile.java
│ ├── grid
│ ├── Company.java
│ └── TurnoverService.java
│ ├── group
│ ├── GroupAction.java
│ ├── Summary.java
│ └── Task.java
│ ├── infographic
│ ├── InfographicService.java
│ └── Unemployment.java
│ ├── named
│ ├── Business.java
│ └── NamedService.java
│ ├── pivot
│ ├── Economy.java
│ ├── PivotDataBean.java
│ ├── PivotService.java
│ ├── Sale.java
│ └── SalesAction.java
│ ├── sch
│ ├── BbcService.java
│ ├── Car.java
│ ├── CarService.java
│ ├── Event.java
│ └── Resource.java
│ ├── session
│ ├── Customer.java
│ ├── Order.java
│ └── SessionService.java
│ ├── simple
│ └── SimpleMethodProvider.java
│ ├── simpleapp
│ ├── ModelController.java
│ ├── SimpleUserDb.java
│ ├── User.java
│ └── UserService.java
│ ├── simpletask
│ ├── ListItem.java
│ ├── ListService.java
│ ├── SimpleTaskService.java
│ └── Task.java
│ ├── spreadsheet
│ ├── MonthlySales.java
│ └── SpreadsheetService.java
│ ├── store
│ ├── DeliveryTime.java
│ ├── DeliveryTimeService.java
│ ├── ForumPost.java
│ ├── LabelValue.java
│ ├── LabelValueSerializer.java
│ ├── Person.java
│ ├── Person4Action.java
│ ├── PersonAction.java
│ ├── PersonFullName.java
│ ├── PersonFullNameCity.java
│ ├── RandomDataBean.java
│ ├── Restaurant.java
│ ├── RestaurantService.java
│ └── State.java
│ ├── task
│ ├── JsonViews.java
│ ├── Priority.java
│ ├── Task.java
│ └── TaskService.java
│ ├── todo
│ ├── TodoItem.java
│ ├── TodoService.java
│ ├── TodoServiceExt.java
│ └── UserInfo.java
│ ├── touch
│ ├── BlogService.java
│ ├── CarouselPicture.java
│ ├── CarouselService.java
│ ├── Contact.java
│ ├── ContactService.java
│ ├── Note.java
│ ├── NotesDb.java
│ ├── NotesService.java
│ ├── PictureResizer.java
│ ├── Post.java
│ ├── President.java
│ ├── PresidentsService.java
│ ├── ProfileService.java
│ ├── TouchTestAction.java
│ └── Turnover.java
│ ├── touchgrid
│ ├── Friend.java
│ ├── FriendDb.java
│ ├── FriendService.java
│ ├── GridContact.java
│ ├── GridContactDb.java
│ └── GridContactService.java
│ ├── tree
│ └── TreeProvider.java
│ ├── upload
│ └── UploadController.java
│ └── util
│ ├── Constants.java
│ ├── DMYLocalDateDeserializer.java
│ ├── DMYLocalDateSerializer.java
│ ├── ISO8601LocalDateDeserializer.java
│ ├── ISO8601LocalDateSerializer.java
│ ├── ISO8601LocalDateTimeDeserializer.java
│ ├── ISO8601LocalDateTimeSerializer.java
│ ├── ISO8601ZonedDateTimeDeserializer.java
│ ├── ISO8601ZonedDateTimeSerializer.java
│ ├── LocalDateYYSerializer.java
│ ├── MDYLocalDateSerializer.java
│ ├── PropertyComparator.java
│ ├── PropertyComparatorFactory.java
│ ├── YMDLocalDateDeserializer.java
│ └── YMDLocalDateSerializer.java
├── resources
├── contacts.json
├── countries.csv
├── employees.json
├── fetcher.properties
├── friends.json
├── kpi.json
├── news.json
├── pivodata.csv
├── randomdata.csv
├── static
│ ├── deft-debug.js
│ ├── eventsource.min.js
│ ├── examples.css
│ ├── extjs3
│ │ ├── combobox.html
│ │ ├── combobox.js
│ │ ├── direct.html
│ │ ├── direct.js
│ │ ├── dynamic.html
│ │ ├── dynamic.js
│ │ ├── form.html
│ │ ├── form.js
│ │ ├── grid.html
│ │ ├── grid.js
│ │ ├── gridfilter.html
│ │ ├── gridfilter.js
│ │ ├── grouping.html
│ │ ├── grouping.js
│ │ ├── highcharts
│ │ │ ├── Ext.ux.HighChart.js
│ │ │ ├── adapter-extjs.js
│ │ │ ├── excanvas.compiled.js
│ │ │ └── highcharts.js
│ │ ├── hybrid.html
│ │ ├── hybrid.js
│ │ ├── metadata.html
│ │ ├── metadata.js
│ │ ├── pie.html
│ │ ├── pie.js
│ │ ├── pivot.html
│ │ ├── pivot.js
│ │ ├── rowexpander.html
│ │ ├── rowexpander.js
│ │ ├── simple.html
│ │ ├── simple.js
│ │ ├── total.html
│ │ ├── total.js
│ │ ├── tree.html
│ │ ├── tree.js
│ │ ├── upload.html
│ │ └── upload.js
│ ├── extjs42
│ │ ├── area.html
│ │ ├── area.js
│ │ ├── associationrowexpander
│ │ │ ├── Ux
│ │ │ │ └── grid
│ │ │ │ │ └── plugin
│ │ │ │ │ └── AssociationRowExpander.js
│ │ │ ├── are.js
│ │ │ ├── index.html
│ │ │ └── loading.gif
│ │ ├── banchascaffold
│ │ │ ├── bancha-scaffold-production.js
│ │ │ ├── img
│ │ │ │ └── icons
│ │ │ │ │ ├── add.png
│ │ │ │ │ ├── arrow_undo.png
│ │ │ │ │ ├── delete.png
│ │ │ │ │ ├── disk.png
│ │ │ │ │ ├── image_add.png
│ │ │ │ │ └── user_edit.png
│ │ │ ├── index.html
│ │ │ ├── models.js
│ │ │ └── samples.js
│ │ ├── bigdata
│ │ │ ├── BigDataStore.js
│ │ │ ├── BigDataView.js
│ │ │ ├── Employee.js
│ │ │ └── index.html
│ │ ├── calendar
│ │ │ ├── cal
│ │ │ │ ├── DirectCalendarStore.js
│ │ │ │ └── DirectEventStore.js
│ │ │ └── index.html
│ │ ├── carstore
│ │ │ ├── app.js
│ │ │ ├── app
│ │ │ │ ├── controller
│ │ │ │ │ └── CarListingsViewController.js
│ │ │ │ ├── model
│ │ │ │ │ ├── CarChart.js
│ │ │ │ │ └── CarData.js
│ │ │ │ ├── store
│ │ │ │ │ ├── CarChart.js
│ │ │ │ │ └── CarData.js
│ │ │ │ └── view
│ │ │ │ │ └── CarListings.js
│ │ │ ├── data
│ │ │ │ ├── 2004_Porsche_911_Carrera_type_997.jpg
│ │ │ │ ├── 250px-2007_Audi_TT_Coupe.jpg
│ │ │ │ ├── 250px-Audi_S5.jpg
│ │ │ │ ├── 250px-BMW_M3_E92.jpg
│ │ │ │ └── 250px-Nissan_GT-R.jpg
│ │ │ └── index.html
│ │ ├── combobox.html
│ │ ├── combobox.js
│ │ ├── direct.html
│ │ ├── direct.js
│ │ ├── exp.html
│ │ ├── form.html
│ │ ├── form.js
│ │ ├── grid.html
│ │ ├── grid.js
│ │ ├── gridfilter.html
│ │ ├── gridfilter.js
│ │ ├── gridxfilterrow
│ │ │ ├── array-grid.html
│ │ │ ├── array-grid.js
│ │ │ ├── filter-row-icon.png
│ │ │ ├── group-header-grid.html
│ │ │ ├── group-header-grid.js
│ │ │ ├── locking-grid.html
│ │ │ ├── locking-grid.js
│ │ │ ├── styles.css
│ │ │ └── xFilterRow.js
│ │ ├── grouping.html
│ │ ├── grouping.js
│ │ ├── infinite-scroll.html
│ │ ├── infinite-scroll.js
│ │ ├── live.html
│ │ ├── live.js
│ │ ├── metadata.html
│ │ ├── metadata.js
│ │ ├── named-arguments.html
│ │ ├── named-arguments.js
│ │ ├── rowedit.html
│ │ ├── rowedit.js
│ │ ├── roweditpaging.html
│ │ ├── roweditpaging.js
│ │ ├── sch
│ │ │ ├── bbc.css
│ │ │ ├── bbc.html
│ │ │ ├── bbc.js
│ │ │ ├── charting.css
│ │ │ ├── charting.html
│ │ │ └── charting.js
│ │ ├── simple
│ │ │ ├── app.js
│ │ │ ├── app
│ │ │ │ ├── controller
│ │ │ │ │ └── Users.js
│ │ │ │ ├── store
│ │ │ │ │ └── Users.js
│ │ │ │ └── view
│ │ │ │ │ ├── Viewport.js
│ │ │ │ │ └── user
│ │ │ │ │ ├── Edit.js
│ │ │ │ │ └── List.js
│ │ │ ├── css
│ │ │ │ ├── add.png
│ │ │ │ ├── app.css
│ │ │ │ ├── delete.png
│ │ │ │ └── information.png
│ │ │ └── index.html
│ │ ├── tree.html
│ │ ├── tree.js
│ │ ├── upload.html
│ │ └── upload.js
│ ├── extjs5
│ │ ├── area.html
│ │ ├── area.js
│ │ ├── association
│ │ │ ├── Company.js
│ │ │ ├── CustomerGrid.js
│ │ │ ├── History.js
│ │ │ └── index.html
│ │ ├── banchascaffold
│ │ │ ├── bancha-scaffold-production.js
│ │ │ ├── img
│ │ │ │ └── icons
│ │ │ │ │ ├── add.png
│ │ │ │ │ ├── arrow_undo.png
│ │ │ │ │ ├── delete.png
│ │ │ │ │ ├── disk.png
│ │ │ │ │ ├── image_add.png
│ │ │ │ │ └── user_edit.png
│ │ │ ├── index.html
│ │ │ ├── models.js
│ │ │ └── samples.js
│ │ ├── bigdata
│ │ │ ├── BigDataController.js
│ │ │ ├── BigDataStore.js
│ │ │ ├── BigDataView.js
│ │ │ ├── Employee.js
│ │ │ ├── images.jpg
│ │ │ └── index.html
│ │ ├── calendar
│ │ │ ├── AbstractCalendarOverride.js
│ │ │ ├── DirectCalendarStore.js
│ │ │ ├── DirectEventStore.js
│ │ │ ├── app.js
│ │ │ └── index.html
│ │ ├── carstore
│ │ │ ├── app.js
│ │ │ ├── app
│ │ │ │ ├── model
│ │ │ │ │ └── CarModel.js
│ │ │ │ └── view
│ │ │ │ │ ├── CarController.js
│ │ │ │ │ ├── CarListings.js
│ │ │ │ │ └── CarModel.js
│ │ │ ├── data
│ │ │ │ ├── 2004_Porsche_911_Carrera_type_997.jpg
│ │ │ │ ├── 250px-2007_Audi_TT_Coupe.jpg
│ │ │ │ ├── 250px-Audi_S5.jpg
│ │ │ │ ├── 250px-BMW_M3_E92.jpg
│ │ │ │ └── 250px-Nissan_GT-R.jpg
│ │ │ └── index.html
│ │ ├── combobox.html
│ │ ├── combobox.js
│ │ ├── direct.html
│ │ ├── direct.js
│ │ ├── executive-dashboard
│ │ │ ├── app.js
│ │ │ ├── app
│ │ │ │ ├── Application.js
│ │ │ │ ├── model
│ │ │ │ │ ├── Base.js
│ │ │ │ │ ├── FullProfitloss.js
│ │ │ │ │ ├── Kpi.js
│ │ │ │ │ ├── News.js
│ │ │ │ │ └── StockOHLC.js
│ │ │ │ ├── ux
│ │ │ │ │ └── plugin
│ │ │ │ │ │ └── RowExpander.js
│ │ │ │ └── view
│ │ │ │ │ ├── companynews
│ │ │ │ │ ├── News.js
│ │ │ │ │ ├── NewsController.js
│ │ │ │ │ └── NewsModel.js
│ │ │ │ │ ├── kpi
│ │ │ │ │ ├── Kpi.js
│ │ │ │ │ ├── KpiController.js
│ │ │ │ │ └── KpiModel.js
│ │ │ │ │ ├── main
│ │ │ │ │ ├── Main.js
│ │ │ │ │ ├── MainController.js
│ │ │ │ │ └── MainModel.js
│ │ │ │ │ ├── profitloss
│ │ │ │ │ ├── ProfitLoss.js
│ │ │ │ │ ├── ProfitLossController.js
│ │ │ │ │ └── ProfitLossModel.js
│ │ │ │ │ └── quarterly
│ │ │ │ │ ├── Quarterly.js
│ │ │ │ │ ├── QuarterlyController.js
│ │ │ │ │ └── QuarterlyModel.js
│ │ │ └── index.html
│ │ ├── feed
│ │ │ ├── app.js
│ │ │ ├── app
│ │ │ │ ├── model
│ │ │ │ │ ├── Feed.js
│ │ │ │ │ └── FeedItem.js
│ │ │ │ └── view
│ │ │ │ │ ├── FeedController.js
│ │ │ │ │ ├── FeedItem.js
│ │ │ │ │ ├── FeedItems.js
│ │ │ │ │ ├── FeedItemsController.js
│ │ │ │ │ ├── FeedModel.js
│ │ │ │ │ ├── FeedPanel.js
│ │ │ │ │ ├── FeedTabPanel.js
│ │ │ │ │ ├── FeedWindow.js
│ │ │ │ │ └── Viewport.js
│ │ │ ├── feed.css
│ │ │ ├── images
│ │ │ │ ├── article.gif
│ │ │ │ ├── article.png
│ │ │ │ ├── details.gif
│ │ │ │ ├── details.png
│ │ │ │ ├── post.gif
│ │ │ │ ├── post.png
│ │ │ │ ├── post_go.gif
│ │ │ │ ├── post_go.png
│ │ │ │ ├── preview-bottom.gif
│ │ │ │ ├── preview-bottom.png
│ │ │ │ ├── preview-hide.gif
│ │ │ │ ├── preview-hide.png
│ │ │ │ ├── preview-right.gif
│ │ │ │ ├── preview-right.png
│ │ │ │ ├── rss.gif
│ │ │ │ ├── rss.png
│ │ │ │ ├── rss_add.gif
│ │ │ │ ├── rss_add.png
│ │ │ │ ├── rss_delete.gif
│ │ │ │ ├── rss_delete.png
│ │ │ │ ├── rss_load.gif
│ │ │ │ ├── rss_load.png
│ │ │ │ ├── tab_new.gif
│ │ │ │ ├── tab_new.png
│ │ │ │ ├── tabs.gif
│ │ │ │ └── tabs.png
│ │ │ └── index.html
│ │ ├── form.html
│ │ ├── form.js
│ │ ├── grid.html
│ │ ├── grid.js
│ │ ├── gridfilter.html
│ │ ├── gridfilter.js
│ │ ├── grouping.html
│ │ ├── grouping.js
│ │ ├── infinite-scroll.html
│ │ ├── infinite-scroll.js
│ │ ├── live.html
│ │ ├── live.js
│ │ ├── metadata.html
│ │ ├── metadata.js
│ │ ├── named-arguments.html
│ │ ├── named-arguments.js
│ │ ├── rowedit.html
│ │ ├── rowedit.js
│ │ ├── roweditpaging.html
│ │ ├── roweditpaging.js
│ │ ├── sch
│ │ │ ├── bbc.css
│ │ │ ├── bbc.html
│ │ │ ├── bbc.js
│ │ │ ├── charting.css
│ │ │ ├── charting.html
│ │ │ └── charting.js
│ │ ├── session
│ │ │ ├── ChildSession.js
│ │ │ ├── ChildSessionController.js
│ │ │ ├── ChildSessionForm.js
│ │ │ ├── ChildSessionModel.js
│ │ │ ├── Customer.js
│ │ │ ├── Order.js
│ │ │ ├── PhoneNumber.js
│ │ │ └── index.html
│ │ ├── simple-task
│ │ │ ├── app.js
│ │ │ ├── app
│ │ │ │ ├── Application.js
│ │ │ │ ├── controller
│ │ │ │ │ ├── Lists.js
│ │ │ │ │ └── Tasks.js
│ │ │ │ ├── model
│ │ │ │ │ ├── List.js
│ │ │ │ │ └── Task.js
│ │ │ │ ├── store
│ │ │ │ │ ├── Lists.js
│ │ │ │ │ └── Tasks.js
│ │ │ │ ├── ux
│ │ │ │ │ ├── DragDrop.js
│ │ │ │ │ ├── DropZone.js
│ │ │ │ │ ├── ReminderColumn.js
│ │ │ │ │ └── StatusColumn.js
│ │ │ │ └── view
│ │ │ │ │ ├── Toolbar.js
│ │ │ │ │ ├── Viewport.js
│ │ │ │ │ ├── lists
│ │ │ │ │ ├── ContextMenu.js
│ │ │ │ │ └── Tree.js
│ │ │ │ │ └── tasks
│ │ │ │ │ ├── ContextMenu.js
│ │ │ │ │ ├── DefaultTimeWindow.js
│ │ │ │ │ ├── EditWindow.js
│ │ │ │ │ ├── Form.js
│ │ │ │ │ ├── Grid.js
│ │ │ │ │ └── ReminderWindow.js
│ │ │ └── index.html
│ │ ├── simple
│ │ │ ├── app.js
│ │ │ ├── app
│ │ │ │ ├── Application.js
│ │ │ │ └── view
│ │ │ │ │ └── user
│ │ │ │ │ ├── Edit.js
│ │ │ │ │ ├── List.js
│ │ │ │ │ ├── UserController.js
│ │ │ │ │ └── UserModel.js
│ │ │ ├── css
│ │ │ │ ├── add.png
│ │ │ │ ├── app.css
│ │ │ │ ├── delete.png
│ │ │ │ └── information.png
│ │ │ └── index.html
│ │ ├── spreadsheet
│ │ │ ├── MonthlySales.js
│ │ │ ├── Spreadsheet.js
│ │ │ ├── SpreadsheetController.js
│ │ │ ├── SpreadsheetModel.js
│ │ │ └── index.html
│ │ ├── task
│ │ │ ├── app.js
│ │ │ ├── app
│ │ │ │ ├── Application.js
│ │ │ │ ├── model
│ │ │ │ │ └── Task.js
│ │ │ │ └── view
│ │ │ │ │ ├── TaskController.js
│ │ │ │ │ ├── TaskForm.js
│ │ │ │ │ ├── TaskModel.js
│ │ │ │ │ └── Viewport.js
│ │ │ ├── index.html
│ │ │ └── resources
│ │ │ │ ├── images
│ │ │ │ ├── HIGH.png
│ │ │ │ ├── LOW.png
│ │ │ │ ├── NORMAL.png
│ │ │ │ ├── add.png
│ │ │ │ ├── delete.png
│ │ │ │ └── edit.png
│ │ │ │ └── styles
│ │ │ │ └── app.css
│ │ ├── todo
│ │ │ ├── app.js
│ │ │ ├── app
│ │ │ │ ├── Application.js
│ │ │ │ ├── controller
│ │ │ │ │ └── Main.js
│ │ │ │ ├── model
│ │ │ │ │ └── TodoItem.js
│ │ │ │ ├── store
│ │ │ │ │ └── Tree.js
│ │ │ │ └── view
│ │ │ │ │ ├── Cookies.js
│ │ │ │ │ ├── FormActions.js
│ │ │ │ │ ├── FormUpload.js
│ │ │ │ │ ├── MethodCall.js
│ │ │ │ │ ├── TreeActions.js
│ │ │ │ │ ├── Viewport.js
│ │ │ │ │ └── grid
│ │ │ │ │ ├── GridActions.js
│ │ │ │ │ ├── GridController.js
│ │ │ │ │ └── GridModel.js
│ │ │ ├── index.html
│ │ │ └── resources
│ │ │ │ └── assets
│ │ │ │ ├── arrow-circle-double-135.png
│ │ │ │ ├── information.png
│ │ │ │ ├── minus-circle.png
│ │ │ │ ├── pencil.png
│ │ │ │ └── plus-circle.png
│ │ ├── tree.html
│ │ ├── tree.js
│ │ ├── upload.html
│ │ └── upload.js
│ ├── extjs6classic
│ │ ├── area.html
│ │ ├── area.js
│ │ ├── association
│ │ │ ├── Company.js
│ │ │ ├── CustomerGrid.js
│ │ │ ├── History.js
│ │ │ └── index.html
│ │ ├── banchascaffold
│ │ │ ├── bancha-scaffold-production.js
│ │ │ ├── img
│ │ │ │ └── icons
│ │ │ │ │ ├── add.png
│ │ │ │ │ ├── arrow_undo.png
│ │ │ │ │ ├── delete.png
│ │ │ │ │ ├── disk.png
│ │ │ │ │ ├── image_add.png
│ │ │ │ │ └── user_edit.png
│ │ │ ├── index.html
│ │ │ ├── models.js
│ │ │ └── samples.js
│ │ ├── bigdata
│ │ │ ├── BigDataController.js
│ │ │ ├── BigDataStore.js
│ │ │ ├── BigDataView.js
│ │ │ ├── Employee.js
│ │ │ ├── images.jpg
│ │ │ └── index.html
│ │ ├── carstore
│ │ │ ├── app.js
│ │ │ ├── app
│ │ │ │ ├── model
│ │ │ │ │ └── CarModel.js
│ │ │ │ └── view
│ │ │ │ │ ├── CarController.js
│ │ │ │ │ ├── CarListings.js
│ │ │ │ │ └── CarModel.js
│ │ │ ├── data
│ │ │ │ ├── 2004_Porsche_911_Carrera_type_997.jpg
│ │ │ │ ├── 250px-2007_Audi_TT_Coupe.jpg
│ │ │ │ ├── 250px-Audi_S5.jpg
│ │ │ │ ├── 250px-BMW_M3_E92.jpg
│ │ │ │ └── 250px-Nissan_GT-R.jpg
│ │ │ └── index.html
│ │ ├── combobox.html
│ │ ├── combobox.js
│ │ ├── direct.html
│ │ ├── direct.js
│ │ ├── executive-dashboard
│ │ │ ├── app.js
│ │ │ ├── app
│ │ │ │ ├── Application.js
│ │ │ │ ├── model
│ │ │ │ │ ├── Base.js
│ │ │ │ │ ├── FullProfitloss.js
│ │ │ │ │ ├── Kpi.js
│ │ │ │ │ ├── News.js
│ │ │ │ │ └── StockOHLC.js
│ │ │ │ ├── ux
│ │ │ │ │ └── plugin
│ │ │ │ │ │ └── RowExpander.js
│ │ │ │ └── view
│ │ │ │ │ ├── companynews
│ │ │ │ │ ├── News.js
│ │ │ │ │ ├── NewsController.js
│ │ │ │ │ └── NewsModel.js
│ │ │ │ │ ├── kpi
│ │ │ │ │ ├── Kpi.js
│ │ │ │ │ ├── KpiController.js
│ │ │ │ │ └── KpiModel.js
│ │ │ │ │ ├── main
│ │ │ │ │ ├── Main.js
│ │ │ │ │ ├── MainController.js
│ │ │ │ │ └── MainModel.js
│ │ │ │ │ ├── profitloss
│ │ │ │ │ ├── ProfitLoss.js
│ │ │ │ │ ├── ProfitLossController.js
│ │ │ │ │ └── ProfitLossModel.js
│ │ │ │ │ └── quarterly
│ │ │ │ │ ├── Quarterly.js
│ │ │ │ │ ├── QuarterlyController.js
│ │ │ │ │ └── QuarterlyModel.js
│ │ │ └── index.html
│ │ ├── feed
│ │ │ ├── app.js
│ │ │ ├── app
│ │ │ │ ├── model
│ │ │ │ │ ├── Feed.js
│ │ │ │ │ └── FeedItem.js
│ │ │ │ └── view
│ │ │ │ │ ├── FeedController.js
│ │ │ │ │ ├── FeedItem.js
│ │ │ │ │ ├── FeedItems.js
│ │ │ │ │ ├── FeedItemsController.js
│ │ │ │ │ ├── FeedModel.js
│ │ │ │ │ ├── FeedPanel.js
│ │ │ │ │ ├── FeedTabPanel.js
│ │ │ │ │ ├── FeedWindow.js
│ │ │ │ │ └── Viewport.js
│ │ │ ├── feed.css
│ │ │ ├── images
│ │ │ │ ├── article.gif
│ │ │ │ ├── details.gif
│ │ │ │ ├── post.gif
│ │ │ │ ├── post_go.gif
│ │ │ │ ├── preview-bottom.gif
│ │ │ │ ├── preview-hide.gif
│ │ │ │ ├── preview-right.gif
│ │ │ │ ├── rss.gif
│ │ │ │ ├── rss_add.gif
│ │ │ │ ├── rss_delete.gif
│ │ │ │ ├── rss_load.gif
│ │ │ │ ├── tab_new.gif
│ │ │ │ └── tabs.gif
│ │ │ └── index.html
│ │ ├── form.html
│ │ ├── form.js
│ │ ├── grid.html
│ │ ├── grid.js
│ │ ├── gridfilter.html
│ │ ├── gridfilter.js
│ │ ├── grouping.html
│ │ ├── grouping.js
│ │ ├── infinite-scroll.html
│ │ ├── infinite-scroll.js
│ │ ├── infographic
│ │ │ ├── app.js
│ │ │ ├── index.html
│ │ │ ├── sencha.png
│ │ │ └── store.js
│ │ ├── live.html
│ │ ├── live.js
│ │ ├── metadata.html
│ │ ├── metadata.js
│ │ ├── named-arguments.html
│ │ ├── named-arguments.js
│ │ ├── rowedit.html
│ │ ├── rowedit.js
│ │ ├── roweditpaging.html
│ │ ├── roweditpaging.js
│ │ ├── sch
│ │ │ ├── bbc.css
│ │ │ ├── bbc.html
│ │ │ ├── bbc.js
│ │ │ ├── charting.css
│ │ │ ├── charting.html
│ │ │ └── charting.js
│ │ ├── session
│ │ │ ├── ChildSession.js
│ │ │ ├── ChildSessionController.js
│ │ │ ├── ChildSessionForm.js
│ │ │ ├── ChildSessionModel.js
│ │ │ ├── Customer.js
│ │ │ ├── Order.js
│ │ │ ├── PhoneNumber.js
│ │ │ └── index.html
│ │ ├── simple-task
│ │ │ ├── app.js
│ │ │ ├── app
│ │ │ │ ├── Application.js
│ │ │ │ ├── controller
│ │ │ │ │ ├── Lists.js
│ │ │ │ │ └── Tasks.js
│ │ │ │ ├── model
│ │ │ │ │ ├── List.js
│ │ │ │ │ └── Task.js
│ │ │ │ ├── store
│ │ │ │ │ ├── Lists.js
│ │ │ │ │ └── Tasks.js
│ │ │ │ ├── ux
│ │ │ │ │ ├── DragDrop.js
│ │ │ │ │ ├── DropZone.js
│ │ │ │ │ ├── ReminderColumn.js
│ │ │ │ │ └── StatusColumn.js
│ │ │ │ └── view
│ │ │ │ │ ├── Toolbar.js
│ │ │ │ │ ├── Viewport.js
│ │ │ │ │ ├── lists
│ │ │ │ │ ├── ContextMenu.js
│ │ │ │ │ └── Tree.js
│ │ │ │ │ └── tasks
│ │ │ │ │ ├── ContextMenu.js
│ │ │ │ │ ├── DefaultTimeWindow.js
│ │ │ │ │ ├── EditWindow.js
│ │ │ │ │ ├── Form.js
│ │ │ │ │ ├── Grid.js
│ │ │ │ │ └── ReminderWindow.js
│ │ │ └── index.html
│ │ ├── simple
│ │ │ ├── app.js
│ │ │ ├── app
│ │ │ │ ├── Application.js
│ │ │ │ └── view
│ │ │ │ │ └── user
│ │ │ │ │ ├── Edit.js
│ │ │ │ │ ├── List.js
│ │ │ │ │ ├── UserController.js
│ │ │ │ │ └── UserModel.js
│ │ │ ├── css
│ │ │ │ ├── add.png
│ │ │ │ ├── app.css
│ │ │ │ ├── delete.png
│ │ │ │ └── information.png
│ │ │ └── index.html
│ │ ├── spreadsheet
│ │ │ ├── MonthlySales.js
│ │ │ ├── Spreadsheet.js
│ │ │ ├── SpreadsheetController.js
│ │ │ ├── SpreadsheetModel.js
│ │ │ └── index.html
│ │ ├── task
│ │ │ ├── app.js
│ │ │ ├── app
│ │ │ │ ├── Application.js
│ │ │ │ ├── model
│ │ │ │ │ └── Task.js
│ │ │ │ └── view
│ │ │ │ │ ├── TaskController.js
│ │ │ │ │ ├── TaskForm.js
│ │ │ │ │ ├── TaskModel.js
│ │ │ │ │ └── Viewport.js
│ │ │ ├── index.html
│ │ │ └── resources
│ │ │ │ ├── images
│ │ │ │ ├── HIGH.png
│ │ │ │ ├── LOW.png
│ │ │ │ ├── NORMAL.png
│ │ │ │ ├── add.png
│ │ │ │ ├── delete.png
│ │ │ │ └── edit.png
│ │ │ │ └── styles
│ │ │ │ └── app.css
│ │ ├── todo
│ │ │ ├── app.js
│ │ │ ├── app
│ │ │ │ ├── Application.js
│ │ │ │ ├── controller
│ │ │ │ │ └── Main.js
│ │ │ │ ├── model
│ │ │ │ │ └── TodoItem.js
│ │ │ │ ├── store
│ │ │ │ │ └── Tree.js
│ │ │ │ └── view
│ │ │ │ │ ├── Cookies.js
│ │ │ │ │ ├── FormActions.js
│ │ │ │ │ ├── FormUpload.js
│ │ │ │ │ ├── MethodCall.js
│ │ │ │ │ ├── TreeActions.js
│ │ │ │ │ ├── Viewport.js
│ │ │ │ │ └── grid
│ │ │ │ │ ├── GridActions.js
│ │ │ │ │ ├── GridController.js
│ │ │ │ │ └── GridModel.js
│ │ │ ├── index.html
│ │ │ └── resources
│ │ │ │ └── assets
│ │ │ │ ├── arrow-circle-double-135.png
│ │ │ │ ├── information.png
│ │ │ │ ├── minus-circle.png
│ │ │ │ ├── pencil.png
│ │ │ │ └── plus-circle.png
│ │ ├── tree.html
│ │ ├── tree.js
│ │ ├── upload.html
│ │ └── upload.js
│ ├── extjs6modern
│ │ ├── blog
│ │ │ ├── README
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.html
│ │ ├── carousel
│ │ │ ├── README
│ │ │ ├── app.js
│ │ │ ├── app
│ │ │ │ ├── model
│ │ │ │ │ └── Picture.js
│ │ │ │ ├── store
│ │ │ │ │ └── Pictures.js
│ │ │ │ └── view
│ │ │ │ │ └── Picture.js
│ │ │ └── index.html
│ │ ├── direct
│ │ │ ├── direct.html
│ │ │ ├── direct.js
│ │ │ ├── form.html
│ │ │ ├── form.js
│ │ │ ├── named-arguments.html
│ │ │ ├── named-arguments.js
│ │ │ ├── store.html
│ │ │ └── store.js
│ │ ├── grid
│ │ │ ├── grid
│ │ │ │ ├── app.js
│ │ │ │ └── index.html
│ │ │ └── summarygrid
│ │ │ │ ├── app.js
│ │ │ │ └── index.html
│ │ ├── notes
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ ├── app
│ │ │ │ ├── Application.js
│ │ │ │ ├── controller
│ │ │ │ │ └── Notes.js
│ │ │ │ ├── model
│ │ │ │ │ └── Note.js
│ │ │ │ └── view
│ │ │ │ │ ├── Main.js
│ │ │ │ │ ├── NoteEditor.js
│ │ │ │ │ ├── NotesController.js
│ │ │ │ │ ├── NotesList.js
│ │ │ │ │ └── NotesModel.js
│ │ │ └── index.html
│ │ ├── president
│ │ │ ├── app.js
│ │ │ ├── app
│ │ │ │ ├── Application.js
│ │ │ │ ├── model
│ │ │ │ │ └── President.js
│ │ │ │ └── view
│ │ │ │ │ ├── Main.js
│ │ │ │ │ ├── MainController.js
│ │ │ │ │ ├── MainModel.js
│ │ │ │ │ └── PresidentDetail.js
│ │ │ └── index.html
│ │ └── todo
│ │ │ ├── README
│ │ │ ├── app.js
│ │ │ ├── app
│ │ │ ├── Application.js
│ │ │ ├── model
│ │ │ │ └── TodoItem.js
│ │ │ ├── store
│ │ │ │ └── Todo.js
│ │ │ └── view
│ │ │ │ └── Main.js
│ │ │ └── index.html
│ ├── index.html
│ ├── touch24
│ │ ├── blog
│ │ │ ├── README
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.html
│ │ ├── carousel
│ │ │ ├── README
│ │ │ ├── app.js
│ │ │ ├── app
│ │ │ │ ├── model
│ │ │ │ │ └── Picture.js
│ │ │ │ ├── store
│ │ │ │ │ └── Pictures.js
│ │ │ │ └── view
│ │ │ │ │ └── Picture.js
│ │ │ └── index.html
│ │ ├── direct
│ │ │ ├── direct.html
│ │ │ ├── direct.js
│ │ │ ├── form.html
│ │ │ ├── form.js
│ │ │ ├── named-arguments.html
│ │ │ ├── named-arguments.js
│ │ │ ├── store.html
│ │ │ └── store.js
│ │ ├── grid
│ │ │ ├── grid
│ │ │ │ ├── app.js
│ │ │ │ └── index.html
│ │ │ └── summarygrid
│ │ │ │ ├── app.js
│ │ │ │ └── index.html
│ │ ├── notes
│ │ │ ├── README
│ │ │ ├── app.js
│ │ │ ├── app.json
│ │ │ ├── app
│ │ │ │ ├── controller
│ │ │ │ │ └── Notes.js
│ │ │ │ ├── model
│ │ │ │ │ └── Note.js
│ │ │ │ ├── store
│ │ │ │ │ └── Notes.js
│ │ │ │ └── view
│ │ │ │ │ ├── NoteEditor.js
│ │ │ │ │ └── NotesList.js
│ │ │ ├── index.html
│ │ │ └── resources
│ │ │ │ ├── css
│ │ │ │ └── app.css
│ │ │ │ ├── icons
│ │ │ │ ├── Icon.png
│ │ │ │ ├── Icon@2x.png
│ │ │ │ ├── Icon~ipad.png
│ │ │ │ └── Icon~ipad@2x.png
│ │ │ │ └── loading
│ │ │ │ ├── Homescreen.jpg
│ │ │ │ └── Homescreen~ipad.jpg
│ │ ├── president
│ │ │ ├── app.js
│ │ │ ├── app
│ │ │ │ ├── controller
│ │ │ │ │ └── Main.js
│ │ │ │ ├── model
│ │ │ │ │ └── President.js
│ │ │ │ ├── store
│ │ │ │ │ └── Presidents.js
│ │ │ │ └── view
│ │ │ │ │ ├── Main.js
│ │ │ │ │ ├── PresidentDetail.js
│ │ │ │ │ └── PresidentList.js
│ │ │ └── index.html
│ │ └── todo
│ │ │ ├── README
│ │ │ ├── app.js
│ │ │ ├── app.json
│ │ │ ├── app
│ │ │ ├── model
│ │ │ │ └── TodoItem.js
│ │ │ ├── store
│ │ │ │ └── Todo.js
│ │ │ └── view
│ │ │ │ └── Main.js
│ │ │ ├── index.html
│ │ │ └── resources
│ │ │ ├── css
│ │ │ └── app.css
│ │ │ ├── icons
│ │ │ ├── Icon.png
│ │ │ ├── Icon@2x.png
│ │ │ ├── Icon_Android36.png
│ │ │ ├── Icon_Android48.png
│ │ │ ├── Icon~ipad.png
│ │ │ ├── Icon~ipad@2x.png
│ │ │ ├── iTunesArtwork.png
│ │ │ └── icon-spot~ipad.png
│ │ │ └── loading
│ │ │ ├── Default-Landscape@2x~ipad.png
│ │ │ ├── Default-LandscapeLeft~ipad.png
│ │ │ ├── Default-LandscapeRight~ipad.png
│ │ │ ├── Default-Landscape~ipad.png
│ │ │ ├── Default-Portrait@2x~ipad.png
│ │ │ ├── Default-PortraitUpsideDown~ipad.png
│ │ │ ├── Default-Portrait~ipad.png
│ │ │ ├── Default.png
│ │ │ ├── Default@2x.png
│ │ │ └── Default~ipad.png
│ └── ux-validations.js
├── stock_aapl.csv
├── stock_googl.csv
├── stock_msft.csv
└── users.csv
└── webapp
└── WEB-INF
└── glassfish-web.xml
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*.{adoc,bat,groovy,html,java,js,jsp,kt,kts,md,properties,py,rb,sh,sql,svg,txt,xml,xsd}]
4 | charset = utf-8
5 |
6 | [*.{groovy,java,kt,kts,xml,xsd}]
7 | indent_style = tab
8 | indent_size = 4
9 | continuation_indent_size = 8
10 | end_of_line = lf
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /target
2 | /.git
3 | /.settings
4 | /.project
5 | /.classpath
6 | /.externalToolBuilders
7 | /.factorypath
8 |
--------------------------------------------------------------------------------
/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Sample applications for [ExtDirectSpring](https://github.com/ralscha/extdirectspring)
2 |
3 |
4 |
--------------------------------------------------------------------------------
/go.bat:
--------------------------------------------------------------------------------
1 | @REM
2 | @REM Copyright the original author or authors.
3 | @REM
4 | @REM Licensed under the Apache License, Version 2.0 (the "License");
5 | @REM you may not use this file except in compliance with the License.
6 | @REM You may obtain a copy of the License at
7 | @REM
8 | @REM http://www.apache.org/licenses/LICENSE-2.0
9 | @REM
10 | @REM Unless required by applicable law or agreed to in writing, software
11 | @REM distributed under the License is distributed on an "AS IS" BASIS,
12 | @REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | @REM See the License for the specific language governing permissions and
14 | @REM limitations under the License.
15 | @REM
16 |
17 | mvn spring-boot:run
--------------------------------------------------------------------------------
/src/main/config/header.txt:
--------------------------------------------------------------------------------
1 | Copyright the original author or authors.
2 |
3 | Licensed under the Apache License, Version 2.0 (the "License");
4 | you may not use this file except in compliance with the License.
5 | You may obtain a copy of the License at
6 |
7 | http://www.apache.org/licenses/LICENSE-2.0
8 |
9 | Unless required by applicable law or agreed to in writing, software
10 | distributed under the License is distributed on an "AS IS" BASIS,
11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | See the License for the specific language governing permissions and
13 | limitations under the License.
--------------------------------------------------------------------------------
/src/main/java/ch/rasc/extdirectspring/demo/store/LabelValue.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package ch.rasc.extdirectspring.demo.store;
17 |
18 | public interface LabelValue {
19 | public String getLabel();
20 |
21 | public String getValue();
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/ch/rasc/extdirectspring/demo/task/JsonViews.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package ch.rasc.extdirectspring.demo.task;
17 |
18 | public abstract class JsonViews {
19 |
20 | static final class NO_DETAIL {
21 | // nothing here
22 | }
23 |
24 | static final class ALL {
25 | // nothing here
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/ch/rasc/extdirectspring/demo/task/Priority.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package ch.rasc.extdirectspring.demo.task;
17 |
18 | public enum Priority {
19 | HIGH, NORMAL, LOW
20 | }
21 |
--------------------------------------------------------------------------------
/src/main/resources/fetcher.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/fetcher.properties
--------------------------------------------------------------------------------
/src/main/resources/static/extjs3/combobox.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ext Direct Combobox with DirectStore
6 |
7 |
8 |
9 |
10 |
11 |
14 |
15 |
16 |
17 |
18 |
19 | Ext Direct Combobox with DirectStore
20 |
21 | Source code: combobox.js
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs3/form.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ext Direct Form Integration
6 |
7 |
8 |
9 |
10 |
11 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | Ext Direct Form Integration
21 | Source code: form.js
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs3/grid.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ext Direct GridPanel with DirectStore
6 |
7 |
8 |
9 |
10 |
11 |
14 |
15 |
16 |
17 |
18 |
19 | Ext Direct GridPanel with DirectStore
20 |
21 | Source code: grid.js
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs3/simple.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ext Direct Simple Examples
6 |
7 |
8 |
9 |
10 |
11 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | Ext Direct Simple Examples
21 |
22 | Source code: simple.js
23 |
24 |
25 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs3/tree.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ext Direct Remoting With Tree
6 |
7 |
8 |
9 |
10 |
11 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | Ext Direct Remoting With Tree
22 |
23 | Source code: tree.js
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs3/tree.js:
--------------------------------------------------------------------------------
1 | Ext.onReady(function() {
2 | Ext.Direct.addProvider(Ext.app.REMOTING_API);
3 |
4 | myTreeLoader = new Ext.tree.TreeLoader( {
5 | directFn: treeProvider.getTree,
6 | //paramOrder: ['node','foo'],
7 | nodeParameter: 'id',
8 | paramsAsHash: true,
9 | baseAttrs : {
10 | foo: 'empty'
11 | }
12 | });
13 |
14 | var tree = new Ext.tree.TreePanel( {
15 | width: 400,
16 | height: 400,
17 | autoScroll: true,
18 | renderTo: document.body,
19 | root: {
20 | id: 'root',
21 | text: 'Root'
22 | },
23 | loader: myTreeLoader,
24 | fbar: [ {
25 | text: 'Reload root',
26 | handler: function() {
27 | tree.getRootNode().reload();
28 | }
29 | } ]
30 | });
31 |
32 |
33 | myTreeLoader.on("beforeload", function(treeLoader, node) {
34 | treeLoader.baseParams.foo = new Date();
35 | }, this);
36 |
37 | });
38 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/area.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Area Chart
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | Area Chart Sample
15 |
16 | Source code: area.js
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/associationrowexpander/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs42/associationrowexpander/loading.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/banchascaffold/img/icons/add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs42/banchascaffold/img/icons/add.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/banchascaffold/img/icons/arrow_undo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs42/banchascaffold/img/icons/arrow_undo.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/banchascaffold/img/icons/delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs42/banchascaffold/img/icons/delete.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/banchascaffold/img/icons/disk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs42/banchascaffold/img/icons/disk.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/banchascaffold/img/icons/image_add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs42/banchascaffold/img/icons/image_add.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/banchascaffold/img/icons/user_edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs42/banchascaffold/img/icons/user_edit.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/bigdata/BigDataStore.js:
--------------------------------------------------------------------------------
1 | Ext.define('BigDataStore', {
2 | extend: 'Ext.data.Store',
3 | storeId: 'BigDataStore',
4 | model: 'Employee',
5 |
6 | groupField: 'department',
7 |
8 | proxy: {
9 | type: 'direct',
10 | api: {
11 | read: 'employeeService.read',
12 | update: 'employeeService.update'
13 | },
14 | },
15 |
16 | autoLoad: true,
17 | autoSync : true
18 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/calendar/cal/DirectCalendarStore.js:
--------------------------------------------------------------------------------
1 | Ext.define('Cal.DirectCalendarStore', {
2 | extend: 'Ext.data.Store',
3 | model: 'Extensible.calendar.data.CalendarModel',
4 | autoLoad: true,
5 | proxy: {
6 | type: 'direct',
7 | directFn: calendarService.readCalendars
8 | }
9 |
10 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/calendar/cal/DirectEventStore.js:
--------------------------------------------------------------------------------
1 | Ext.define('Cal.DirectEventStore', {
2 | extend: 'Ext.data.Store',
3 | model: 'Extensible.calendar.data.EventModel',
4 | deferLoad: true,
5 |
6 | proxy: {
7 | type: 'direct',
8 | api: {
9 | read: calendarService.read,
10 | create: calendarService.create,
11 | update: calendarService.update,
12 | destroy: calendarService.destroy
13 | }
14 | }
15 |
16 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/carstore/app.js:
--------------------------------------------------------------------------------
1 | Ext.Loader.setConfig({
2 | enabled: true,
3 | paths: {
4 | 'carstore': 'app'
5 | }
6 | });
7 |
8 | Ext.onReady(function() {
9 | Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
10 |
11 | Deft.Injector.configure({
12 | carChart: 'carstore.store.CarChart',
13 | carData: 'carstore.store.CarData'
14 | });
15 |
16 | Ext.create('carstore.view.CarListings');
17 | });
18 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/carstore/app/model/CarChart.js:
--------------------------------------------------------------------------------
1 | Ext.define('carstore.model.CarChart', {
2 | extend: 'Ext.data.Model',
3 |
4 | fields: [ {
5 | name: 'name',
6 | type: 'string'
7 | }, {
8 | name: 'rating',
9 | type: 'int'
10 | } ]
11 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/carstore/app/model/CarData.js:
--------------------------------------------------------------------------------
1 | Ext.define('carstore.model.CarData', {
2 | extend: 'Ext.data.Model',
3 |
4 | fields: [ {
5 | name: 'manufacturer',
6 | type: 'string'
7 | }, {
8 | name: 'model',
9 | type: 'string'
10 | }, {
11 | name: 'price',
12 | type: 'int'
13 | }, {
14 | name: 'wiki',
15 | type: 'string'
16 | }, {
17 | name: 'img',
18 | type: 'string'
19 | }, {
20 | name: 'quality'
21 | } ],
22 |
23 | proxy: {
24 | type: 'direct',
25 | directFn: carService.read
26 | }
27 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/carstore/app/store/CarChart.js:
--------------------------------------------------------------------------------
1 | Ext.define('carstore.store.CarChart', {
2 | extend: 'Ext.data.Store',
3 | model: 'carstore.model.CarChart'
4 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/carstore/app/store/CarData.js:
--------------------------------------------------------------------------------
1 | Ext.define('carstore.store.CarData', {
2 | extend: 'Ext.data.Store',
3 | model: 'carstore.model.CarData'
4 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/carstore/data/2004_Porsche_911_Carrera_type_997.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs42/carstore/data/2004_Porsche_911_Carrera_type_997.jpg
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/carstore/data/250px-2007_Audi_TT_Coupe.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs42/carstore/data/250px-2007_Audi_TT_Coupe.jpg
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/carstore/data/250px-Audi_S5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs42/carstore/data/250px-Audi_S5.jpg
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/carstore/data/250px-BMW_M3_E92.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs42/carstore/data/250px-BMW_M3_E92.jpg
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/carstore/data/250px-Nissan_GT-R.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs42/carstore/data/250px-Nissan_GT-R.jpg
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/carstore/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | DeftJS Car Store
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/combobox.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ext Direct DirectStore and Combobox
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | Ext Direct DirectStore and Combobox
14 |
15 | Source code: combobox.js
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/combobox.js:
--------------------------------------------------------------------------------
1 | Ext.require([ 'Ext.data.*', 'Ext.form.*']);
2 |
3 | Ext.onReady(function() {
4 | Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
5 |
6 | Ext.define('DeliveryTime', {
7 | extend: 'Ext.data.Model',
8 | fields: [ 'label', 'value' ],
9 | proxy: {
10 | type: 'direct',
11 | directFn: deliveryTimeService.getDeliveryTimes
12 | }
13 | });
14 |
15 | var store = Ext.create('Ext.data.Store', {
16 | autoLoad: true,
17 | model: 'DeliveryTime'
18 | });
19 |
20 | Ext.create('Ext.form.field.ComboBox', {
21 | fieldLabel: 'Select a delivery method',
22 | renderTo: Ext.getBody(),
23 | displayField: 'label',
24 | valueField: 'value',
25 | width: 500,
26 | labelWidth: 130,
27 | store: store,
28 | queryMode: 'local',
29 | typeAhead: true
30 | });
31 |
32 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/form.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ext Direct Form Integration
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | Ext Direct Form Integration
14 |
15 | Source code: form.js
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/grid.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ext Direct Grid Integration
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | Ext Direct Grid Integration
14 |
15 |
16 | Source code: grid.js
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/gridfilter.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ext Direct GridPanel with Filter
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Ext Direct GridPanel with Filter
16 |
17 |
18 | Source code: gridfilter.js
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/gridxfilterrow/filter-row-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs42/gridxfilterrow/filter-row-icon.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/gridxfilterrow/styles.css:
--------------------------------------------------------------------------------
1 | .xfilter-row {
2 | position:absolute !important;
3 | }
4 |
5 | .xfilter-row input, .filter-input {
6 | font-size: 11px !important;
7 | background: #FFFFFF url(filter-row-icon.png) no-repeat bottom left !important;
8 | padding: 4px 5px 0 16px !important;
9 | }
10 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/infinite-scroll.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Infinite Scroll Grid Example
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | Source code: infinite-scroll.js
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/live.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Live Updated Chart - Animated
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | Live Updated Chart - Animated
14 |
15 | Source code: live.js
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/metadata.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | GridPanel with MetaData from server
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | GridPanel with MetaData from server
16 |
17 |
18 | Source code: metadata.js
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/named-arguments.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ext.Direct Named Arguments
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Ext.Direct Named Arguments
16 |
17 | Source code: named-arguments.js
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/sch/bbc.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | BBC Radio Schedule
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/sch/charting.css:
--------------------------------------------------------------------------------
1 | .carimg {
2 | float : left;
3 | width : 50%;
4 | border : 1px solid #ddd;
5 | }
6 |
7 | dl.cardescr {
8 | float : right;
9 | }
10 |
11 | .cardescr dt {
12 | font-size : 13px;
13 | font-weight : bold;
14 | color : Navy;
15 | text-align : right;
16 | }
17 |
18 | .cardescr dd {
19 | color : #999;
20 | margin-top : 5px;
21 | }
22 |
23 | .dayShift {
24 | background : url(sun.png) no-repeat 4px center;
25 | }
26 |
27 | .nightShift {
28 | background : url(bluemoon.png) no-repeat 4px center;
29 | }
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/simple/app.js:
--------------------------------------------------------------------------------
1 | Ext.Loader.setConfig({enabled : true});
2 |
3 | Ext.require('Ext.direct.*', function() {
4 | Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
5 | });
6 |
7 | Ext.application({
8 | name : 'Simple',
9 | appFolder : 'app',
10 | controllers : [ 'Users' ],
11 | autoCreateViewport: true
12 | });
13 |
14 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/simple/app/store/Users.js:
--------------------------------------------------------------------------------
1 | Ext.define('Simple.store.Users', {
2 | extend: 'Ext.data.Store',
3 | model: 'Simple.model.User',
4 | autoLoad: true,
5 | remoteSort: true,
6 | remoteFilter: true,
7 | pageSize : 30,
8 | autoSync : true,
9 | sorters: [ {
10 | property: 'lastName',
11 | direction: 'ASC'
12 | }]
13 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/simple/app/view/Viewport.js:
--------------------------------------------------------------------------------
1 | Ext.define('Simple.view.Viewport', {
2 | extend : 'Ext.Viewport',
3 | id : 'viewport',
4 |
5 | layout : 'fit',
6 |
7 | initComponent : function() {
8 | this.items = [ {
9 | xtype : 'userlist'
10 | } ];
11 |
12 | this.callParent(arguments);
13 | }
14 |
15 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/simple/css/add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs42/simple/css/add.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/simple/css/app.css:
--------------------------------------------------------------------------------
1 | .icon-add {
2 | background-image: url(add.png) !important;
3 | }
4 |
5 | .icon-delete {
6 | background-image: url(delete.png) !important;
7 | }
8 |
9 | .icon-info {
10 | background-image: url(information.png) !important;
11 | }
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/simple/css/delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs42/simple/css/delete.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/simple/css/information.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs42/simple/css/information.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/simple/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Account Manager
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/tree.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ext Direct Tree Integration
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | Ext Direct Tree Integration
14 |
15 |
16 | Source code: tree.js
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/tree.js:
--------------------------------------------------------------------------------
1 | Ext.require([ 'Ext.direct.*', 'Ext.data.*', 'Ext.tree.*' ]);
2 |
3 | Ext.onReady(function() {
4 | Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
5 |
6 | var store = Ext.create('Ext.data.TreeStore', {
7 | root: {
8 | expanded: true
9 | },
10 | nodeParam: 'id',
11 | proxy: {
12 | type: 'direct',
13 | directFn: treeProvider.getTree,
14 | extraParams: {
15 | foo: new Date()
16 | }
17 | }
18 | });
19 |
20 |
21 | // create the Tree
22 | Ext.create('Ext.tree.Panel', {
23 | store: store,
24 | height: 500,
25 | width: 700,
26 | title: 'Tree Sample',
27 | rootVisible: false,
28 | renderTo: Ext.getBody()
29 | });
30 |
31 | store.on("beforeload", function(store, operation) {
32 | store.proxy.extraParams.foo = new Date();
33 | }, this);
34 |
35 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs42/upload.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ext Direct Form with Upload
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | Ext Direct Form with Upload
14 |
15 |
16 | Source code: upload.js
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/association/Company.js:
--------------------------------------------------------------------------------
1 | Ext.define('Company', {
2 | extend: 'Ext.data.Model',
3 |
4 | idProperty: 'coId',
5 | fields: [ {
6 | name: 'coId'
7 | }, {
8 | name: 'company'
9 | }, {
10 | name: 'price'
11 | }, {
12 | name: 'change'
13 | }, {
14 | name: 'pctChange'
15 | }, {
16 | name: 'lastChange',
17 | type: 'date',
18 | dateFormat: 'c'
19 | } ],
20 |
21 | hasMany: {
22 | model: 'History',
23 | name: 'history',
24 | foreignKey: 'customerId'
25 | },
26 |
27 | proxy: {
28 | type: 'direct',
29 | directFn: 'areService.readWithHistory'
30 | }
31 |
32 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/association/History.js:
--------------------------------------------------------------------------------
1 | Ext.define('History', {
2 | extend: 'Ext.data.Model',
3 |
4 | fields: [ {
5 | name: 'id'
6 | }, {
7 | name: 'date',
8 | type: 'date',
9 | dateFormat: 'c'
10 | }, {
11 | name: 'text'
12 | }, {
13 | name: 'companyId',
14 | reference: 'Company'
15 | } ]
16 |
17 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/banchascaffold/img/icons/add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/banchascaffold/img/icons/add.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/banchascaffold/img/icons/arrow_undo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/banchascaffold/img/icons/arrow_undo.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/banchascaffold/img/icons/delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/banchascaffold/img/icons/delete.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/banchascaffold/img/icons/disk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/banchascaffold/img/icons/disk.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/banchascaffold/img/icons/image_add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/banchascaffold/img/icons/image_add.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/banchascaffold/img/icons/user_edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/banchascaffold/img/icons/user_edit.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/bigdata/BigDataStore.js:
--------------------------------------------------------------------------------
1 | Ext.define('BigDataStore', {
2 | extend: 'Ext.data.Store',
3 | storeId: 'BigDataStore',
4 | model: 'Employee',
5 |
6 | groupField: 'department',
7 |
8 | proxy: {
9 | type: 'direct',
10 | api: {
11 | read: 'employeeService.read',
12 | update: 'employeeService.update'
13 | },
14 | writer : {
15 | writeAllFields : true
16 | }
17 | },
18 |
19 | autoLoad: true,
20 | autoSync : true
21 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/bigdata/images.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/bigdata/images.jpg
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/calendar/AbstractCalendarOverride.js:
--------------------------------------------------------------------------------
1 | Ext.define('AbstractCalendarOverride', {
2 | override: 'Ext.calendar.view.AbstractCalendar',
3 |
4 | setStartDate: function(start, refresh) {
5 | this.startDate = Ext.Date.clearTime(start);
6 | this.setViewBounds(start);
7 | this.store.load({
8 | params: {
9 | startDate: Ext.Date.format(this.viewStart, 'Y-m-d'),
10 | endDate: Ext.Date.format(this.viewEnd, 'Y-m-d')
11 | }
12 | });
13 | if (refresh === true) {
14 | this.refresh();
15 | }
16 | this.fireEvent('datechange', this, this.startDate, this.viewStart, this.viewEnd);
17 | }
18 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/calendar/DirectCalendarStore.js:
--------------------------------------------------------------------------------
1 | Ext.define('DirectCalendarStore', {
2 | extend: 'Ext.data.Store',
3 | requires: [ 'Ext.calendar.data.CalendarModel' ],
4 | model: 'Ext.calendar.data.CalendarModel',
5 | autoLoad: true,
6 | autoSync: true,
7 | proxy: {
8 | type: 'direct',
9 | directFn: 'calendarService.readCalendars',
10 | writer: {
11 | writeAllFields: true
12 | }
13 | }
14 |
15 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/calendar/DirectEventStore.js:
--------------------------------------------------------------------------------
1 | Ext.define('DirectEventStore', {
2 | extend: 'Ext.data.Store',
3 | requires: [ 'Ext.calendar.data.EventModel' ],
4 | model: 'Ext.calendar.data.EventModel',
5 | autoLoad: true,
6 | autoSync: true,
7 | proxy: {
8 | type: 'direct',
9 | api: {
10 | read: 'calendarService.read',
11 | create: 'calendarService.create',
12 | update: 'calendarService.update',
13 | destroy: 'calendarService.destroy'
14 | },
15 | writer: {
16 | writeAllFields: true
17 | }
18 | }
19 |
20 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/carstore/app.js:
--------------------------------------------------------------------------------
1 | Ext.application({
2 | name: 'Carstore',
3 | extend: 'Ext.app.Application',
4 | autoCreateViewport: 'Carstore.view.CarListings',
5 |
6 | constructor: function() {
7 | Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
8 | this.callParent(arguments);
9 | }
10 |
11 | });
12 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/carstore/app/model/CarModel.js:
--------------------------------------------------------------------------------
1 | Ext.define('Carstore.model.CarModel', {
2 | extend: 'Ext.data.Model',
3 |
4 | fields: [ 'manufacturer', 'model', 'price', 'wiki', 'img', 'quality' ],
5 |
6 | proxy: {
7 | type: 'direct',
8 | directFn: 'carService.read'
9 | }
10 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/carstore/app/view/CarController.js:
--------------------------------------------------------------------------------
1 | Ext.define('Carstore.view.CarController', {
2 | extend: 'Ext.app.ViewController',
3 |
4 | init: function(view) {
5 | var carStore = this.getStore('carStore');
6 | carStore.load({
7 | scope: this,
8 | callback: function() {
9 | this.lookupReference('carGrid').setSelection(carStore.first());
10 | }
11 | });
12 | },
13 |
14 | onGridSelectionChange: function(grid, selected) {
15 | this.lookupReference('carDetail').update(selected[0]);
16 | this.getStore('chartStore').loadData(selected[0].data.quality);
17 | this.lookupReference('wikiFrame').down('uxiframe').load(selected[0].data.wiki);
18 | }
19 |
20 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/carstore/app/view/CarModel.js:
--------------------------------------------------------------------------------
1 | Ext.define('Carstore.view.CarModel', {
2 | extend: 'Ext.app.ViewModel',
3 | requires: [ 'Carstore.model.CarModel' ],
4 |
5 | stores: {
6 | carStore: {
7 | model: 'Carstore.model.CarModel',
8 | autoLoad: false,
9 | pageSize: 0
10 | },
11 | chartStore: {
12 | fields: [ 'name', 'rating' ]
13 | }
14 | }
15 |
16 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/carstore/data/2004_Porsche_911_Carrera_type_997.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/carstore/data/2004_Porsche_911_Carrera_type_997.jpg
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/carstore/data/250px-2007_Audi_TT_Coupe.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/carstore/data/250px-2007_Audi_TT_Coupe.jpg
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/carstore/data/250px-Audi_S5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/carstore/data/250px-Audi_S5.jpg
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/carstore/data/250px-BMW_M3_E92.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/carstore/data/250px-BMW_M3_E92.jpg
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/carstore/data/250px-Nissan_GT-R.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/carstore/data/250px-Nissan_GT-R.jpg
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/carstore/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Car Store
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/executive-dashboard/app.js:
--------------------------------------------------------------------------------
1 | Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
2 | Ext.application({
3 | name: 'ExecDashboard',
4 | extend: 'ExecDashboard.Application',
5 | autoCreateViewport: 'ExecDashboard.view.main.Main'
6 | });
7 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/executive-dashboard/app/Application.js:
--------------------------------------------------------------------------------
1 | Ext.define('ExecDashboard.Application', {
2 | extend: 'Ext.app.Application',
3 | name: 'ExecDashboard',
4 | requires: ['ExecDashboard.ux.plugin.RowExpander'],
5 |
6 | // The tab we want to activate if there is no "#tag" in the URL.
7 | defaultToken: '!kpi/clicks',
8 |
9 | views: [ 'ExecDashboard.view.main.Main' ],
10 |
11 | launch: function() {
12 | // Let's add a CSS class to body if flex box wrap is not implemented or broken
13 | // http://flexboxlayouts.com/flexboxlayout_tricks.html
14 | if (Ext.browser.is.Gecko && Ext.browser.version.major < 28) {
15 | Ext.getBody().addCls('x-flex-wrap-broken');
16 | }
17 | }
18 | });
19 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/executive-dashboard/app/model/Base.js:
--------------------------------------------------------------------------------
1 | Ext.define('ExecDashboard.model.Base', {
2 | extend: 'Ext.data.Model',
3 |
4 | schema: {
5 | namespace: 'ExecDashboard.model'
6 | }
7 | });
8 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/executive-dashboard/app/model/FullProfitloss.js:
--------------------------------------------------------------------------------
1 | Ext.define('ExecDashboard.model.FullProfitloss', {
2 | extend: 'ExecDashboard.model.Base',
3 |
4 | fields: [ 'account', {
5 | name: 'q1_2010',
6 | type: 'int'
7 | }, {
8 | name: 'q2_2010',
9 | type: 'int'
10 | }, {
11 | name: 'q3_2010',
12 | type: 'int'
13 | }, {
14 | name: 'q4_2010',
15 | type: 'int'
16 | }, {
17 | name: 'q1_2011',
18 | type: 'int'
19 | }, {
20 | name: 'q2_2011',
21 | type: 'int'
22 | }, {
23 | name: 'q3_2011',
24 | type: 'int'
25 | }, {
26 | name: 'q4_2011',
27 | type: 'int'
28 | }, {
29 | name: 'q1_2012',
30 | type: 'int'
31 | }, {
32 | name: 'q2_2012',
33 | type: 'int'
34 | }, 'region' ]
35 | });
36 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/executive-dashboard/app/model/Kpi.js:
--------------------------------------------------------------------------------
1 | Ext.define('ExecDashboard.model.Kpi', {
2 | extend: 'ExecDashboard.model.Base',
3 |
4 | fields: [ 'category', 'name', 'data1', 'data2' ]
5 | });
6 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/executive-dashboard/app/model/News.js:
--------------------------------------------------------------------------------
1 | Ext.define('ExecDashboard.model.News', {
2 | extend: 'ExecDashboard.model.Base',
3 |
4 | fields: [ 'type', {
5 | name: 'date',
6 | type: 'date',
7 | dateFormat: 'Y-m-d H:i:s'
8 | }, 'time', 'author', 'group', 'image', 'title', 'paragraph' ]
9 | });
10 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/executive-dashboard/app/model/StockOHLC.js:
--------------------------------------------------------------------------------
1 | Ext.define('ExecDashboard.model.StockOHLC', {
2 | extend: 'ExecDashboard.model.Base',
3 |
4 | fields: [ 'company', {
5 | name: 'time',
6 | type: 'date',
7 | dateFormat: 'Y-m-d'
8 | }, 'open', 'high', 'low', 'close' ]
9 | });
10 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/executive-dashboard/app/view/companynews/NewsModel.js:
--------------------------------------------------------------------------------
1 | Ext.define('ExecDashboard.view.companynews.NewsModel', {
2 | extend: 'Ext.app.ViewModel',
3 | alias: 'viewmodel.news',
4 |
5 | requires: [ 'ExecDashboard.model.News' ],
6 |
7 | formulas: {
8 | typeFilter: function(get) {
9 | var category = get('category');
10 | return this.filters[category];
11 | }
12 | },
13 |
14 | filters: {
15 | all: [ 'news', 'forum' ],
16 | news: [ 'news' ],
17 | forum: [ 'forum' ]
18 | },
19 |
20 | stores: {
21 | news: {
22 | model: 'ExecDashboard.model.News',
23 | autoLoad: true,
24 | remoteFilter: true,
25 | pageSize: 0,
26 | sorters: [ {
27 | property: 'date',
28 | direction: 'DESC'
29 | } ],
30 | filters: {
31 | property: 'type',
32 | value: '{typeFilter}'
33 | },
34 | proxy: {
35 | type: 'direct',
36 | directFn: execDashboardService.readNews
37 | }
38 | }
39 | }
40 | });
41 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/executive-dashboard/app/view/kpi/KpiController.js:
--------------------------------------------------------------------------------
1 | Ext.define('ExecDashboard.view.kpi.KpiController', {
2 | extend: 'Ext.app.ViewController',
3 | alias: 'controller.kpi',
4 |
5 | init: function (view) {
6 | // We provide the updater for the activeState config of our View.
7 | view.updateActiveState = this.updateActiveState.bind(this);
8 | },
9 |
10 | onToggleKpi: function(button) {
11 | if (button.pressed) {
12 | var view = this.getView();
13 | view.setActiveState(button.filter);
14 | }
15 | },
16 |
17 | updateActiveState: function (activeState) {
18 | var refs = this.getReferences();
19 | var viewModel = this.getViewModel();
20 |
21 | refs[activeState].setPressed(true);
22 | viewModel.set('kpiCategory', activeState);
23 |
24 | this.fireEvent('changeroute', this, 'kpi/' + activeState);
25 | }
26 | });
27 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/executive-dashboard/app/view/kpi/KpiModel.js:
--------------------------------------------------------------------------------
1 | Ext.define('ExecDashboard.view.kpi.KpiModel', {
2 | extend: 'Ext.app.ViewModel',
3 | alias: 'viewmodel.kpi',
4 |
5 | requires: [
6 | 'ExecDashboard.model.Kpi'
7 | ],
8 |
9 | data: {
10 | // This property is placed in the ViewModel by routing
11 | // kpiCategory: null
12 | },
13 |
14 | stores: {
15 | kpiMain: {
16 | model: 'ExecDashboard.model.Kpi',
17 | autoLoad: true,
18 | pageSize: 0,
19 | remoteFilter: true,
20 | filters: {
21 | property: 'category',
22 | value: '{kpiCategory}'
23 | },
24 | proxy: {
25 | type: 'direct',
26 | directFn: execDashboardService.readKpi
27 | },
28 | }
29 | }
30 | });
31 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/executive-dashboard/app/view/main/MainModel.js:
--------------------------------------------------------------------------------
1 | Ext.define('ExecDashboard.view.main.MainModel', {
2 | extend: 'Ext.app.ViewModel',
3 |
4 | alias: 'viewmodel.main',
5 |
6 | data: {
7 | name: 'ExecDashboard'
8 | }
9 | });
10 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/executive-dashboard/app/view/profitloss/ProfitLossModel.js:
--------------------------------------------------------------------------------
1 | Ext.define('ExecDashboard.view.profitloss.ProfitLossModel', {
2 | extend: 'Ext.app.ViewModel',
3 | alias: 'viewmodel.profitloss',
4 |
5 | requires: [ 'ExecDashboard.model.FullProfitloss' ],
6 |
7 | stores: {
8 | profitloss: {
9 | model: 'ExecDashboard.model.FullProfitloss',
10 | autoLoad: false,
11 | remoteFilter: false,
12 | remoteSort: false,
13 | groupField: 'account',
14 | proxy: {
15 | type: 'direct',
16 | directFn: execDashboardService.readProfitloss
17 | }
18 | }
19 | }
20 | });
21 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/executive-dashboard/app/view/quarterly/QuarterlyController.js:
--------------------------------------------------------------------------------
1 | Ext.define('ExecDashboard.view.quarterly.QuarterlyController', {
2 | extend: 'Ext.app.ViewController',
3 | alias: 'controller.quarterly',
4 |
5 | init: function(view) {
6 | view.updateActiveState = this.updateActiveState.bind(this);
7 | },
8 |
9 | menuItemClick: function(button, menuitem) {
10 | this.getView().setActiveState(menuitem.text);
11 | },
12 |
13 | updateActiveState: function(activeState) {
14 |
15 | var viewModel = this.getViewModel();
16 | viewModel.set('company', activeState);
17 |
18 | execDashboardService.readCompanyData(activeState, function(result) {
19 | viewModel.set('companyData', result);
20 | });
21 |
22 | this.fireEvent('changeroute', this, 'quarterly/' + activeState);
23 | }
24 | });
25 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/executive-dashboard/app/view/quarterly/QuarterlyModel.js:
--------------------------------------------------------------------------------
1 | Ext.define('ExecDashboard.view.quarterly.QuarterlyModel', {
2 | extend: 'Ext.app.ViewModel',
3 | alias: 'viewmodel.quarterly',
4 |
5 | requires: [ 'ExecDashboard.model.StockOHLC' ],
6 |
7 | data: {
8 | // Set by the router
9 | company: null,
10 | stockRange: '2Y'
11 | },
12 |
13 | stores: {
14 | stocks: {
15 | model: 'ExecDashboard.model.StockOHLC',
16 | autoLoad: true,
17 | remoteFilter: true,
18 | remoteSort: true,
19 | filters: {
20 | property: 'company',
21 | value: '{company}'
22 | },
23 | proxy: {
24 | type: 'direct',
25 | directFn: execDashboardService.readStockOHLC
26 | },
27 | },
28 |
29 | statements: {
30 | fields: [ 'name', 'thumb', 'url', 'type' ],
31 | proxy: {
32 | type: 'direct',
33 | directFn: execDashboardService.readStatements
34 | },
35 | autoLoad: true
36 | }
37 | }
38 | });
39 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/executive-dashboard/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Executive Dashboard
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/app.js:
--------------------------------------------------------------------------------
1 | Ext.application({
2 | requires: ['Ext.direct.*'],
3 | name: 'Feed',
4 | extend: 'Ext.app.Application',
5 | autoCreateViewport: true,
6 |
7 | constructor: function() {
8 | Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
9 | this.callParent(arguments);
10 | }
11 |
12 | });
13 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/app/model/Feed.js:
--------------------------------------------------------------------------------
1 | Ext.define('Feed.model.Feed', {
2 | extend: 'Ext.data.Model',
3 |
4 | fields: [ 'id', 'title', 'url' ],
5 |
6 | proxy: {
7 | type: 'direct',
8 | api: {
9 | read: 'feedService.read',
10 | destroy: 'feedService.destroy'
11 | }
12 | }
13 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/app/model/FeedItem.js:
--------------------------------------------------------------------------------
1 | Ext.define('Feed.model.FeedItem', {
2 | extend: 'Ext.data.Model',
3 |
4 | fields: [ 'id', 'title', 'author', 'link', {
5 | name: 'pubDate',
6 | type: 'date',
7 | dateFormat: 'c'
8 | }, 'description', 'content' ],
9 |
10 | proxy: {
11 | type: 'direct',
12 | api: {
13 | read: 'feedService.readFeedItem'
14 | }
15 | }
16 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/app/view/FeedModel.js:
--------------------------------------------------------------------------------
1 | Ext.define('Feed.view.FeedModel', {
2 | extend: 'Ext.app.ViewModel',
3 | requires: [ 'Feed.model.Feed', 'Feed.model.FeedItem' ],
4 |
5 | data: {
6 | selectedFeed: false,
7 | selectedFeedItem: false
8 | },
9 |
10 | stores: {
11 | feedStore: {
12 | model: 'Feed.model.Feed',
13 | autoLoad: true,
14 | autoSync: true,
15 | pageSize: 0
16 | },
17 | feedItemStore: {
18 | model: 'Feed.model.FeedItem',
19 | autoLoad: false,
20 | pageSize: 0
21 | }
22 | }
23 |
24 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/app/view/FeedPanel.js:
--------------------------------------------------------------------------------
1 | Ext.define('Feed.view.FeedPanel', {
2 | extend: 'Ext.panel.Panel',
3 |
4 | animCollapse: true,
5 | layout: 'fit',
6 | title: 'Feeds',
7 |
8 | items: [ {
9 | xtype: 'dataview',
10 | autoScroll: true,
11 | bind: {
12 | store: '{feedStore}'
13 | },
14 | trackOver: true,
15 | cls: 'feed-list',
16 | itemSelector: '.feed-list-item',
17 | overItemCls: 'feed-list-item-hover',
18 | tpl: '{title}
',
19 | listeners: {
20 | select: 'feedSelected'
21 | }
22 | } ],
23 |
24 | dockedItems: [ {
25 | xtype: 'toolbar',
26 | dock: 'top',
27 | items: [ {
28 | text: 'Add',
29 | iconCls: 'feed-add',
30 | handler: 'openFeedWindow'
31 | }, {
32 | text: 'Remove',
33 | iconCls: 'feed-remove',
34 | handler: 'removeFeed',
35 | bind: {
36 | disabled: '{!selectedFeed}'
37 | }
38 | } ]
39 | } ]
40 |
41 | });
42 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/app/view/FeedTabPanel.js:
--------------------------------------------------------------------------------
1 | Ext.define('Feed.view.FeedTabPanel', {
2 | extend: 'Ext.tab.Panel',
3 |
4 | reference: 'feedTabPanel',
5 | bind: {
6 | hidden: '{!selectedFeed}'
7 | },
8 |
9 | maxTabWidth: 230,
10 | border: false,
11 |
12 | plugins: [ {
13 | ptype: 'tabclosemenu'
14 | } ]
15 |
16 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/app/view/Viewport.js:
--------------------------------------------------------------------------------
1 | Ext.define('Feed.view.Viewport', {
2 | extend: 'Ext.container.Viewport',
3 | requires: [ 'Feed.view.FeedModel', 'Feed.view.FeedController', 'Feed.view.FeedPanel',
4 | 'Feed.view.FeedTabPanel' ],
5 |
6 | controller: {
7 | xclass: 'Feed.view.FeedController'
8 | },
9 |
10 | viewModel: {
11 | xclass: 'Feed.view.FeedModel'
12 | },
13 |
14 | layout: {
15 | type: 'border',
16 | padding: 5
17 | },
18 |
19 | items: [ {
20 | xclass: 'Feed.view.FeedPanel',
21 | region: 'west',
22 | collapsible: true,
23 | width: 225,
24 | split: true,
25 | minWidth: 175
26 | }, {
27 | xclass: 'Feed.view.FeedTabPanel',
28 | region: 'center',
29 | minWidth: 300
30 | } ]
31 |
32 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/article.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/article.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/article.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/article.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/details.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/details.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/details.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/details.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/post.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/post.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/post.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/post.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/post_go.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/post_go.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/post_go.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/post_go.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/preview-bottom.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/preview-bottom.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/preview-bottom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/preview-bottom.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/preview-hide.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/preview-hide.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/preview-hide.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/preview-hide.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/preview-right.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/preview-right.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/preview-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/preview-right.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/rss.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/rss.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/rss.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/rss.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/rss_add.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/rss_add.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/rss_add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/rss_add.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/rss_delete.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/rss_delete.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/rss_delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/rss_delete.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/rss_load.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/rss_load.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/rss_load.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/rss_load.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/tab_new.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/tab_new.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/tab_new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/tab_new.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/tabs.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/tabs.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/feed/images/tabs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/feed/images/tabs.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/form.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Ext.Direct Form Integration
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Ext Direct Form Integration
16 |
17 | Source code: form.js
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/grid.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Ext Direct Grid Integration
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Ext.Direct Grid Integration
16 |
17 |
18 | Source code: grid.js
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/gridfilter.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Ext Direct GridPanel with Filter
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Ext Direct GridPanel with Filter
16 |
17 |
18 | Source code: gridfilter.js
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/metadata.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | GridPanel with MetaData from server
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | GridPanel with MetaData from server
17 |
18 |
19 | Source code: metadata.js
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/sch/bbc.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | BBC Radio Schedule
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/sch/charting.css:
--------------------------------------------------------------------------------
1 | .carimg {
2 | float : left;
3 | width : 50%;
4 | border : 1px solid #ddd;
5 | }
6 |
7 | dl.cardescr {
8 | float : right;
9 | }
10 |
11 | .cardescr dt {
12 | font-size : 13px;
13 | font-weight : bold;
14 | color : Navy;
15 | text-align : right;
16 | }
17 |
18 | .cardescr dd {
19 | color : #999;
20 | margin-top : 5px;
21 | }
22 |
23 | .dayShift {
24 | background : url(sun.png) no-repeat 4px center;
25 | }
26 |
27 | .nightShift {
28 | background : url(bluemoon.png) no-repeat 4px center;
29 | }
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/session/ChildSessionModel.js:
--------------------------------------------------------------------------------
1 | /**
2 | * This ViewModel provides data for the ChildSession view.
3 | */
4 | Ext.define('ChildSessionModel', {
5 | extend: 'Ext.app.ViewModel',
6 |
7 | data: {
8 | selectedCustomer: false
9 | },
10 |
11 | stores: {
12 | // Define a store of Customer records that links to the Session.
13 | customers: {
14 | model: 'Customer',
15 | autoLoad: true,
16 | session: true
17 | }
18 | }
19 | });
20 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/session/Customer.js:
--------------------------------------------------------------------------------
1 | Ext.define('Customer', {
2 | extend: 'Ext.data.Model',
3 | identifier: 'negative',
4 |
5 | fields: [ 'id', 'name', {
6 | name: 'phone',
7 | type: 'phonenumber'
8 | } ],
9 |
10 | proxy: {
11 | type: 'direct',
12 | api: {
13 | create: sessionService.customerCreate,
14 | read: sessionService.customerRead,
15 | update: sessionService.customerUpdate,
16 | destroy: sessionService.customerDestroy
17 | }
18 | },
19 |
20 | validators: {
21 | name: 'presence'
22 | }
23 | });
24 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/session/Order.js:
--------------------------------------------------------------------------------
1 | Ext.define('Order', {
2 | extend: 'Ext.data.Model',
3 | identifier: 'negative',
4 |
5 | fields: [ 'id', {
6 | name: 'date',
7 | type: 'date',
8 | dateFormat: 'Y-m-d'
9 | }, 'shipped', {
10 | name: 'customerId',
11 | reference: {
12 | parent: 'Customer'
13 | }
14 | } ],
15 |
16 | proxy: {
17 | type: 'direct',
18 | api: {
19 | create: sessionService.orderCreate,
20 | read: sessionService.orderRead,
21 | update: sessionService.orderUpdate,
22 | destroy: sessionService.orderDestroy
23 | }
24 | }
25 | });
26 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/session/PhoneNumber.js:
--------------------------------------------------------------------------------
1 | Ext.define('PhoneNumber', {
2 | extend: 'Ext.data.field.String',
3 | alias: 'data.field.phonenumber',
4 |
5 | validators: [ {
6 | type: 'format',
7 | matcher: /^\d{3}-?\d{3}-?\d{4}$/,
8 | message: 'Must be in the format xxx-xxx-xxxx'
9 | } ]
10 | });
11 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/simple-task/app.js:
--------------------------------------------------------------------------------
1 | Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
2 | Ext.application({
3 | name: 'SimpleTasks',
4 | extend: 'SimpleTasks.Application',
5 | autoCreateViewport: true
6 | });
7 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/simple-task/app/Application.js:
--------------------------------------------------------------------------------
1 | Ext.define('SimpleTasks.Application', {
2 | name: 'SimpleTasks',
3 | extend: 'Ext.app.Application',
4 |
5 | controllers: [
6 | 'Lists',
7 | 'Tasks'
8 | ]
9 |
10 | });
11 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/simple-task/app/model/List.js:
--------------------------------------------------------------------------------
1 | Ext.define('SimpleTasks.model.List', {
2 | extend: 'Ext.data.TreeModel',
3 |
4 | identifier: 'negative',
5 |
6 | fields: [ {
7 | name: 'id',
8 | type: 'int'
9 | }, {
10 | name: 'name'
11 | } ],
12 |
13 | proxy: {
14 | type: 'direct',
15 | api: {
16 | create: listService.create,
17 | read: listService.read,
18 | update: listService.update,
19 | destroy: listService.destroy
20 | }
21 | }
22 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/simple-task/app/model/Task.js:
--------------------------------------------------------------------------------
1 | Ext.define('SimpleTasks.model.Task', {
2 | extend: 'Ext.data.Model',
3 |
4 | identifier: 'negative',
5 |
6 | fields: [ {
7 | name: 'id',
8 | type: 'int'
9 | }, {
10 | name: 'title'
11 | }, {
12 | name: 'list_id',
13 | type: 'int'
14 | }, {
15 | name: 'due',
16 | type: 'date',
17 | dateFormat: 'Y-m-d'
18 | }, {
19 | name: 'reminder',
20 | type: 'date',
21 | dateFormat: 'c'
22 | }, {
23 | name: 'done',
24 | type: 'boolean',
25 | defaultValue: false
26 | }, {
27 | name: 'note'
28 | } ],
29 |
30 | proxy: {
31 | type: 'direct',
32 | api: {
33 | create: simpleTaskService.create,
34 | read: simpleTaskService.read,
35 | update: simpleTaskService.update,
36 | destroy: simpleTaskService.destroy
37 | }
38 | }
39 |
40 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/simple-task/app/store/Lists.js:
--------------------------------------------------------------------------------
1 | Ext.define('SimpleTasks.store.Lists', {
2 | extend: 'Ext.data.TreeStore',
3 | model: 'SimpleTasks.model.List',
4 | root: {
5 | expanded: true,
6 | id: 0,
7 | name: 'All Lists'
8 | }
9 |
10 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/simple-task/app/store/Tasks.js:
--------------------------------------------------------------------------------
1 | Ext.define('SimpleTasks.store.Tasks', {
2 | extend: 'Ext.data.Store',
3 | model: 'SimpleTasks.model.Task',
4 | pageSize: 0, // disable paging
5 | grouper: {
6 | property: 'due',
7 | // Use the group string here so we don't need to worry about time
8 | // during any grouping based comparisons
9 | groupFn: function(rec) {
10 | return Ext.Date.format(rec.get('due'), 'Y-m-d');
11 | }
12 | }
13 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/simple-task/app/view/Viewport.js:
--------------------------------------------------------------------------------
1 | Ext.define('SimpleTasks.view.Viewport', {
2 | extend: 'Ext.container.Viewport',
3 |
4 | layout: 'border',
5 |
6 | items: [ {
7 | xtype: 'tasksToolbar',
8 | region: 'north'
9 | }, {
10 | xtype: 'listTree',
11 | region: 'west',
12 | width: 300,
13 | collapsible: true,
14 | split: true
15 | }, {
16 | region: 'center',
17 | xtype: 'taskGrid',
18 | title: 'All Lists'
19 | } ]
20 |
21 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/simple-task/app/view/lists/ContextMenu.js:
--------------------------------------------------------------------------------
1 | Ext.define('SimpleTasks.view.lists.ContextMenu', {
2 | extend: 'Ext.menu.Menu',
3 | xtype: 'listsContextMenu',
4 | items: [ {
5 | text: 'New List',
6 | iconCls: 'tasks-new-list',
7 | id: 'new-list-item'
8 | }, {
9 | text: 'New Folder',
10 | iconCls: 'tasks-new-folder',
11 | id: 'new-folder-item'
12 | }, {
13 | text: 'New Task',
14 | iconCls: 'tasks-new',
15 | id: 'new-task-item'
16 | }, '-', {
17 | text: 'Delete',
18 | iconCls: 'tasks-delete-folder',
19 | id: 'delete-folder-item'
20 | }, {
21 | text: 'Delete',
22 | iconCls: 'tasks-delete-list',
23 | id: 'delete-list-item'
24 | } ],
25 |
26 | setList: function(list) {
27 | this.list = list;
28 | },
29 |
30 | getList: function() {
31 | return this.list;
32 | }
33 |
34 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/simple-task/app/view/tasks/ContextMenu.js:
--------------------------------------------------------------------------------
1 | Ext.define('SimpleTasks.view.tasks.ContextMenu', {
2 | extend: 'Ext.menu.Menu',
3 | xtype: 'tasksContextMenu',
4 | items: [ {
5 | text: 'Edit',
6 | id: 'edit-task-item'
7 | }, '-', {
8 | text: 'Mark Complete',
9 | iconCls: 'tasks-mark-complete',
10 | id: 'mark-complete-item'
11 | }, {
12 | text: 'Mark Active',
13 | iconCls: 'tasks-mark-active',
14 | id: 'mark-active-item'
15 | }, {
16 | text: 'Delete',
17 | iconCls: 'tasks-delete-task',
18 | id: 'delete-task-item'
19 | } ],
20 |
21 | setTask: function(task) {
22 | this.task = task;
23 | },
24 |
25 | getTask: function() {
26 | return this.task;
27 | }
28 |
29 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/simple-task/app/view/tasks/Form.js:
--------------------------------------------------------------------------------
1 | Ext.define('SimpleTasks.view.tasks.Form', {
2 | extend: 'Ext.form.Panel',
3 | xtype: 'taskForm',
4 | requires: [ 'Ext.ux.TreePicker' ],
5 | layout: 'hbox',
6 | cls: 'tasks-new-form',
7 |
8 | initComponent: function() {
9 | this.items = [ {
10 | xtype: 'component',
11 | cls: 'tasks-new',
12 | width: 24,
13 | height: 24
14 | }, {
15 | xtype: 'textfield',
16 | name: 'title',
17 | emptyText: 'Add a new task'
18 | }, {
19 | xtype: 'treepicker',
20 | name: 'list_id',
21 | displayField: 'name',
22 | store: Ext.data.StoreManager.lookup('Lists'),
23 | width: 195
24 | }, {
25 | xtype: 'datefield',
26 | name: 'due',
27 | value: new Date(),
28 | width: 95
29 | } ];
30 |
31 | this.callParent(arguments);
32 | }
33 |
34 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/simple-task/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | SimpleTasks
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/simple/app.js:
--------------------------------------------------------------------------------
1 | Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
2 |
3 | Ext.application({
4 | name: 'Simple',
5 | extend: 'Simple.Application',
6 | autoCreateViewport: 'Simple.view.user.List'
7 | });
8 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/simple/app/Application.js:
--------------------------------------------------------------------------------
1 | Ext.define('Simple.Application', {
2 | extend: 'Ext.app.Application',
3 | name: 'Simple'
4 | });
5 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/simple/app/view/user/UserModel.js:
--------------------------------------------------------------------------------
1 | Ext.define('Simple.view.user.UserModel', {
2 | extend: 'Ext.app.ViewModel',
3 | requires: [ 'Simple.model.User' ],
4 |
5 | formulas: {
6 | selectedUser: function(get) {
7 | return get('userGrid.selection');
8 | },
9 | userSelected: function(get) {
10 | return !!get('selectedUser');
11 | },
12 | editUserValid: {
13 | bind: {
14 | bindTo: '{editUser}',
15 | deep: true
16 | },
17 | get: function(data) {
18 | return data.isValid();
19 | }
20 | }
21 | },
22 |
23 | stores: {
24 | userStore: {
25 | model: 'Simple.model.User',
26 | autoLoad: false,
27 | remoteSort: true,
28 | remoteFilter: true,
29 | pageSize: 30,
30 | autoSync: false,
31 | sorters: [ {
32 | property: 'lastName',
33 | direction: 'ASC'
34 | } ]
35 | }
36 | }
37 |
38 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/simple/css/add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/simple/css/add.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/simple/css/app.css:
--------------------------------------------------------------------------------
1 | .icon-add {
2 | background-image: url(add.png) !important;
3 | }
4 |
5 | .icon-delete {
6 | background-image: url(delete.png) !important;
7 | }
8 |
9 | .icon-info {
10 | background-image: url(information.png) !important;
11 | }
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/simple/css/delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/simple/css/delete.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/simple/css/information.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/simple/css/information.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/simple/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Account Manager
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/spreadsheet/SpreadsheetModel.js:
--------------------------------------------------------------------------------
1 | Ext.define('SpreadsheetModel', {
2 | extend: 'Ext.app.ViewModel',
3 |
4 | stores: {
5 | monthlySales: {
6 | model: 'MonthlySales',
7 | autoLoad: true,
8 | autoSync: true,
9 | pageSize: 0
10 | }
11 | }
12 |
13 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/task/app.js:
--------------------------------------------------------------------------------
1 | Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
2 |
3 | Ext.application({
4 | name: 'Task',
5 | extend: 'Task.Application',
6 | autoCreateViewport: true
7 | });
8 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/task/app/Application.js:
--------------------------------------------------------------------------------
1 | Ext.define('Task.Application', {
2 | name: 'Task',
3 | extend: 'Ext.app.Application',
4 |
5 | views: [ 'TaskForm' ],
6 | models: [ 'Task' ]
7 | });
8 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/task/app/model/Task.js:
--------------------------------------------------------------------------------
1 | Ext.define('Task.model.Task', {
2 | extend: 'Ext.data.Model',
3 | identifier: 'negative',
4 | fields: [ {
5 | name: 'id'
6 | }, {
7 | name: 'title'
8 | }, {
9 | name: 'description'
10 | }, {
11 | name: 'dueDate',
12 | type: 'date',
13 | dateFormat: 'Y-m-d'
14 | }, {
15 | name: 'priority'
16 | } ],
17 |
18 | proxy: {
19 | type: 'direct',
20 | api: {
21 | create: 'taskService.create',
22 | read: 'taskService.read',
23 | update: 'taskService.update',
24 | destroy: 'taskService.destroy'
25 | },
26 | writer: {
27 | writeAllFields: true
28 | }
29 | }
30 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/task/app/view/TaskModel.js:
--------------------------------------------------------------------------------
1 | Ext.define('Task.view.TaskModel', {
2 | extend: 'Ext.app.ViewModel',
3 | requires: [ 'Task.model.Task' ],
4 |
5 | data: {
6 | detailTask: false
7 | },
8 |
9 | formulas: {
10 | selectedTask: function(get) {
11 | return get('taskGrid.selection');
12 | }
13 | },
14 |
15 | stores: {
16 | tasks: {
17 | model: 'Task.model.Task',
18 | autoLoad: true,
19 | pageSize: 0
20 | },
21 | priorities: {
22 | autoLoad: true,
23 | data: [ {
24 | id: 'HIGH',
25 | priority: 'HIGH'
26 | }, {
27 | id: 'NORMAL',
28 | priority: 'NORMAL'
29 | }, {
30 | id: 'LOW',
31 | priority: 'LOW'
32 | } ],
33 | fields: [ 'id', 'priority' ]
34 | }
35 | }
36 |
37 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/task/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Tasks
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/task/resources/images/HIGH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/task/resources/images/HIGH.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/task/resources/images/LOW.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/task/resources/images/LOW.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/task/resources/images/NORMAL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/task/resources/images/NORMAL.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/task/resources/images/add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/task/resources/images/add.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/task/resources/images/delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/task/resources/images/delete.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/task/resources/images/edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/task/resources/images/edit.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/task/resources/styles/app.css:
--------------------------------------------------------------------------------
1 | /* Custom CSS styles can be added here */
2 |
3 | /* all */
4 | body { font-size: 1.4em; }
5 |
6 | /* main panel title */
7 | .main-title { font-size: 1.8em; padding: 8px; }
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/todo/app.js:
--------------------------------------------------------------------------------
1 | Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
2 |
3 | Ext.application({
4 | name: 'Todo',
5 | extend: 'Todo.Application',
6 | autoCreateViewport: true
7 | });
8 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/todo/app/Application.js:
--------------------------------------------------------------------------------
1 | Ext.define('Todo.Application', {
2 | name: 'Todo',
3 | extend: 'Ext.app.Application',
4 |
5 | views: [ 'MethodCall', 'FormActions', 'grid.GridActions', 'FormUpload', 'TreeActions',
6 | 'Cookies' ],
7 | models: [ 'TodoItem' ],
8 | stores: [ 'Tree' ]
9 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/todo/app/model/TodoItem.js:
--------------------------------------------------------------------------------
1 | Ext.define('Todo.model.TodoItem', {
2 | extend: 'Ext.data.Model',
3 |
4 | identifier: 'negative',
5 | fields: [ 'id', 'text', 'complete' ],
6 |
7 | proxy: {
8 | type: 'direct',
9 | api: {
10 | create: 'todoService.create',
11 | read: 'todoService.read',
12 | update: 'todoService.update',
13 | destroy: 'todoService.destroy'
14 | },
15 | writer: {
16 | writeAllFields: true
17 | }
18 | }
19 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/todo/app/store/Tree.js:
--------------------------------------------------------------------------------
1 | Ext.define('Todo.store.Tree', {
2 | extend: 'Ext.data.TreeStore',
3 |
4 | root: {
5 | expanded: true
6 | },
7 |
8 | proxy: {
9 | type: 'direct',
10 | directFn: 'todoServiceExt.getTree'
11 | }
12 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/todo/app/view/TreeActions.js:
--------------------------------------------------------------------------------
1 | Ext.define('Todo.view.TreeActions',{
2 | extend:'Ext.tree.Panel',
3 |
4 | store: 'Tree',
5 | border: false,
6 | title:'Tree Actions'
7 |
8 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/todo/app/view/Viewport.js:
--------------------------------------------------------------------------------
1 | Ext.define('Todo.view.Viewport', {
2 | extend: 'Ext.container.Viewport',
3 | requires: [ 'Ext.tab.Panel', 'Ext.layout.container.Border' ],
4 |
5 | layout: {
6 | type: 'border'
7 | },
8 |
9 | items: [ {
10 | region: 'center',
11 | xtype: 'tabpanel',
12 | items: [ {
13 | xclass: 'Todo.view.grid.GridActions'
14 | }, {
15 | xclass: 'Todo.view.MethodCall'
16 | }, {
17 | xclass: 'Todo.view.FormActions'
18 | }, {
19 | xclass: 'Todo.view.FormUpload'
20 | }, {
21 | xclass: 'Todo.view.TreeActions'
22 | }, {
23 | xclass: 'Todo.view.Cookies'
24 | } ]
25 | } ]
26 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/todo/app/view/grid/GridModel.js:
--------------------------------------------------------------------------------
1 | Ext.define('Todo.view.grid.GridModel', {
2 | extend: 'Ext.app.ViewModel',
3 | requires: [ 'Todo.model.TodoItem' ],
4 |
5 | data: {
6 | editTodo: false
7 | },
8 |
9 | formulas: {
10 | selectedTodo: function(get) {
11 | return get('todoGrid.selection');
12 | },
13 | todoSelected: function(get) {
14 | return !!get('selectedTodo');
15 | }
16 | },
17 |
18 | stores: {
19 | todos: {
20 | model: 'Todo.model.TodoItem',
21 | autoLoad: true,
22 | remoteSort: true,
23 | remoteFilter: true,
24 | pageSize: 0
25 | }
26 | }
27 |
28 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/todo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Todo
8 |
9 |
10 |
11 |
12 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/todo/resources/assets/arrow-circle-double-135.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/todo/resources/assets/arrow-circle-double-135.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/todo/resources/assets/information.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/todo/resources/assets/information.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/todo/resources/assets/minus-circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/todo/resources/assets/minus-circle.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/todo/resources/assets/pencil.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/todo/resources/assets/pencil.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/todo/resources/assets/plus-circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs5/todo/resources/assets/plus-circle.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/tree.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Ext.Direct Tree Integration
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Ext.Direct Tree Integration
16 |
17 | Source code: tree.js
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/tree.js:
--------------------------------------------------------------------------------
1 | Ext.require([ 'Ext.direct.*', 'Ext.data.*', 'Ext.tree.*' ]);
2 |
3 | Ext.onReady(function() {
4 | Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
5 |
6 | var store = Ext.create('Ext.data.TreeStore', {
7 | root: {
8 | expanded: true
9 | },
10 | nodeParam: 'id',
11 | proxy: {
12 | type: 'direct',
13 | directFn: treeProvider.getTree,
14 | extraParams: {
15 | foo: new Date()
16 | }
17 | }
18 | });
19 |
20 | // create the Tree
21 | Ext.create('Ext.tree.Panel', {
22 | store: store,
23 | height: 350,
24 | width: 600,
25 | title: 'Tree Sample',
26 | rootVisible: false,
27 | renderTo: Ext.getBody()
28 | });
29 |
30 | store.on("beforeload", function(store, operation) {
31 | store.getProxy().setExtraParam('foo', new Date());
32 | }, this);
33 |
34 | });
35 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs5/upload.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Ext Direct Form with Upload
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Ext Direct Form with Upload
16 |
17 |
18 | Source code: upload.js
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/association/Company.js:
--------------------------------------------------------------------------------
1 | Ext.define('Company', {
2 | extend: 'Ext.data.Model',
3 |
4 | idProperty: 'coId',
5 | fields: [ {
6 | name: 'coId'
7 | }, {
8 | name: 'company'
9 | }, {
10 | name: 'price'
11 | }, {
12 | name: 'change'
13 | }, {
14 | name: 'pctChange'
15 | }, {
16 | name: 'lastChange',
17 | type: 'date',
18 | dateFormat: 'c'
19 | } ],
20 |
21 | hasMany: {
22 | model: 'History',
23 | name: 'history',
24 | foreignKey: 'customerId'
25 | },
26 |
27 | proxy: {
28 | type: 'direct',
29 | directFn: 'areService.readWithHistory'
30 | }
31 |
32 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/association/History.js:
--------------------------------------------------------------------------------
1 | Ext.define('History', {
2 | extend: 'Ext.data.Model',
3 |
4 | fields: [ {
5 | name: 'id'
6 | }, {
7 | name: 'date',
8 | type: 'date',
9 | dateFormat: 'c'
10 | }, {
11 | name: 'text'
12 | }, {
13 | name: 'companyId',
14 | reference: 'Company'
15 | } ]
16 |
17 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/banchascaffold/img/icons/add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/banchascaffold/img/icons/add.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/banchascaffold/img/icons/arrow_undo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/banchascaffold/img/icons/arrow_undo.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/banchascaffold/img/icons/delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/banchascaffold/img/icons/delete.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/banchascaffold/img/icons/disk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/banchascaffold/img/icons/disk.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/banchascaffold/img/icons/image_add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/banchascaffold/img/icons/image_add.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/banchascaffold/img/icons/user_edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/banchascaffold/img/icons/user_edit.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/bigdata/BigDataStore.js:
--------------------------------------------------------------------------------
1 | Ext.define('BigDataStore', {
2 | extend: 'Ext.data.Store',
3 | storeId: 'BigDataStore',
4 | model: 'Employee',
5 |
6 | groupField: 'department',
7 |
8 | proxy: {
9 | type: 'direct',
10 | api: {
11 | read: 'employeeService.read',
12 | update: 'employeeService.update'
13 | },
14 | writer : {
15 | writeAllFields : true
16 | }
17 | },
18 |
19 | autoLoad: true,
20 | autoSync : true
21 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/bigdata/images.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/bigdata/images.jpg
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/carstore/app.js:
--------------------------------------------------------------------------------
1 | Ext.application({
2 | name: 'Carstore',
3 | extend: 'Ext.app.Application',
4 | autoCreateViewport: 'Carstore.view.CarListings',
5 |
6 | constructor: function() {
7 | Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
8 | this.callParent(arguments);
9 | }
10 |
11 | });
12 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/carstore/app/model/CarModel.js:
--------------------------------------------------------------------------------
1 | Ext.define('Carstore.model.CarModel', {
2 | extend: 'Ext.data.Model',
3 |
4 | fields: [ 'manufacturer', 'model', 'price', 'wiki', 'img', 'quality' ],
5 |
6 | proxy: {
7 | type: 'direct',
8 | directFn: 'carService.read'
9 | }
10 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/carstore/app/view/CarController.js:
--------------------------------------------------------------------------------
1 | Ext.define('Carstore.view.CarController', {
2 | extend: 'Ext.app.ViewController',
3 |
4 | init: function(view) {
5 | var carStore = this.getStore('carStore');
6 | carStore.load({
7 | scope: this,
8 | callback: function() {
9 | this.lookupReference('carGrid').setSelection(carStore.first());
10 | }
11 | });
12 | },
13 |
14 | onGridSelectionChange: function(grid, selected) {
15 | this.lookupReference('carDetail').update(selected[0]);
16 | this.getStore('chartStore').loadData(selected[0].data.quality);
17 | this.lookupReference('wikiFrame').down('uxiframe').load(selected[0].data.wiki);
18 | }
19 |
20 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/carstore/app/view/CarModel.js:
--------------------------------------------------------------------------------
1 | Ext.define('Carstore.view.CarModel', {
2 | extend: 'Ext.app.ViewModel',
3 | requires: [ 'Carstore.model.CarModel' ],
4 |
5 | stores: {
6 | carStore: {
7 | model: 'Carstore.model.CarModel',
8 | autoLoad: false,
9 | pageSize: 0
10 | },
11 | chartStore: {
12 | fields: [ 'name', 'rating' ]
13 | }
14 | }
15 |
16 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/carstore/data/2004_Porsche_911_Carrera_type_997.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/carstore/data/2004_Porsche_911_Carrera_type_997.jpg
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/carstore/data/250px-2007_Audi_TT_Coupe.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/carstore/data/250px-2007_Audi_TT_Coupe.jpg
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/carstore/data/250px-Audi_S5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/carstore/data/250px-Audi_S5.jpg
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/carstore/data/250px-BMW_M3_E92.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/carstore/data/250px-BMW_M3_E92.jpg
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/carstore/data/250px-Nissan_GT-R.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/carstore/data/250px-Nissan_GT-R.jpg
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/carstore/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Car Store
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/executive-dashboard/app.js:
--------------------------------------------------------------------------------
1 | Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
2 | Ext.application({
3 | name: 'ExecDashboard',
4 | extend: 'ExecDashboard.Application',
5 | autoCreateViewport: 'ExecDashboard.view.main.Main'
6 | });
7 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/executive-dashboard/app/Application.js:
--------------------------------------------------------------------------------
1 | Ext.define('ExecDashboard.Application', {
2 | extend: 'Ext.app.Application',
3 | name: 'ExecDashboard',
4 | requires: ['ExecDashboard.ux.plugin.RowExpander'],
5 |
6 | // The tab we want to activate if there is no "#tag" in the URL.
7 | defaultToken: '!kpi/clicks',
8 |
9 | views: [ 'ExecDashboard.view.main.Main' ],
10 |
11 | launch: function() {
12 | // Let's add a CSS class to body if flex box wrap is not implemented or broken
13 | // http://flexboxlayouts.com/flexboxlayout_tricks.html
14 | if (Ext.browser.is.Gecko && Ext.browser.version.major < 28) {
15 | Ext.getBody().addCls('x-flex-wrap-broken');
16 | }
17 | }
18 | });
19 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/executive-dashboard/app/model/Base.js:
--------------------------------------------------------------------------------
1 | Ext.define('ExecDashboard.model.Base', {
2 | extend: 'Ext.data.Model',
3 |
4 | schema: {
5 | namespace: 'ExecDashboard.model'
6 | }
7 | });
8 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/executive-dashboard/app/model/FullProfitloss.js:
--------------------------------------------------------------------------------
1 | Ext.define('ExecDashboard.model.FullProfitloss', {
2 | extend: 'ExecDashboard.model.Base',
3 |
4 | fields: [ 'account', {
5 | name: 'q1_2010',
6 | type: 'int'
7 | }, {
8 | name: 'q2_2010',
9 | type: 'int'
10 | }, {
11 | name: 'q3_2010',
12 | type: 'int'
13 | }, {
14 | name: 'q4_2010',
15 | type: 'int'
16 | }, {
17 | name: 'q1_2011',
18 | type: 'int'
19 | }, {
20 | name: 'q2_2011',
21 | type: 'int'
22 | }, {
23 | name: 'q3_2011',
24 | type: 'int'
25 | }, {
26 | name: 'q4_2011',
27 | type: 'int'
28 | }, {
29 | name: 'q1_2012',
30 | type: 'int'
31 | }, {
32 | name: 'q2_2012',
33 | type: 'int'
34 | }, 'region' ]
35 | });
36 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/executive-dashboard/app/model/Kpi.js:
--------------------------------------------------------------------------------
1 | Ext.define('ExecDashboard.model.Kpi', {
2 | extend: 'ExecDashboard.model.Base',
3 |
4 | fields: [ 'category', 'name', 'data1', 'data2' ]
5 | });
6 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/executive-dashboard/app/model/News.js:
--------------------------------------------------------------------------------
1 | Ext.define('ExecDashboard.model.News', {
2 | extend: 'ExecDashboard.model.Base',
3 |
4 | fields: [ 'type', {
5 | name: 'date',
6 | type: 'date',
7 | dateFormat: 'Y-m-d H:i:s'
8 | }, 'time', 'author', 'group', 'image', 'title', 'paragraph' ]
9 | });
10 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/executive-dashboard/app/model/StockOHLC.js:
--------------------------------------------------------------------------------
1 | Ext.define('ExecDashboard.model.StockOHLC', {
2 | extend: 'ExecDashboard.model.Base',
3 |
4 | fields: [ 'company', {
5 | name: 'time',
6 | type: 'date',
7 | dateFormat: 'Y-m-d'
8 | }, 'open', 'high', 'low', 'close' ]
9 | });
10 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/executive-dashboard/app/view/kpi/KpiController.js:
--------------------------------------------------------------------------------
1 | Ext.define('ExecDashboard.view.kpi.KpiController', {
2 | extend: 'Ext.app.ViewController',
3 | alias: 'controller.kpi',
4 |
5 | init: function (view) {
6 | // We provide the updater for the activeState config of our View.
7 | view.updateActiveState = this.updateActiveState.bind(this);
8 | },
9 |
10 | onToggleKpi: function(button) {
11 | if (button.pressed) {
12 | var view = this.getView();
13 | view.setActiveState(button.filter);
14 | }
15 | },
16 |
17 | updateActiveState: function (activeState) {
18 | var refs = this.getReferences();
19 | var viewModel = this.getViewModel();
20 |
21 | refs[activeState].setPressed(true);
22 | viewModel.set('kpiCategory', activeState);
23 |
24 | this.fireEvent('changeroute', this, 'kpi/' + activeState);
25 | }
26 | });
27 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/executive-dashboard/app/view/kpi/KpiModel.js:
--------------------------------------------------------------------------------
1 | Ext.define('ExecDashboard.view.kpi.KpiModel', {
2 | extend: 'Ext.app.ViewModel',
3 | alias: 'viewmodel.kpi',
4 |
5 | requires: [
6 | 'ExecDashboard.model.Kpi'
7 | ],
8 |
9 | data: {
10 | // This property is placed in the ViewModel by routing
11 | // kpiCategory: null
12 | },
13 |
14 | stores: {
15 | kpiMain: {
16 | model: 'ExecDashboard.model.Kpi',
17 | autoLoad: true,
18 | pageSize: 0,
19 | remoteFilter: true,
20 | filters: {
21 | property: 'category',
22 | value: '{kpiCategory}'
23 | },
24 | proxy: {
25 | type: 'direct',
26 | directFn: execDashboardService.readKpi
27 | },
28 | }
29 | }
30 | });
31 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/executive-dashboard/app/view/main/MainModel.js:
--------------------------------------------------------------------------------
1 | Ext.define('ExecDashboard.view.main.MainModel', {
2 | extend: 'Ext.app.ViewModel',
3 |
4 | alias: 'viewmodel.main',
5 |
6 | data: {
7 | name: 'ExecDashboard'
8 | }
9 | });
10 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/executive-dashboard/app/view/profitloss/ProfitLossModel.js:
--------------------------------------------------------------------------------
1 | Ext.define('ExecDashboard.view.profitloss.ProfitLossModel', {
2 | extend: 'Ext.app.ViewModel',
3 | alias: 'viewmodel.profitloss',
4 |
5 | requires: [ 'ExecDashboard.model.FullProfitloss' ],
6 |
7 | stores: {
8 | profitloss: {
9 | model: 'ExecDashboard.model.FullProfitloss',
10 | autoLoad: false,
11 | remoteFilter: false,
12 | remoteSort: false,
13 | groupField: 'account',
14 | proxy: {
15 | type: 'direct',
16 | directFn: execDashboardService.readProfitloss
17 | }
18 | }
19 | }
20 | });
21 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/executive-dashboard/app/view/quarterly/QuarterlyController.js:
--------------------------------------------------------------------------------
1 | Ext.define('ExecDashboard.view.quarterly.QuarterlyController', {
2 | extend: 'Ext.app.ViewController',
3 | alias: 'controller.quarterly',
4 |
5 | init: function(view) {
6 | view.updateActiveState = this.updateActiveState.bind(this);
7 | },
8 |
9 | menuItemClick: function(button, menuitem) {
10 | this.getView().setActiveState(menuitem.text);
11 | },
12 |
13 | updateActiveState: function(activeState) {
14 |
15 | var viewModel = this.getViewModel();
16 | viewModel.set('company', activeState);
17 |
18 | execDashboardService.readCompanyData(activeState, function(result) {
19 | viewModel.set('companyData', result);
20 | });
21 |
22 | this.fireEvent('changeroute', this, 'quarterly/' + activeState);
23 | }
24 | });
25 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/executive-dashboard/app/view/quarterly/QuarterlyModel.js:
--------------------------------------------------------------------------------
1 | Ext.define('ExecDashboard.view.quarterly.QuarterlyModel', {
2 | extend: 'Ext.app.ViewModel',
3 | alias: 'viewmodel.quarterly',
4 |
5 | requires: [ 'ExecDashboard.model.StockOHLC' ],
6 |
7 | data: {
8 | // Set by the router
9 | company: null,
10 | stockRange: '2Y'
11 | },
12 |
13 | stores: {
14 | stocks: {
15 | model: 'ExecDashboard.model.StockOHLC',
16 | autoLoad: true,
17 | remoteFilter: true,
18 | remoteSort: true,
19 | filters: {
20 | property: 'company',
21 | value: '{company}'
22 | },
23 | proxy: {
24 | type: 'direct',
25 | directFn: execDashboardService.readStockOHLC
26 | },
27 | },
28 |
29 | statements: {
30 | fields: [ 'name', 'thumb', 'url', 'type' ],
31 | proxy: {
32 | type: 'direct',
33 | directFn: execDashboardService.readStatements
34 | },
35 | autoLoad: true
36 | }
37 | }
38 | });
39 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/executive-dashboard/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Executive Dashboard
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/feed/app.js:
--------------------------------------------------------------------------------
1 | Ext.application({
2 | requires: ['Ext.direct.*'],
3 | name: 'Feed',
4 | extend: 'Ext.app.Application',
5 | autoCreateViewport: true,
6 |
7 | constructor: function() {
8 | Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
9 | this.callParent(arguments);
10 | }
11 |
12 | });
13 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/feed/app/model/Feed.js:
--------------------------------------------------------------------------------
1 | Ext.define('Feed.model.Feed', {
2 | extend: 'Ext.data.Model',
3 |
4 | fields: [ 'id', 'title', 'url' ],
5 |
6 | proxy: {
7 | type: 'direct',
8 | api: {
9 | read: 'feedService.read',
10 | destroy: 'feedService.destroy'
11 | }
12 | }
13 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/feed/app/model/FeedItem.js:
--------------------------------------------------------------------------------
1 | Ext.define('Feed.model.FeedItem', {
2 | extend: 'Ext.data.Model',
3 |
4 | fields: [ 'id', 'title', 'author', 'link', {
5 | name: 'pubDate',
6 | type: 'date',
7 | dateFormat: 'c'
8 | }, 'description', 'content' ],
9 |
10 | proxy: {
11 | type: 'direct',
12 | api: {
13 | read: 'feedService.readFeedItem'
14 | }
15 | }
16 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/feed/app/view/FeedModel.js:
--------------------------------------------------------------------------------
1 | Ext.define('Feed.view.FeedModel', {
2 | extend: 'Ext.app.ViewModel',
3 | requires: [ 'Feed.model.Feed', 'Feed.model.FeedItem' ],
4 |
5 | data: {
6 | selectedFeed: false,
7 | selectedFeedItem: false
8 | },
9 |
10 | stores: {
11 | feedStore: {
12 | model: 'Feed.model.Feed',
13 | autoLoad: true,
14 | autoSync: true,
15 | pageSize: 0
16 | },
17 | feedItemStore: {
18 | model: 'Feed.model.FeedItem',
19 | autoLoad: false,
20 | pageSize: 0
21 | }
22 | }
23 |
24 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/feed/app/view/FeedPanel.js:
--------------------------------------------------------------------------------
1 | Ext.define('Feed.view.FeedPanel', {
2 | extend: 'Ext.panel.Panel',
3 | animCollapse: true,
4 | layout: 'fit',
5 | title: 'Feeds',
6 |
7 | items: [ {
8 | xtype: 'dataview',
9 | autoScroll: true,
10 | bind: {
11 | store: '{feedStore}'
12 | },
13 | trackOver: true,
14 | cls: 'feed-list',
15 | itemSelector: '.feed-list-item',
16 | overItemCls: 'feed-list-item-hover',
17 | tpl: '{title}
',
18 | listeners: {
19 | select: 'feedSelected'
20 | }
21 | } ],
22 |
23 | dockedItems: [ {
24 | xtype: 'toolbar',
25 | dock: 'top',
26 | items: [ {
27 | text: 'Add',
28 | iconCls: 'feed-add',
29 | handler: 'openFeedWindow'
30 | }, {
31 | text: 'Remove',
32 | iconCls: 'feed-remove',
33 | handler: 'removeFeed',
34 | bind: {
35 | disabled: '{!selectedFeed}'
36 | }
37 | } ]
38 | } ]
39 |
40 | });
41 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/feed/app/view/FeedTabPanel.js:
--------------------------------------------------------------------------------
1 | Ext.define('Feed.view.FeedTabPanel', {
2 | extend: 'Ext.tab.Panel',
3 |
4 | reference: 'feedTabPanel',
5 | bind: {
6 | hidden: '{!selectedFeed}'
7 | },
8 |
9 | maxTabWidth: 230,
10 | border: false,
11 |
12 | plugins: [ {
13 | ptype: 'tabclosemenu'
14 | } ]
15 |
16 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/feed/app/view/Viewport.js:
--------------------------------------------------------------------------------
1 | Ext.define('Feed.view.Viewport', {
2 | extend: 'Ext.container.Viewport',
3 | requires: [ 'Feed.view.FeedModel', 'Feed.view.FeedController', 'Feed.view.FeedPanel',
4 | 'Feed.view.FeedTabPanel' ],
5 |
6 | controller: {
7 | xclass: 'Feed.view.FeedController'
8 | },
9 |
10 | viewModel: {
11 | xclass: 'Feed.view.FeedModel'
12 | },
13 |
14 | layout: {
15 | type: 'border',
16 | padding: 5
17 | },
18 |
19 | items: [ {
20 | xclass: 'Feed.view.FeedPanel',
21 | region: 'west',
22 | collapsible: true,
23 | width: 225,
24 | split: true,
25 | minWidth: 175
26 | }, {
27 | xclass: 'Feed.view.FeedTabPanel',
28 | region: 'center',
29 | minWidth: 300
30 | } ]
31 |
32 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/feed/images/article.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/feed/images/article.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/feed/images/details.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/feed/images/details.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/feed/images/post.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/feed/images/post.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/feed/images/post_go.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/feed/images/post_go.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/feed/images/preview-bottom.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/feed/images/preview-bottom.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/feed/images/preview-hide.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/feed/images/preview-hide.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/feed/images/preview-right.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/feed/images/preview-right.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/feed/images/rss.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/feed/images/rss.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/feed/images/rss_add.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/feed/images/rss_add.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/feed/images/rss_delete.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/feed/images/rss_delete.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/feed/images/rss_load.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/feed/images/rss_load.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/feed/images/tab_new.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/feed/images/tab_new.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/feed/images/tabs.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/feed/images/tabs.gif
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/form.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Ext.Direct Form Integration
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Ext Direct Form Integration
16 |
17 | Source code: form.js
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/grid.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Ext Direct Grid Integration
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Ext.Direct Grid Integration
16 |
17 |
18 | Source code: grid.js
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/gridfilter.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Ext Direct GridPanel with Filter
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Ext Direct GridPanel with Filter
16 |
17 |
18 | Source code: gridfilter.js
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/infographic/sencha.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/infographic/sencha.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/infographic/store.js:
--------------------------------------------------------------------------------
1 | Ext.define('Infographic.Store', {
2 | extend: 'Ext.data.Store',
3 | alias: 'store.unemployment',
4 | fields: ['label', 'span', 'y2007', 'y2008', 'y2009', 'y2010', 'y2011', 'y2012', 'state'],
5 | autoLoad: true,
6 | proxy: {
7 | type: 'direct',
8 | directFn: 'infographicService.getUnemployments'
9 | }
10 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/metadata.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | GridPanel with MetaData from server
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | GridPanel with MetaData from server
17 |
18 |
19 | Source code: metadata.js
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/sch/bbc.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | BBC Radio Schedule
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/sch/charting.css:
--------------------------------------------------------------------------------
1 | .carimg {
2 | float : left;
3 | width : 50%;
4 | border : 1px solid #ddd;
5 | }
6 |
7 | dl.cardescr {
8 | float : right;
9 | }
10 |
11 | .cardescr dt {
12 | font-size : 13px;
13 | font-weight : bold;
14 | color : Navy;
15 | text-align : right;
16 | }
17 |
18 | .cardescr dd {
19 | color : #999;
20 | margin-top : 5px;
21 | }
22 |
23 | .dayShift {
24 | background : url(sun.png) no-repeat 4px center;
25 | }
26 |
27 | .nightShift {
28 | background : url(bluemoon.png) no-repeat 4px center;
29 | }
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/session/ChildSessionModel.js:
--------------------------------------------------------------------------------
1 | /**
2 | * This ViewModel provides data for the ChildSession view.
3 | */
4 | Ext.define('ChildSessionModel', {
5 | extend: 'Ext.app.ViewModel',
6 |
7 | data: {
8 | selectedCustomer: false
9 | },
10 |
11 | stores: {
12 | // Define a store of Customer records that links to the Session.
13 | customers: {
14 | model: 'Customer',
15 | autoLoad: true,
16 | session: true
17 | }
18 | }
19 | });
20 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/session/Customer.js:
--------------------------------------------------------------------------------
1 | Ext.define('Customer', {
2 | extend: 'Ext.data.Model',
3 | identifier: 'negative',
4 |
5 | fields: [ 'id', 'name', {
6 | name: 'phone',
7 | type: 'phonenumber'
8 | } ],
9 |
10 | proxy: {
11 | type: 'direct',
12 | api: {
13 | create: sessionService.customerCreate,
14 | read: sessionService.customerRead,
15 | update: sessionService.customerUpdate,
16 | destroy: sessionService.customerDestroy
17 | }
18 | },
19 |
20 | validators: {
21 | name: 'presence'
22 | }
23 | });
24 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/session/Order.js:
--------------------------------------------------------------------------------
1 | Ext.define('Order', {
2 | extend: 'Ext.data.Model',
3 | identifier: 'negative',
4 |
5 | fields: [ 'id', {
6 | name: 'date',
7 | type: 'date',
8 | dateFormat: 'Y-m-d'
9 | }, 'shipped', {
10 | name: 'customerId',
11 | reference: {
12 | parent: 'Customer'
13 | }
14 | } ],
15 |
16 | proxy: {
17 | type: 'direct',
18 | api: {
19 | create: sessionService.orderCreate,
20 | read: sessionService.orderRead,
21 | update: sessionService.orderUpdate,
22 | destroy: sessionService.orderDestroy
23 | }
24 | }
25 | });
26 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/session/PhoneNumber.js:
--------------------------------------------------------------------------------
1 | Ext.define('PhoneNumber', {
2 | extend: 'Ext.data.field.String',
3 | alias: 'data.field.phonenumber',
4 |
5 | validators: [ {
6 | type: 'format',
7 | matcher: /^\d{3}-?\d{3}-?\d{4}$/,
8 | message: 'Must be in the format xxx-xxx-xxxx'
9 | } ]
10 | });
11 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/simple-task/app.js:
--------------------------------------------------------------------------------
1 | Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
2 | Ext.application({
3 | name: 'SimpleTasks',
4 | extend: 'SimpleTasks.Application',
5 | autoCreateViewport: true
6 | });
7 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/simple-task/app/Application.js:
--------------------------------------------------------------------------------
1 | Ext.define('SimpleTasks.Application', {
2 | name: 'SimpleTasks',
3 | extend: 'Ext.app.Application',
4 |
5 | controllers: [
6 | 'Lists',
7 | 'Tasks'
8 | ]
9 |
10 | });
11 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/simple-task/app/model/List.js:
--------------------------------------------------------------------------------
1 | Ext.define('SimpleTasks.model.List', {
2 | extend: 'Ext.data.TreeModel',
3 |
4 | identifier: 'negative',
5 |
6 | fields: [ {
7 | name: 'id',
8 | type: 'int'
9 | }, {
10 | name: 'name'
11 | } ],
12 |
13 | proxy: {
14 | type: 'direct',
15 | api: {
16 | create: listService.create,
17 | read: listService.read,
18 | update: listService.update,
19 | destroy: listService.destroy
20 | }
21 | }
22 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/simple-task/app/model/Task.js:
--------------------------------------------------------------------------------
1 | Ext.define('SimpleTasks.model.Task', {
2 | extend: 'Ext.data.Model',
3 |
4 | identifier: 'negative',
5 |
6 | fields: [ {
7 | name: 'id',
8 | type: 'int'
9 | }, {
10 | name: 'title'
11 | }, {
12 | name: 'list_id',
13 | type: 'int'
14 | }, {
15 | name: 'due',
16 | type: 'date',
17 | dateFormat: 'Y-m-d'
18 | }, {
19 | name: 'reminder',
20 | type: 'date',
21 | dateFormat: 'c'
22 | }, {
23 | name: 'done',
24 | type: 'boolean',
25 | defaultValue: false
26 | }, {
27 | name: 'note'
28 | } ],
29 |
30 | proxy: {
31 | type: 'direct',
32 | api: {
33 | create: simpleTaskService.create,
34 | read: simpleTaskService.read,
35 | update: simpleTaskService.update,
36 | destroy: simpleTaskService.destroy
37 | }
38 | }
39 |
40 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/simple-task/app/store/Lists.js:
--------------------------------------------------------------------------------
1 | Ext.define('SimpleTasks.store.Lists', {
2 | extend: 'Ext.data.TreeStore',
3 | model: 'SimpleTasks.model.List',
4 | root: {
5 | expanded: true,
6 | id: 0,
7 | name: 'All Lists'
8 | }
9 |
10 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/simple-task/app/store/Tasks.js:
--------------------------------------------------------------------------------
1 | Ext.define('SimpleTasks.store.Tasks', {
2 | extend: 'Ext.data.Store',
3 | model: 'SimpleTasks.model.Task',
4 | pageSize: 0, // disable paging
5 | grouper: {
6 | property: 'due',
7 | // Use the group string here so we don't need to worry about time
8 | // during any grouping based comparisons
9 | groupFn: function(rec) {
10 | return Ext.Date.format(rec.get('due'), 'Y-m-d');
11 | }
12 | }
13 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/simple-task/app/view/Viewport.js:
--------------------------------------------------------------------------------
1 | Ext.define('SimpleTasks.view.Viewport', {
2 | extend: 'Ext.container.Viewport',
3 |
4 | layout: 'border',
5 |
6 | items: [ {
7 | xtype: 'tasksToolbar',
8 | region: 'north'
9 | }, {
10 | xtype: 'listTree',
11 | region: 'west',
12 | width: 300,
13 | collapsible: true,
14 | split: true
15 | }, {
16 | region: 'center',
17 | xtype: 'taskGrid',
18 | title: 'All Lists'
19 | } ]
20 |
21 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/simple-task/app/view/lists/ContextMenu.js:
--------------------------------------------------------------------------------
1 | Ext.define('SimpleTasks.view.lists.ContextMenu', {
2 | extend: 'Ext.menu.Menu',
3 | xtype: 'listsContextMenu',
4 | items: [ {
5 | text: 'New List',
6 | iconCls: 'tasks-new-list',
7 | id: 'new-list-item'
8 | }, {
9 | text: 'New Folder',
10 | iconCls: 'tasks-new-folder',
11 | id: 'new-folder-item'
12 | }, {
13 | text: 'New Task',
14 | iconCls: 'tasks-new',
15 | id: 'new-task-item'
16 | }, '-', {
17 | text: 'Delete',
18 | iconCls: 'tasks-delete-folder',
19 | id: 'delete-folder-item'
20 | }, {
21 | text: 'Delete',
22 | iconCls: 'tasks-delete-list',
23 | id: 'delete-list-item'
24 | } ],
25 |
26 | setList: function(list) {
27 | this.list = list;
28 | },
29 |
30 | getList: function() {
31 | return this.list;
32 | }
33 |
34 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/simple-task/app/view/tasks/ContextMenu.js:
--------------------------------------------------------------------------------
1 | Ext.define('SimpleTasks.view.tasks.ContextMenu', {
2 | extend: 'Ext.menu.Menu',
3 | xtype: 'tasksContextMenu',
4 | items: [ {
5 | text: 'Edit',
6 | id: 'edit-task-item'
7 | }, '-', {
8 | text: 'Mark Complete',
9 | iconCls: 'tasks-mark-complete',
10 | id: 'mark-complete-item'
11 | }, {
12 | text: 'Mark Active',
13 | iconCls: 'tasks-mark-active',
14 | id: 'mark-active-item'
15 | }, {
16 | text: 'Delete',
17 | iconCls: 'tasks-delete-task',
18 | id: 'delete-task-item'
19 | } ],
20 |
21 | setTask: function(task) {
22 | this.task = task;
23 | },
24 |
25 | getTask: function() {
26 | return this.task;
27 | }
28 |
29 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/simple-task/app/view/tasks/Form.js:
--------------------------------------------------------------------------------
1 | Ext.define('SimpleTasks.view.tasks.Form', {
2 | extend: 'Ext.form.Panel',
3 | xtype: 'taskForm',
4 | requires: [ 'Ext.ux.TreePicker' ],
5 | layout: 'hbox',
6 | cls: 'tasks-new-form',
7 |
8 | initComponent: function() {
9 | this.items = [ {
10 | xtype: 'component',
11 | cls: 'tasks-new',
12 | width: 24,
13 | height: 24
14 | }, {
15 | xtype: 'textfield',
16 | name: 'title',
17 | emptyText: 'Add a new task'
18 | }, {
19 | xtype: 'treepicker',
20 | name: 'list_id',
21 | displayField: 'name',
22 | store: Ext.data.StoreManager.lookup('Lists'),
23 | width: 195
24 | }, {
25 | xtype: 'datefield',
26 | name: 'due',
27 | value: new Date(),
28 | width: 95
29 | } ];
30 |
31 | this.callParent(arguments);
32 | }
33 |
34 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/simple-task/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | SimpleTasks
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/simple/app.js:
--------------------------------------------------------------------------------
1 | Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
2 |
3 | Ext.application({
4 | name: 'Simple',
5 | extend: 'Simple.Application',
6 | autoCreateViewport: 'Simple.view.user.List'
7 | });
8 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/simple/app/Application.js:
--------------------------------------------------------------------------------
1 | Ext.define('Simple.Application', {
2 | extend: 'Ext.app.Application',
3 | name: 'Simple'
4 | });
5 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/simple/app/view/user/UserModel.js:
--------------------------------------------------------------------------------
1 | Ext.define('Simple.view.user.UserModel', {
2 | extend: 'Ext.app.ViewModel',
3 | requires: [ 'Simple.model.User' ],
4 |
5 | formulas: {
6 | selectedUser: function(get) {
7 | return get('userGrid.selection');
8 | },
9 | userSelected: function(get) {
10 | return !!get('selectedUser');
11 | },
12 | editUserValid: {
13 | bind: {
14 | bindTo: '{editUser}',
15 | deep: true
16 | },
17 | get: function(data) {
18 | return data.isValid();
19 | }
20 | }
21 | },
22 |
23 | stores: {
24 | userStore: {
25 | model: 'Simple.model.User',
26 | autoLoad: false,
27 | remoteSort: true,
28 | remoteFilter: true,
29 | pageSize: 30,
30 | autoSync: false,
31 | sorters: [ {
32 | property: 'lastName',
33 | direction: 'ASC'
34 | } ]
35 | }
36 | }
37 |
38 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/simple/css/add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/simple/css/add.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/simple/css/app.css:
--------------------------------------------------------------------------------
1 | .icon-add {
2 | background-image: url(add.png) !important;
3 | }
4 |
5 | .icon-delete {
6 | background-image: url(delete.png) !important;
7 | }
8 |
9 | .icon-info {
10 | background-image: url(information.png) !important;
11 | }
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/simple/css/delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/simple/css/delete.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/simple/css/information.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/simple/css/information.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/simple/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Account Manager
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/spreadsheet/SpreadsheetModel.js:
--------------------------------------------------------------------------------
1 | Ext.define('SpreadsheetModel', {
2 | extend: 'Ext.app.ViewModel',
3 |
4 | stores: {
5 | monthlySales: {
6 | model: 'MonthlySales',
7 | autoLoad: true,
8 | autoSync: true,
9 | pageSize: 0
10 | }
11 | }
12 |
13 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/task/app.js:
--------------------------------------------------------------------------------
1 | Ext.require(['Ext.direct.Manager','Ext.direct.RemotingProvider', 'Ext.data.proxy.Direct'], function() {
2 | Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
3 | });
4 |
5 | Ext.application({
6 | name: 'Task',
7 | extend: 'Task.Application',
8 | autoCreateViewport: true
9 | });
10 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/task/app/Application.js:
--------------------------------------------------------------------------------
1 | Ext.define('Task.Application', {
2 | name: 'Task',
3 | extend: 'Ext.app.Application',
4 |
5 | views: [ 'TaskForm' ],
6 | models: [ 'Task' ]
7 | });
8 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/task/app/model/Task.js:
--------------------------------------------------------------------------------
1 | Ext.define('Task.model.Task', {
2 | extend: 'Ext.data.Model',
3 | identifier: 'negative',
4 | fields: [ {
5 | name: 'id'
6 | }, {
7 | name: 'title'
8 | }, {
9 | name: 'description'
10 | }, {
11 | name: 'dueDate',
12 | type: 'date',
13 | dateFormat: 'Y-m-d'
14 | }, {
15 | name: 'priority'
16 | } ],
17 |
18 | proxy: {
19 | type: 'direct',
20 | api: {
21 | create: 'taskService.create',
22 | read: 'taskService.read',
23 | update: 'taskService.update',
24 | destroy: 'taskService.destroy'
25 | },
26 | writer: {
27 | writeAllFields: true
28 | }
29 | }
30 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/task/app/view/TaskModel.js:
--------------------------------------------------------------------------------
1 | Ext.define('Task.view.TaskModel', {
2 | extend: 'Ext.app.ViewModel',
3 | requires: [ 'Task.model.Task' ],
4 |
5 | data: {
6 | detailTask: false
7 | },
8 |
9 | formulas: {
10 | selectedTask: function(get) {
11 | return get('taskGrid.selection');
12 | }
13 | },
14 |
15 | stores: {
16 | tasks: {
17 | model: 'Task.model.Task',
18 | autoLoad: true,
19 | pageSize: 0
20 | },
21 | priorities: {
22 | autoLoad: true,
23 | data: [ {
24 | id: 'HIGH',
25 | priority: 'HIGH'
26 | }, {
27 | id: 'NORMAL',
28 | priority: 'NORMAL'
29 | }, {
30 | id: 'LOW',
31 | priority: 'LOW'
32 | } ],
33 | fields: [ 'id', 'priority' ]
34 | }
35 | }
36 |
37 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/task/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Tasks
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/task/resources/images/HIGH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/task/resources/images/HIGH.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/task/resources/images/LOW.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/task/resources/images/LOW.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/task/resources/images/NORMAL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/task/resources/images/NORMAL.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/task/resources/images/add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/task/resources/images/add.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/task/resources/images/delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/task/resources/images/delete.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/task/resources/images/edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/task/resources/images/edit.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/task/resources/styles/app.css:
--------------------------------------------------------------------------------
1 | /* Custom CSS styles can be added here */
2 |
3 | /* all */
4 | body { font-size: 1.4em; }
5 |
6 | /* main panel title */
7 | .main-title { font-size: 1.8em; padding: 8px; }
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/todo/app.js:
--------------------------------------------------------------------------------
1 | Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
2 |
3 | Ext.application({
4 | name: 'Todo',
5 | extend: 'Todo.Application',
6 | autoCreateViewport: true
7 | });
8 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/todo/app/Application.js:
--------------------------------------------------------------------------------
1 | Ext.define('Todo.Application', {
2 | name: 'Todo',
3 | extend: 'Ext.app.Application',
4 |
5 | views: [ 'MethodCall', 'FormActions', 'grid.GridActions', 'FormUpload', 'TreeActions',
6 | 'Cookies' ],
7 | models: [ 'TodoItem' ],
8 | stores: [ 'Tree' ]
9 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/todo/app/model/TodoItem.js:
--------------------------------------------------------------------------------
1 | Ext.define('Todo.model.TodoItem', {
2 | extend: 'Ext.data.Model',
3 |
4 | identifier: 'negative',
5 | fields: [ 'id', 'text', 'complete' ],
6 |
7 | proxy: {
8 | type: 'direct',
9 | api: {
10 | create: 'todoService.create',
11 | read: 'todoService.read',
12 | update: 'todoService.update',
13 | destroy: 'todoService.destroy'
14 | },
15 | writer: {
16 | writeAllFields: true
17 | }
18 | }
19 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/todo/app/store/Tree.js:
--------------------------------------------------------------------------------
1 | Ext.define('Todo.store.Tree', {
2 | extend: 'Ext.data.TreeStore',
3 |
4 | root: {
5 | expanded: true
6 | },
7 |
8 | proxy: {
9 | type: 'direct',
10 | directFn: 'todoServiceExt.getTree'
11 | }
12 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/todo/app/view/TreeActions.js:
--------------------------------------------------------------------------------
1 | Ext.define('Todo.view.TreeActions',{
2 | extend:'Ext.tree.Panel',
3 |
4 | store: 'Tree',
5 | border: false,
6 | title:'Tree Actions'
7 |
8 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/todo/app/view/Viewport.js:
--------------------------------------------------------------------------------
1 | Ext.define('Todo.view.Viewport', {
2 | extend: 'Ext.container.Viewport',
3 | requires: [ 'Ext.tab.Panel', 'Ext.layout.container.Border' ],
4 |
5 | layout: {
6 | type: 'border'
7 | },
8 |
9 | items: [ {
10 | region: 'center',
11 | xtype: 'tabpanel',
12 | items: [ {
13 | xclass: 'Todo.view.grid.GridActions'
14 | }, {
15 | xclass: 'Todo.view.MethodCall'
16 | }, {
17 | xclass: 'Todo.view.FormActions'
18 | }, {
19 | xclass: 'Todo.view.FormUpload'
20 | }, {
21 | xclass: 'Todo.view.TreeActions'
22 | }, {
23 | xclass: 'Todo.view.Cookies'
24 | } ]
25 | } ]
26 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/todo/app/view/grid/GridModel.js:
--------------------------------------------------------------------------------
1 | Ext.define('Todo.view.grid.GridModel', {
2 | extend: 'Ext.app.ViewModel',
3 | requires: [ 'Todo.model.TodoItem' ],
4 |
5 | data: {
6 | editTodo: false
7 | },
8 |
9 | formulas: {
10 | selectedTodo: function(get) {
11 | return get('todoGrid.selection');
12 | },
13 | todoSelected: function(get) {
14 | return !!get('selectedTodo');
15 | }
16 | },
17 |
18 | stores: {
19 | todos: {
20 | model: 'Todo.model.TodoItem',
21 | autoLoad: true,
22 | remoteSort: true,
23 | remoteFilter: true,
24 | pageSize: 0
25 | }
26 | }
27 |
28 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/todo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Todo
8 |
9 |
10 |
11 |
12 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/todo/resources/assets/arrow-circle-double-135.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/todo/resources/assets/arrow-circle-double-135.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/todo/resources/assets/information.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/todo/resources/assets/information.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/todo/resources/assets/minus-circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/todo/resources/assets/minus-circle.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/todo/resources/assets/pencil.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/todo/resources/assets/pencil.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/todo/resources/assets/plus-circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/extjs6classic/todo/resources/assets/plus-circle.png
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/tree.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Ext.Direct Tree Integration
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Ext.Direct Tree Integration
16 |
17 | Source code: tree.js
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/tree.js:
--------------------------------------------------------------------------------
1 | Ext.require([ 'Ext.direct.*', 'Ext.data.*', 'Ext.tree.*' ]);
2 |
3 | Ext.onReady(function() {
4 | Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
5 |
6 | var store = Ext.create('Ext.data.TreeStore', {
7 | root: {
8 | expanded: true
9 | },
10 | nodeParam: 'id',
11 | proxy: {
12 | type: 'direct',
13 | directFn: treeProvider.getTree,
14 | extraParams: {
15 | foo: new Date()
16 | }
17 | }
18 | });
19 |
20 | // create the Tree
21 | Ext.create('Ext.tree.Panel', {
22 | store: store,
23 | height: 350,
24 | width: 600,
25 | title: 'Tree Sample',
26 | rootVisible: false,
27 | renderTo: Ext.getBody()
28 | });
29 |
30 | store.on("beforeload", function(store, operation) {
31 | store.getProxy().setExtraParam('foo', new Date());
32 | }, this);
33 |
34 | });
35 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6classic/upload.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Ext Direct Form with Upload
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Ext Direct Form with Upload
16 |
17 |
18 | Source code: upload.js
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/blog/README:
--------------------------------------------------------------------------------
1 | Based on the First App Tutorial from Sencha
2 | http://docs.sencha.com/touch/2-0/#!/guide/first_app
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/blog/app.css:
--------------------------------------------------------------------------------
1 | .home {
2 | text-align: center
3 | }
4 |
5 | .home h1 {
6 | font-weight: bold;
7 | font-size: 1.2em
8 | }
9 |
10 | .home p {
11 | color: #666;
12 | font-size: 0.8em;
13 | line-height: 1.6em;
14 | margin: 10px 20px 20px 20px
15 | }
16 |
17 | .home img {
18 | margin-top: -10px
19 | }
20 |
21 | .home h2 {
22 | color: #999;
23 | font-size: 0.7em
24 | }
25 |
26 | .blog p {
27 | color: #555;
28 | padding: 20px 20px 0 20px;
29 | font-size: 1em;
30 | line-height: 1.4em
31 | }
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/blog/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Blog
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/carousel/README:
--------------------------------------------------------------------------------
1 | Based on the example from this blog
2 |
3 | http://edspencer.net/2012/02/building-a-data-driven-image-carousel-with-sencha-touch-2.html
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/carousel/app/model/Picture.js:
--------------------------------------------------------------------------------
1 | Ext.define('apod.model.Picture', {
2 | extend: 'Ext.data.Model',
3 | fields: [ 'id', 'title', 'link', 'author', 'content', 'image' ]
4 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/carousel/app/store/Pictures.js:
--------------------------------------------------------------------------------
1 | Ext.define('apod.store.Pictures', {
2 | extend: 'Ext.data.Store',
3 | model: 'apod.model.Picture',
4 | proxy: {
5 | type: 'direct',
6 | directFn: carouselService.readPictures
7 | }
8 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/carousel/app/view/Picture.js:
--------------------------------------------------------------------------------
1 | Ext.define('apod.view.Picture', {
2 | extend: 'Ext.Img',
3 | xtype: 'apodimage',
4 |
5 | config: {
6 | picture: null
7 | },
8 |
9 | updatePicture: function(picture) {
10 | this.setSrc(picture.get('image') + '&width=' + window.innerWidth +'&height=' + window.innerHeight);
11 | }
12 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/direct/form.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Ext.Direct Form Binding
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/direct/named-arguments.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Ext.Direct Named Arguments
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/direct/store.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Ext.Direct Generic Remoting
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/grid/grid/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Grid
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/grid/summarygrid/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Summarygrid
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/notes/app.css:
--------------------------------------------------------------------------------
1 | .list-item-title {
2 | font-size: 90%;
3 | white-space: nowrap;
4 | overflow: hidden;
5 | text-overflow: ellipsis;
6 | }
7 |
8 | .list-item-narrative {
9 | color: gray;
10 | font-size: 80%;
11 | white-space: nowrap;
12 | overflow: hidden;
13 | text-overflow: ellipsis;
14 | }
15 |
16 | .x-item-selected .list-item-title {
17 | color: #ffffff;
18 | }
19 |
20 | .x-item-selected .list-item-narrative {
21 | color: #ffffff;
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/notes/app.js:
--------------------------------------------------------------------------------
1 | Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
2 |
3 | Ext.application({
4 | name: 'Notes',
5 | requires: ['Notes.view.Main'],
6 | extend: 'Notes.Application',
7 | mainView: 'Notes.view.Main',
8 | lanuch: function() {
9 | Ext.fly('appLoadingIndicator').destroy();
10 | }
11 | });
12 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/notes/app/Application.js:
--------------------------------------------------------------------------------
1 | Ext.define('Notes.Application', {
2 | extend: 'Ext.app.Application',
3 | name: 'Notes'
4 | });
5 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/notes/app/model/Note.js:
--------------------------------------------------------------------------------
1 | Ext.define("Notes.model.Note", {
2 | extend: 'Ext.data.Model',
3 |
4 | identifier: 'negative',
5 |
6 | fields: [ {
7 | name: 'id',
8 | type: 'int'
9 | }, {
10 | name: 'dateCreated',
11 | type: 'date',
12 | dateFormat: 'd.m.Y'
13 | }, {
14 | name: 'title',
15 | type: 'string'
16 | }, {
17 | name: 'narrative',
18 | type: 'string'
19 | } ],
20 |
21 | validators: {
22 | dateCreated: 'presence',
23 | title: {
24 | type: 'presence',
25 | message: 'Please enter a title for this note.'
26 | }
27 | },
28 | proxy: {
29 | type: 'direct',
30 | api: {
31 | create: notesService.updateNotes,
32 | read: notesService.readNotes,
33 | update: notesService.updateNotes,
34 | destroy: notesService.destroyNotes
35 | },
36 | writer: {
37 | writeAllFields: true
38 | }
39 | }
40 |
41 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/notes/app/view/Main.js:
--------------------------------------------------------------------------------
1 | Ext.define('Notes.view.Main', {
2 | extend: 'Ext.Container',
3 | requires: [ 'Notes.view.NotesList', 'Notes.view.NoteEditor', 'Notes.view.NotesController', 'Notes.view.NotesModel' ],
4 |
5 | layout: {
6 | type: 'card',
7 | animation: {
8 | duration: 300,
9 | easing: 'ease-out',
10 | type: 'slide',
11 | direction: 'left'
12 | }
13 | },
14 |
15 | controller: {
16 | xclass: 'Notes.view.NotesController'
17 | },
18 |
19 | viewModel: {
20 | xclass: 'Notes.view.NotesModel'
21 | },
22 |
23 | items: [ {
24 | xclass: 'Notes.view.NotesList'
25 | }, {
26 | xclass: 'Notes.view.NoteEditor'
27 | } ]
28 |
29 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/notes/app/view/NotesList.js:
--------------------------------------------------------------------------------
1 | Ext.define('Notes.view.NotesList', {
2 | extend: 'Ext.Container',
3 |
4 | layout: 'fit',
5 |
6 | items: [ {
7 | xtype: "toolbar",
8 | title: "My Notes",
9 | docked: "top",
10 | items: [ {
11 | xtype: 'spacer'
12 | }, {
13 | xtype: "button",
14 | text: 'New',
15 | ui: 'action',
16 | handler: 'onNew'
17 | } ]
18 | }, {
19 | xtype: "list",
20 | bind: {
21 | store: '{notes}'
22 | },
23 | loadingText: "Loading Notes...",
24 | emptyText: "No notes found.
",
25 | onItemDisclosure: true,
26 | grouped: true,
27 |
28 | listeners: {
29 | disclose: 'onItemDisclose'
30 | },
31 |
32 | // plugins: [ {
33 | // xclass: 'Ext.plugin.PullRefresh'
34 | // } ],
35 | itemTpl: "{id}: {title}
{narrative}
"
36 | } ]
37 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/notes/app/view/NotesModel.js:
--------------------------------------------------------------------------------
1 | Ext.define('Notes.view.NotesModel', {
2 | extend: 'Ext.app.ViewModel',
3 | requires: [ 'Notes.model.Note' ],
4 |
5 | stores: {
6 | notes: {
7 | model: 'Notes.model.Note',
8 | autoLoad: true,
9 | sorters: [ {
10 | property: 'dateCreated',
11 | direction: 'DESC'
12 | } ],
13 |
14 | grouper: {
15 | sortProperty: "dateCreated",
16 | direction: "DESC",
17 | groupFn: function(record) {
18 | if (record && record.data.dateCreated) {
19 | return record.data.dateCreated.toDateString();
20 | }
21 | return '';
22 | }
23 | }
24 | }
25 | }
26 |
27 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/president/app.js:
--------------------------------------------------------------------------------
1 | Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
2 |
3 | Ext.application({
4 | name: 'Sencha',
5 | extend: 'Sencha.Application',
6 | requires: [ 'Sencha.view.Main' ],
7 | mainView: 'Sencha.view.Main'
8 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/president/app/Application.js:
--------------------------------------------------------------------------------
1 | Ext.define('Sencha.Application', {
2 | extend: 'Ext.app.Application',
3 | name: 'Sencha'
4 | });
5 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/president/app/model/President.js:
--------------------------------------------------------------------------------
1 | Ext.define('Sencha.model.President', {
2 | extend: 'Ext.data.Model',
3 | fields: [ 'id', 'imageUrl', 'firstName', 'middleInitial', 'lastName' ],
4 |
5 | proxy: {
6 | type: 'direct',
7 | directFn: presidentsService.getPresidents
8 | },
9 |
10 | fullName: function() {
11 | var d = this.data, names = [ d.firstName, (!d.middleInitial ? "" : d.middleInitial + "."), d.lastName ];
12 | return names.join(" ");
13 | }
14 | });
15 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/president/app/view/Main.js:
--------------------------------------------------------------------------------
1 | Ext.define('Sencha.view.Main', {
2 | extend: 'Ext.navigation.View',
3 | requires: [ 'Sencha.view.MainController', 'Sencha.view.MainModel' ],
4 |
5 | controller: {
6 | xclass: 'Sencha.view.MainController'
7 | },
8 |
9 | viewModel: {
10 | xclass: 'Sencha.view.MainModel'
11 | },
12 |
13 | items: [ {
14 | xtype: 'list',
15 | title: 'American Presidents',
16 | grouped: true,
17 | itemTpl: '{firstName} {middleInitial}. {lastName}',
18 | bind: {
19 | store: '{presidents}',
20 | },
21 | onItemDisclosure: true,
22 | listeners: {
23 | disclose: 'onItemDisclose'
24 | }
25 | } ]
26 |
27 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/president/app/view/MainController.js:
--------------------------------------------------------------------------------
1 | Ext.define('Sencha.view.MainController', {
2 | extend: 'Ext.app.ViewController',
3 |
4 | onItemDisclose: function(list, record) {
5 |
6 | this.getView().push({
7 | xtype: 'panel',
8 | title: record.fullName(),
9 | styleHtmlContent: true,
10 | scrollable: 'vertical',
11 | tpl: [ 'Hello {firstName}!
', '
' ],
12 | data: record.getData()
13 | });
14 |
15 | }
16 |
17 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/president/app/view/MainModel.js:
--------------------------------------------------------------------------------
1 | Ext.define('Sencha.view.MainModel', {
2 | extend: 'Ext.app.ViewModel',
3 | requires: [ 'Sencha.model.President' ],
4 |
5 | stores: {
6 | presidents: {
7 | model: 'Sencha.model.President',
8 | autoLoad: true,
9 | remoteFilter: false,
10 | remoteSort: false,
11 | sorters: [ {
12 | property: 'lastName',
13 | direction: 'ASC'
14 | } ],
15 | groupField: 'lastName'
16 | }
17 | }
18 |
19 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/president/app/view/PresidentDetail.js:
--------------------------------------------------------------------------------
1 | Ext.define('Sencha.view.PresidentDetail', {
2 | extend: 'Ext.Panel',
3 | xtype: 'presidentdetail',
4 |
5 | title: 'Details',
6 | styleHtmlContent: true,
7 | scrollable: 'vertical',
8 | tpl: [ 'Hello {firstName}!
', '
' ]
9 |
10 | });
11 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/president/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Presidents
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/todo/README:
--------------------------------------------------------------------------------
1 | Based on the example from this project: https://github.com/jurisv/extdirect.examples
2 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/todo/app.js:
--------------------------------------------------------------------------------
1 | Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
2 |
3 | Ext.application({
4 | name: 'Todo',
5 | requires: ['Todo.view.Main'],
6 | extend: 'Todo.Application',
7 | mainView: 'Todo.view.Main',
8 | lanuch: function() {
9 | Ext.fly('appLoadingIndicator').destroy();
10 | }
11 | });
12 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/todo/app/Application.js:
--------------------------------------------------------------------------------
1 | Ext.define('Todo.Application', {
2 | extend: 'Ext.app.Application',
3 | name: 'Todo'
4 | });
5 |
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/todo/app/model/TodoItem.js:
--------------------------------------------------------------------------------
1 | Ext.define('Todo.model.TodoItem', {
2 | extend: 'Ext.data.Model',
3 |
4 | fields: [ 'id', 'text', 'complete' ],
5 | sorters: [ {
6 | property: "id",
7 | direction: "DESC"
8 | } ],
9 | proxy: {
10 | type: 'direct',
11 | enablePagingParams: false,
12 | directFn: 'todoService.read'
13 | }
14 |
15 | });
--------------------------------------------------------------------------------
/src/main/resources/static/extjs6modern/todo/app/store/Todo.js:
--------------------------------------------------------------------------------
1 | Ext.define('Todo.store.Todo', {
2 | extend: 'Ext.data.Store',
3 | requires: ['Todo.model.TodoItem'],
4 | autoLoad: true,
5 | remoteSort: false,
6 | remoteFilter: false,
7 | model: 'Todo.model.TodoItem'
8 |
9 | });
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/blog/README:
--------------------------------------------------------------------------------
1 | Based on the First App Tutorial from Sencha
2 | http://docs.sencha.com/touch/2-0/#!/guide/first_app
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/blog/app.css:
--------------------------------------------------------------------------------
1 | .home {
2 | text-align: center
3 | }
4 |
5 | .home h1 {
6 | font-weight: bold;
7 | font-size: 1.2em
8 | }
9 |
10 | .home p {
11 | color: #666;
12 | font-size: 0.8em;
13 | line-height: 1.6em;
14 | margin: 10px 20px 20px 20px
15 | }
16 |
17 | .home img {
18 | margin-top: -10px
19 | }
20 |
21 | .home h2 {
22 | color: #999;
23 | font-size: 0.7em
24 | }
25 |
26 | .blog p {
27 | color: #555;
28 | padding: 20px 20px 0 20px;
29 | font-size: 1em;
30 | line-height: 1.4em
31 | }
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/blog/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Getting Started
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/carousel/README:
--------------------------------------------------------------------------------
1 | Based on the example from this blog
2 |
3 | http://edspencer.net/2012/02/building-a-data-driven-image-carousel-with-sencha-touch-2.html
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/carousel/app/model/Picture.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Simple Model that represents an image from NASA's Astronomy Picture Of the Day. The only remarkable
3 | * thing about this model is the 'image' field, which uses a regular expression to pull its value out
4 | * of the main content of the RSS feed. Ideally the image url would have been presented in its own field
5 | * in the RSS response, but as it wasn't we had to use this approach to parse it out
6 | */
7 | Ext.define('apod.model.Picture', {
8 | extend: 'Ext.data.Model',
9 |
10 | config: {
11 | fields: [
12 | 'id', 'title', 'link', 'author', 'content', 'image'
13 | ]
14 | }
15 | });
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/carousel/app/store/Pictures.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Grabs the APOD RSS feed from Google's Feed API, passes the data to our Model to decode
3 | */
4 | Ext.define('apod.store.Pictures', {
5 | extend: 'Ext.data.Store',
6 |
7 | config: {
8 | model: 'apod.model.Picture',
9 | proxy: {
10 | type: 'direct',
11 | directFn: carouselService.readPictures
12 | }
13 | }
14 | });
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/carousel/app/view/Picture.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Very simple specialization of Ext.Img, just saves the apod.model.Picture that was assigned to it
3 | */
4 | Ext.define('apod.view.Picture', {
5 | extend: 'Ext.Img',
6 | xtype: 'apodimage',
7 |
8 | config: {
9 | /**
10 | * @cfg {apod.model.Picture} picture The Picture to show
11 | */
12 | picture: null
13 | },
14 |
15 | updatePicture: function(picture) {
16 | this.setSrc(picture.get('image') + '&width=' + window.innerWidth +'&height=' + window.innerHeight);
17 | }
18 | });
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/direct/direct.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ext.Direct Generic Remoting
6 |
7 |
8 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/direct/form.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ext.Direct Form Binding
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/direct/named-arguments.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ext.Direct Named Arguments
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/direct/store.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ext.Direct Generic Remoting
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/grid/grid/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Grid
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/grid/summarygrid/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Summarygrid
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/notes/README:
--------------------------------------------------------------------------------
1 | Based on the example from this blog
2 |
3 | http://miamicoder.com/2012/how-to-create-a-sencha-touch-2-app-part-1/
4 | http://miamicoder.com/2012/how-to-create-a-sencha-touch-2-app-part-2/
5 | http://miamicoder.com/2012/how-to-create-a-sencha-touch-2-app-part-3/
6 | http://miamicoder.com/2012/how-to-create-a-sencha-touch-2-app-part-4/
7 | http://miamicoder.com/2012/how-to-create-a-sencha-touch-2-app-part-5/
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/notes/app/model/Note.js:
--------------------------------------------------------------------------------
1 | Ext.define("Notes.model.Note", {
2 | extend: 'Ext.data.Model',
3 | config: {
4 | idProperty: 'id',
5 | fields: [ {
6 | name: 'id',
7 | type: 'int'
8 | }, {
9 | name: 'dateCreated',
10 | type: 'date',
11 | dateFormat: 'd.m.Y'
12 | }, {
13 | name: 'title',
14 | type: 'string'
15 | }, {
16 | name: 'narrative',
17 | type: 'string'
18 | } ],
19 | validations: [ {
20 | type: 'presence',
21 | field: 'id'
22 | }, {
23 | type: 'presence',
24 | field: 'dateCreated'
25 | }, {
26 | type: 'presence',
27 | field: 'title',
28 | message: 'Please enter a title for this note.'
29 | } ],
30 | proxy: {
31 | type: 'direct',
32 | api: {
33 | create: notesService.updateNotes,
34 | read: notesService.readNotes,
35 | update: notesService.updateNotes,
36 | destroy: notesService.destroyNotes
37 | }
38 | }
39 | }
40 | });
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/notes/app/store/Notes.js:
--------------------------------------------------------------------------------
1 | Ext.define("Notes.store.Notes", {
2 | extend: 'Ext.data.Store',
3 | config: {
4 | model: 'Notes.model.Note',
5 | sorters: [ {
6 | property: 'dateCreated',
7 | direction: 'DESC'
8 | } ],
9 | grouper: {
10 | sortProperty: "dateCreated",
11 | direction: "DESC",
12 | groupFn: function(record) {
13 | if (record && record.data.dateCreated) {
14 | return record.data.dateCreated.toDateString();
15 | }
16 | return '';
17 | }
18 | }
19 | }
20 | });
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/notes/resources/css/app.css:
--------------------------------------------------------------------------------
1 | .list-item-title {
2 | font-size: 90%;
3 | white-space: nowrap;
4 | overflow: hidden;
5 | text-overflow: ellipsis;
6 | }
7 |
8 | .list-item-narrative {
9 | color: gray;
10 | font-size: 80%;
11 | white-space: nowrap;
12 | overflow: hidden;
13 | text-overflow: ellipsis;
14 | }
15 |
16 | .x-item-selected .list-item-title {
17 | color: #ffffff;
18 | }
19 |
20 | .x-item-selected .list-item-narrative {
21 | color: #ffffff;
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/notes/resources/icons/Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/touch24/notes/resources/icons/Icon.png
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/notes/resources/icons/Icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/touch24/notes/resources/icons/Icon@2x.png
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/notes/resources/icons/Icon~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/touch24/notes/resources/icons/Icon~ipad.png
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/notes/resources/icons/Icon~ipad@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/touch24/notes/resources/icons/Icon~ipad@2x.png
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/notes/resources/loading/Homescreen.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/touch24/notes/resources/loading/Homescreen.jpg
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/notes/resources/loading/Homescreen~ipad.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/touch24/notes/resources/loading/Homescreen~ipad.jpg
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/president/app.js:
--------------------------------------------------------------------------------
1 | Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
2 |
3 | Ext.application({
4 | name: 'Sencha',
5 |
6 | controllers: ['Main'],
7 | views: ['Main'],
8 | stores: ['Presidents'],
9 | models: ['President'],
10 |
11 | launch: function() {
12 | Ext.Viewport.add({
13 | xtype: 'mainpanel'
14 | });
15 | }
16 | });
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/president/app/controller/Main.js:
--------------------------------------------------------------------------------
1 | Ext.define('Sencha.controller.Main', {
2 | extend: 'Ext.app.Controller',
3 |
4 | config: {
5 | refs: {
6 | main: 'mainpanel'
7 | },
8 | control: {
9 | 'presidentlist': {
10 | disclose: 'showDetail'
11 | }
12 | }
13 | },
14 |
15 | showDetail: function(list, record) {
16 | this.getMain().push({
17 | xtype: 'presidentdetail',
18 | title: record.fullName(),
19 | data: record.getData()
20 | });
21 | }
22 |
23 | });
24 |
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/president/app/model/President.js:
--------------------------------------------------------------------------------
1 | Ext.define('Sencha.model.President', {
2 | extend: 'Ext.data.Model',
3 | config: {
4 | fields: ['id', 'imageUrl', 'firstName', 'middleInitial', 'lastName'],
5 | proxy : {
6 | type: 'direct',
7 | directFn: presidentsService.getPresidents
8 | }
9 | },
10 |
11 | fullName: function() {
12 | var d = this.data,
13 | names = [
14 | d.firstName,
15 | (!d.middleInitial ? "" : d.middleInitial + "."),
16 | d.lastName
17 | ];
18 |
19 |
20 | return names.join(" ");
21 | }
22 | });
23 |
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/president/app/store/Presidents.js:
--------------------------------------------------------------------------------
1 | Ext.define('Sencha.store.Presidents', {
2 | extend: 'Ext.data.Store',
3 |
4 | config: {
5 | model: 'Sencha.model.President',
6 | autoLoad: true,
7 | sorters: 'lastName',
8 | grouper : function(record) {
9 | return record.data.lastName;
10 | }
11 | }
12 | });
13 |
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/president/app/view/Main.js:
--------------------------------------------------------------------------------
1 | Ext.define('Sencha.view.Main', {
2 | extend: 'Ext.navigation.View',
3 | xtype: 'mainpanel',
4 | requires: [
5 | 'Sencha.view.PresidentList',
6 | 'Sencha.view.PresidentDetail'
7 | ],
8 |
9 | config: {
10 | items: [{
11 | xtype: 'presidentlist'
12 | }]
13 | }
14 | });
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/president/app/view/PresidentDetail.js:
--------------------------------------------------------------------------------
1 | Ext.define('Sencha.view.PresidentDetail', {
2 | extend: 'Ext.Panel',
3 | xtype: 'presidentdetail',
4 |
5 | config: {
6 | title: 'Details',
7 | styleHtmlContent: true,
8 | scrollable: 'vertical',
9 | tpl: [
10 | 'Hello {firstName}!
',
11 | '
'
12 | ]
13 | }
14 | });
15 |
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/president/app/view/PresidentList.js:
--------------------------------------------------------------------------------
1 | Ext.define('Sencha.view.PresidentList', {
2 | extend: 'Ext.dataview.List',
3 | xtype: 'presidentlist',
4 | requires: ['Sencha.store.Presidents'],
5 |
6 | config: {
7 | title: 'American Presidents',
8 | grouped: true,
9 | itemTpl: '{firstName} {middleInitial}. {lastName}',
10 | store: 'Presidents',
11 | onItemDisclosure: true
12 | }
13 | });
14 |
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/president/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | The Sencha Touch List Component
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/todo/README:
--------------------------------------------------------------------------------
1 | Based on the example from this project: https://github.com/jurisv/extdirect.examples
2 |
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/todo/app/model/TodoItem.js:
--------------------------------------------------------------------------------
1 | Ext.define('Todo.model.TodoItem', {
2 | extend: 'Ext.data.Model',
3 | config: {
4 | fields: [ 'id', 'text', 'complete' ],
5 | sorters: [ {
6 | property: "id",
7 | direction: "DESC"
8 | } ],
9 | proxy: {
10 | type: 'direct',
11 | enablePagingParams: false,
12 | directFn: 'todoService.read'
13 | }
14 | }
15 | });
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/todo/app/store/Todo.js:
--------------------------------------------------------------------------------
1 | Ext.define('Todo.store.Todo', {
2 | extend: 'Ext.data.Store',
3 | config: {
4 | autoLoad: true,
5 | remoteSort: false,
6 | remoteFilter: false,
7 | model: 'Todo.model.TodoItem'
8 | }
9 | });
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/todo/resources/css/app.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/touch24/todo/resources/css/app.css
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/todo/resources/icons/Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/touch24/todo/resources/icons/Icon.png
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/todo/resources/icons/Icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/touch24/todo/resources/icons/Icon@2x.png
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/todo/resources/icons/Icon_Android36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/touch24/todo/resources/icons/Icon_Android36.png
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/todo/resources/icons/Icon_Android48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/touch24/todo/resources/icons/Icon_Android48.png
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/todo/resources/icons/Icon~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/touch24/todo/resources/icons/Icon~ipad.png
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/todo/resources/icons/Icon~ipad@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/touch24/todo/resources/icons/Icon~ipad@2x.png
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/todo/resources/icons/iTunesArtwork.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/touch24/todo/resources/icons/iTunesArtwork.png
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/todo/resources/icons/icon-spot~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/touch24/todo/resources/icons/icon-spot~ipad.png
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/todo/resources/loading/Default-Landscape@2x~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/touch24/todo/resources/loading/Default-Landscape@2x~ipad.png
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/todo/resources/loading/Default-LandscapeLeft~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/touch24/todo/resources/loading/Default-LandscapeLeft~ipad.png
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/todo/resources/loading/Default-LandscapeRight~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/touch24/todo/resources/loading/Default-LandscapeRight~ipad.png
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/todo/resources/loading/Default-Landscape~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/touch24/todo/resources/loading/Default-Landscape~ipad.png
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/todo/resources/loading/Default-Portrait@2x~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/touch24/todo/resources/loading/Default-Portrait@2x~ipad.png
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/todo/resources/loading/Default-PortraitUpsideDown~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/touch24/todo/resources/loading/Default-PortraitUpsideDown~ipad.png
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/todo/resources/loading/Default-Portrait~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/touch24/todo/resources/loading/Default-Portrait~ipad.png
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/todo/resources/loading/Default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/touch24/todo/resources/loading/Default.png
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/todo/resources/loading/Default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/touch24/todo/resources/loading/Default@2x.png
--------------------------------------------------------------------------------
/src/main/resources/static/touch24/todo/resources/loading/Default~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ralscha/extdirectspring-demo/af786d70076e2275899b37f730f73bc43168afa2/src/main/resources/static/touch24/todo/resources/loading/Default~ipad.png
--------------------------------------------------------------------------------
/src/main/webapp/WEB-INF/glassfish-web.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | /
5 |
6 |
7 |
8 | Keep a copy of the generated servlet class' java code.
9 |
10 |
11 |
--------------------------------------------------------------------------------