├── .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 | --------------------------------------------------------------------------------