Giter Club home page Giter Club logo

noonian's People

Contributors

chiweeniedijon avatar nicechester avatar violkimuw avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

noonian's Issues

Record History

Want to maintain history of changes to arbitrary Business Objects; should be able to turn on/off for class

  • each version accompanied by timestamp and comment

  • see a diff for each version

  • tagging that spans many objects ?
    (step toward full-fledged source control)

JSON Configuration

Let's use JSON for instance configuration rather than .js files.

Makes more sense to use a data representation language.

bad conversion of Date object on "date" field

if you set a Date object on a "date" type field, mongoose turns it into a string before FieldType.toDb is called, so you get a string like "Mon Sep 12 2016 14:25:58 GMT-0400 (EDT)" for the field value.

Collapse sidebar

It would be nice to be able to hide the sidebar when it's not needed.

System update

Small batch of updates to system package:

  • BusinessObjectDef's related DataTriggers should show "doc" instead of "description
  • Enumeration view perspective: key, then name
  • array field viewer; "abbreviated" mode limits long lists
  • customizable sideBar menu based on role
  • custom Config based on Roles
  • add a "function" field to a BusniessObjectPackage to support future

Enforce password reset required

If a user account logs in and has password reset required, need to restrict access to only a designated password reset screen.

filter out system objects by default

Dev menus on a fresh system should have the system objects filtered out by default. All system BOD's, web services, etc. make it more confusing/difficult to develop an application

Useless website

wee is the only source code of the website. It should be a little more informative. Also, I had to add a security exception to access.
captura de pantalla de 2016-08-18 15 26 33

JS Date assignment to a "date" field

... coerces it into a string upon assignment, due to the fact that it's mongo type is String.
An awful string: "Fri May 19 2017 11:23:42 GMT-0700 (PDT)"

Tricky one... we only want to store the "yyyy-mm-dd" string in mongo, yet it is reasonable to expect assigning a JS Date value would yield the date portion of the value.

Probably should adjust the toDb() function to parse the date string.

Package import via RemotePacakgeRepo

