Giter VIP home page Giter VIP logo

eitanblumin / crude-asp Goto Github PK

View Code? Open in Web Editor NEW
24.0 7.0 13.0 22.7 MB

Low Code Application Generator in Classic ASP, with MSSQL Database, Bootstrap, Fontawesome, and jQuery. Based on the AdminLTE web template.

Home Page: https://git.eitanblumin.com/CRUDE-ASP/

License: Mozilla Public License 2.0

JavaScript 47.62% CSS 5.55% HTML 43.67% ASP 2.40% PLpgSQL 0.12% PHP 0.02% TSQL 0.62%
crud-application crud crude crud-operation crud-functionality crud-actions crud-web crud-generator crud-gui asp

crude-asp's Introduction

Hi there ๐Ÿ‘‹

My name is Eitan Blumin (pronouns: He/Him)

I'm a Senior SQL Server Consultant and Team Leader at Madeira Data Solutions.

Check out our GitHub organization at github.com/MadeiraData.

Use an RSS reader to subscribe to my GitHub Gists feed, and be notified about new gists before anyone:

https://gist.github.com/EitanBlumin.atom

Check out my blog here: https://www.eitanblumin.com

You can also find me on Twitter: https://twitter.com/EitanBlumin

And on Facebook: https://www.facebook.com/EitanBluminBlog

And a few other social networks ๐Ÿ˜‰

Eitan's github stats

crude-asp's People

Contributors

eitanblumin 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

crude-asp's Issues

Test Angular Placeholders

  • Test mention of one column in another column.
  • Test URL links that inject value from another column.

Will need to find a way to reconcile different Angular object names in the datatable versus the Modal dialog ("row" versus "selectedRow").
Need to check if we can rename "selectedRow" to "row" and if that doesn't cause conflicts.

Home Page - How to implement?

Do we make it a centralized dashboard of sorts?
A landing page with a welcome message and navigation?
A fully customizable page with a selection of widgets and content boxes?
This thing alone opens up one hell of a can of worms.
We're getting into Wix-like territory here.
Very dangerous shit that could potentially suck me in as one heck of a project in and of itself.

Or... The default.asp page could simply be left to the user to do what they will with it by changing its code. hmmm...

New deal:
A few configuration settings would determine the home page behaviour:

  • home page type (data view, data view charts, custom page, custom URL)
  • data view id
  • custom page id
  • custom URL

Implement portal.Navigation usage in side nav menu

Using recursive hierarchical navigation links poses several problems that will need to be dealt with:

  • How would the recursive implementation of the levels work? Nested recordsets? Arrays? Json?
  • How will we know which of the child-items is active?
  • How will we know which parent-level item needs to be active (open)?
  • How would we avoid excessive database round-trips?

Implement read-only fields in form

The Edit/Add modal currently doesn't do anything special for read-only fields. need to add support.

Problematic input types:
rte, select

Implement dataview for dataview actions

DataView Actions should be configurable on several levels:

  • Top of page action buttons
    • Implement hierarchical links (?)
  • Contextual links per row within the datatable under the Actions column (incl. Angular palceholders)

Planned Future Features

