Git Product home page Git Product logo

elepy's People

Contributors

bastichelaar avatar dependabot[bot] avatar rugbroed avatar ryansusana avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

elepy's Issues

@Hidden(fromConfig=boolean)

Make it so that it you can restrict @hidden from config or just add a json attribute called hidden.

And then in the admin panel use the hidden attribute to hide fields in the table.

Extra default actions

It would be a nice feature if Elepy supported these actions:

  • Delete Multiple by IDs
  • Edit Multiple with 1 patch

@Searchable

Objects throw an error when calling get without searchfields

Admin Panel: User Roles

Implement a sort of UserRole/Permission system with a top role that only 1 user can have.
The base admin filter on the admin module must also work in correspondence with the User Role system.

VertxBug

.withHttpSevice(new VertxService()) is returning empty pages

Admin Panel: Customizable Stylesheet

As of now, the admin panel is not in any way Customizable, the only dynamic content are the models and routes.

The goal is to make it so that the style of the admin panel is customizable via an overridable 'default.scss' file.

RouteGenerator and ClassValidator

RouteGenerator is a built-in handler that handles the creation of Routes.

It takes in 2 parameters, an object that implements the Crud interface and a Class(which it assumes has the Annotation @RestModel)

The ClassValidator validates that RestModels are properly configured on startup.

Admin Panel: View Hooks

Add a method in admin panel that allows to give a template (wrapped by the main content div) for a specific RestModel while still maintaining consistency in the layout(sidebar and navbar)

Mongo id fields

Right now all ID's must have a json property 'id' or '_id'. this should not be the case.

Linking models

Admittedly, I didn't spend a ton of time scouring the docs, but I didn't see how you'd go about linking models together whether it be for something like you might want for implementing line items on an order or some sort of hierarchical categorization mechanism. Am I missing something obvious?

Would I just manually search for related models using IDs?

Recursive `@InnerObject`s

Elepy should support strong and weak recursion by implementing a maxDepth property to @InnerObject

Default implementations and auto-config

Sparkjava should live in its own separate module.

The reason it's not is that because Elepy needs a default implementation for things.

Find a way to make the dependency optional and auto-configurable

java.lang.IllegalArgumentException: character to be escaped is missing

I have this problem when uploading files
OS: Windows 10

java.lang.IllegalArgumentException: character to be escaped is missing at java.base/java.util.regex.Matcher.appendExpandedReplacement(Matcher.java:1020) at java.base/java.util.regex.Matcher.appendReplacement(Matcher.java:998) at com.elepy.uploads.DirectoryFileService.replaceNMatches(DirectoryFileService.java:35) at com.elepy.uploads.DirectoryFileService.decodeFileName(DirectoryFileService.java:105) at com.elepy.uploads.DirectoryFileService.uploadFile(DirectoryFileService.java:52) at com.elepy.uploads.FileUploadExtension.lambda$handleUpload$1(FileUploadExtension.java:58) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) at com.elepy.uploads.FileUploadExtension.handleUpload(FileUploadExtension.java:62) at com.elepy.http.HttpService.lambda$addRoute$0(HttpService.java:38) at com.elepy.http.SparkService.lambda$igniteRoute$6(SparkService.java:132) at spark.RouteImpl$1.handle(RouteImpl.java:72) at spark.http.matching.Routes.execute(Routes.java:61) at spark.http.matching.MatcherFilter.doFilter(MatcherFilter.java:134) at spark.embeddedserver.jetty.JettyHandler.doHandle(JettyHandler.java:50) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1672) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) at org.eclipse.jetty.server.Server.handle(Server.java:502) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:132) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683) at java.base/java.lang.Thread.run(Thread.java:834)

Overview for model

Make it so that models can be displayed with an Overview instead of going directly to edit

non 'id' identifiers

If the id field is not 'id' the adminpanel does not recognize it as the identifier

`@ExtraAction`

To be able to define extra actions on the CMS.

This should be done with a Repeatable annotation on a RestModel.

Actions should be batchable or single.
Actions should provide a name.
Actions should link to a RouteHandler. Maybe an ActionHandler?

Separate Route Annotations

@Find
@Update
@Create
@Delete

These are the only annotations that should exist. They should be ClassLevel annotations.
Each annotation should have 2 options. AccessLevel(ADMIN or PUBLIC. the default varies per route) and it's implementation of a Route class

Update:

  • Update by ID
  • Update Multiple

Find:

  • Find by ID
  • Find by query: A query consists of pageNumber, pageSize, sortBy, sortDirection, qryString. All of these values should be optional BY DEFAULT

Create:

  • Create one
  • Create Multiple

Delete:

  • Delete by ID
  • Delete by query: TBA

All of these methods (Except Find) should return boolean if the task has been successfully executed. If not a Proper RestErrorMessage should be thrown describing what happened. Find by ID should return a JSON Object. Find by query should return a Page object.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.