Denormalized version fields in reference to BusinessObjectPacakge in RemotePackageRepository isn't properly updated when an update is run.
( probably related to #28 - the BOP reference is an array)

Proper handling of Reference Array fields

We don't seem to be processing reference array fields properly:
see WebService /pkg/runUpdate for work around...
We should just be able to do something like
obj.refArr.push({_id:'xyz'});
and have the system automatically fill in _disp as well as any denormalized fields.
Instead, no changes are made to the values in refArr (stays at {_id:'xyz'} )

Package export - bad version

When dumping a package to filesystem, manifest version blindly copied to __ver field of exported file; need to handle case for {externalPackage:true}

"npm install" warnings

Resolve this stuff:

npm WARN deprecated [email protected]: use uuid module instead
npm WARN deprecated [email protected]: Critical vulnerability fix in v5.0.0. See https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/
npm WARN deprecated [email protected]: Please use 2.2.16 or higher due to a regression in updateOne/Many upsertedId return value
npm WARN deprecated [email protected]: Security update: Versions below 3.0.0 are deprecated.

[email protected] install /home/xxx/git/noonian/node_modules/bcrypt
node-gyp rebuild

make: Entering directory /home/xxx/git/noonian/node_modules/bcrypt/build' CXX(target) Release/obj.target/bcrypt_lib/src/blowfish.o CXX(target) Release/obj.target/bcrypt_lib/src/bcrypt.o CXX(target) Release/obj.target/bcrypt_lib/src/bcrypt_node.o SOLINK_MODULE(target) Release/obj.target/bcrypt_lib.node COPY Release/bcrypt_lib.node make: Leaving directory /home/xxx/git/noonian/node_modules/bcrypt/build'
npm WARN optional dep failed, continuing [email protected]
npm WARN deprecated [email protected]: Please use 2.2.16 or higher due to a regression in updateOne/Many upsertedId return value

Garbage collection of orphaned attachments

File attachments in fs.files/chunks never get deleted, even when all references to it go away.
At the very least, we need a "cleanup" script to garbage collect files who don't have any incoming references.

Only auto-create "default" perspective

To avoid so much duplicated data, only auto-create "default" perspectives. When another is requested; simply serve up the default.

Add a "new perspective" button somewhere which actually creates the perspective, copied from the default. Creating non-default perspectives shall be deliberate.

Report framework

A basic report framework might involve the following:

A "Report" business object definition, containing fields for the following:

  1. A definition for the input type descriptor map, so that a form can be rendered to gather the input parameters for the report.
  2. A definition for the output layout and type-descriptor map(s), so that a form rendering the ouput can be displayed to render the output of the report.
  3. The name of or reference to a WebService that accepts data conforming to the input type descriptor map, and returns data conforming to the output type descriptor map(s)

A DbuiCustomPage that renders the input and output forms, and wires in the calls to the webservice.

MongoDB permissions linked to logged-in user?

See if it is practical/worthwhile to connect noonian user accounts to mongodb user accounts, and enforce permissions

(may not make sense w/ noonian finer-grained conditions on DACs)

Add support for wildcard perspective

Add support for a BO-Class specific "wildcard" perspective object that is merged in when a perspective is requested.

The full "merged stack":

sys.dbui.perspective (any perspective, any BO Class)
sys.dbui.perspective.[perspective name] (specific perspective, any BO Class)
sys.dbui.perspective.*.[BO Class] (any perspective, specific BO Class)
sys.dbui.perspective.[perspective name].[BO Class] (specific perspective, specific BO Class)

Configurable external directories for packaging

Add support to server configuration to point to directories outside of noonian directory structure:

  1. for package development: configure to sync BusinessObject-->filesystem to external directory
  2. for filesystem-based resources (i.e. stuff in the "client" directory that is served up by web server)

This will allow projects built atop noonian to be source controlled separately from noonian, removing the need to develop atop a fork of the entire noonian repo.

Packages that modify objects belonging to other packages.

Need a mechanism to handle this better, or at least a "best practice" approach to avoiding it.

For example, the email package has a modfication to the system's login.html AngularApp, (to add the "forgot password" link).
The sys package had an update to that same AngularApp, which made it divergent from the one in the email package. The update had to be merged into the email package's.
This leaves things a bit ugly when upgrading your system package while still having the version of the email package containing the divergent one. (it resolves itself once you install the up-to-date email package; however it leaves the PackageConflict flag...)

I believe the solution lies in various places:

  • identify the types of situations that would require you to include a modification to another package's object, and providing alternative approaches that fits most situations. I.e. make it rare to ever need to include such modifications.
  • enforcing package dependency requirements
  • package "on-upgrade" script to clean things up
  • automatic merging; maybe packaging a "delta" record in a package instead of a descendant version.
  • UI for dealing with conflicts

ACE AutoComplete w/ db.BusinessObject...

Ace editor should be aware of Noonian constructs...
here's a starting-point ( goes in FieldTypeUiSpec dbui.core.ace_editor_simple)

$scope.aceInit = {
  theme:theme,
  mode: mode,
  useWrapMode : true,
  showGutter: true,
  require: ['ace/ext/language_tools'],
  advanced: {
      enableSnippets: false,
      enableBasicAutocompletion: true,
      enableLiveAutocompletion: true
  }
};

var staticWordCompleter = {
    getCompletions: function(editor, session, pos, prefix, callback) {
        console.log('COMPLETER!', pos, prefix);
        var completionArr = [
            {
                caption: 'value in dropdown',
                value: 'value put in editor when selected',
                meta: "noonian"
            }
        ];
        
        callback(null, completionArr);
        
    }
};

$scope.aceInit.onLoad = function(editor) {
    $scope.aceEditor = editor;
    editor.$blockScrolling = Infinity;
    editor.completers = editor.completers || [];
    editor.completers.push(staticWordCompleter);
    
    // var session = editor.getSession(); //http://ajaxorg.github.io/ace/#nav=api&api=edit_session
};

handle rename in filesystem sync

When an object's _disp changes, the name of the file to which it is synced changes, but the file with the previous name persists, creating duplicate.

Need to remove the old file.

Dynamic menus in DBUI

Currently you can only define static menus via the definition JSON in a "Menu" business object.

It would be useful to have allow for a definition to be dynamically created via a "definition getter" funciton on the Menu object.

THe function could be client or server-side.
(Perhaps Menu could have a type dropdown, allowing for "static", "dynamic server-side", and "dynamic client-side")

For the client-side function, ideally, we'd bind the GUI to the return value such that the function could tie in events that update the menu definition, and those updates would be reflected in the GUI.

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.