I'm not sure how soon I'll be able to get to implementing these features, but this is what I have planned:

  • Data Views with DataTables - Fully functional datatables (sort, search, pagination), modals for editing/adding/deleting. Use Angular for async loading of data. Use ASP for dynamic fields presentation. Use toastr notifications for confirmation and error messages.
  • Configurable Recursive Navigation - The navigation sidebar would be fully configurable, including hierarchical links. Each link would either point to one of the data views, or to a custom URL. If a link points to a dataview, it would automatically be visibly set as "active" when its dataview is opened. A navigation link could be activated by more than one dataview (in case there are dataviews that link to each other, and/or if there's a hierarchy between them).
  • Data View Action Links - Each dataview can have, in addition to its data displayed, also a set of customizable "action buttons". Each such an action button can either be one of the following:
    • Regular HTTP link
    • Custom database T-SQL command
    • Parameterized database T-SQL command (will use a modal dialog to set parameter values before execution, and/or use pre-configured default values)
  • Data Charts - Using the free javascript chart libraries (chart.js, morris.js, Flot, inline charts), I want to make it possible to present configurable chart data, instead of or in addition to the regular datatables. This is NOT going to be easy to implement, I fear the day when I'll reach this... But it's such a cool idea I just won't forgive myself for not doing it.

The AdminLTE 2.4.5 web template has a lot of very cool features. It'll be interesting to see how many of them I can implement dynamically, and how well it would eventually work.

Implement Server-Side filtering

Equivalent of the seek_* filters in form_template, but also the Filter part.

Would need to be implemented as advanced search using dynamic structured filters, plus implementation of pagination. This would also solve the big data problem causing buffer overflows #49.

Filter parameters should be saved in an AngularJS collection object (something like "filters"), which could be used similarly to the "row" object in angular. For example:
filter["Label"] - would return the search parameter value entered for the "Label" column.
This would allow using AngularJS placeholders in things like DataView description, action buttons, etc.

Implement Custom Actions

After Action Links management is implemented in the admin section, we'll need to implement their usage in dataview.asp

Generic Framework:

  • Actions and Action Parameters JavaScript object collections (i.e. "dt_Actions"), each action object would have action parameters collection same structures as "dt_Columns" collection.
  • Action Parameters Modal
  • Action Parameters Modal Rendering Function
  • Action Parameters Modal Re-Fill Function
  • Action Execution Wrapper Functions (for DataTable button: one for inline and one for toolbar)

Action Types:

  • HTTP Link
  • DB Procedure
  • DB Ad-Hoc Command
  • JavaScript Function
  • HTTP REST API Request

Action Properties:

  • Is Per Row
  • Require Confirmation
  • Open (HTTP Link) in New Window
  • Send (Selected) DataTable Row(s) as Parameter (XML/JSON?)
  • REST Method (GET / POST / PUT / PATCH / DELETE)

Create support for additional jQuery placeholders

Declare values for additional AngularJS variables to be used as placeholders:

  • row['...'] (already implemented row-level palceholders)
  • {{this}} (current field value)
  • dataview[id]
  • dataview[title]
  • dataview[...] (TBD)
  • urlparam[...] (Get parameter values from querystring)
  • user[...] (User properties, once authentication module is implemented)

Provide more info when deleting item

When deleting an item using the Deletion modal, display in the modal body the item's fields (only those that are set to be displayed in the items list)

Allow customizing the style of the datatable

Allow changing the class of the datatable:

  • table-hover
  • table-bordered
  • table-striped
  • etc.

Sub-tasks:

  • Add new field to portal.DataView table
  • Add new field in portal.DataViewField for manipulation
  • Implement usage of the new field

Add LinkedTable resolve in items list

Combobox-type fields need to be resolved in the items list. This could prove problematic due to the Angular implementation, so maybe a separate field needs to be added (i.e. "FieldName_resolved" or something).

This will also need to be done in the Deletion modal.

Global Site Settings

The following "global" settings should be easily configurable:

  • Site Name (to be used as browser tab title)
  • Site Public URL (for use in e-mails and such)
  • Color theme (use the themes provided by AdminLTE)
  • Layout style (AdminLTE layout variations)
  • Sticky Footer
  • Footer Text
  • Favicon
  • Toggle Anonymous Registration
  • Toggle User Profiles
  • Database Connection String
  • Toastr Notifications Style Options
  • More (TBD)

These settings need to be database-independent. Probably saved in a json file or whatever. Like a web.config file of sorts.

Top bar notification menus

Could be useful to implement them dynamically somehow.
Some sort of generic HTML template that displays data from a query?
The notification menu items themselves could be set up dynamically (glyph icon, badge color, "view all messages" URI...)

Implement Site Search

Site-wide search would search all data views titles and descriptions (this gives an idea: implement tags for dataviews?)

Question where to put the search box: Leave it at the side nav? Or move it to top nav?

Error in adding DataView

Describe the bug
Trying to use undeclared "nOrdering" variable

To Reproduce
Add a new DataView using admin_dataviews.asp

AutoInitDataViewFields Enhancements

  • Auto-Discover foreign keys and linked tables
    • PK to be used as Value field
    • First textual column to be used as Title field
    • If foreign key column is nullable, add "UNION ALL SELECT '-- None --',NULL" as linked table addition
  • Unicode maxlength needs to be divided by 2

Make datatable options configurable

  • Search
  • Sortable columns
  • Pagination
  • Page size selection
  • Client side state save
  • Footer
  • Information
  • Default page size
  • DML button styles: icon only, text and icon, text only, hyperlink, button

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.