Git Product home page Git Product logo

presentation-rules-editor's Introduction

Presentation Rules Editor

Build status CodeQL

A monorepo for Presentation ruleset editing application and its components.

Using

To start editing rulesets, you will need to build the editor application:

  1. Clone this repository.

  2. Install application dependencies:

    npx pnpm install
  3. Start the application:

    npm start
  4. Select an imodel within the launched browser window.

    If you have a snapshot imodel, put it inside app/backend/assets/imodels folder.

  5. You will now be presented with a ruleset editor.

Contributing

You can submit feature requests or bugs by creating issues.

presentation-rules-editor's People

Contributors

grigasp avatar roluk avatar saskliutas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

jvaliunas ehtick

presentation-rules-editor's Issues

Add a way to pick which experimental features to enable

We want something like a settings page that allows users to pick the experimental features they want enabled in their session. That way we don't interfere with users that don't want any experiments and we provide means to try the new stuff.

Should make sure that features can be supplied through URL and creating a URL (the "Share" button) includes the enabled features.

Handle user session expiration

When a user signs out outside of Presentation Rules Editor, current user session will be invalidated on the server side and we will no longer be able to silently refresh user's auth token. When silent refresh fails, we should tell user that their session has expired and offer them to sign in again. We must make sure not to lose user's unsaved work in the process.

Serve a dedicated file for silent sign-in callbacks

Currently silent sign-in callback is processed in a hidden iframe which effectively loads a second full instance of Presentation Rules Editor. A better solution would be to serve a specifically crafted html file which includes only the script necessary to process the sign-in result.

Ruleset not preserved when switching tabs

Repro steps:

  1. Open any iModel
  2. Edit the default ruleset
  3. Switch to "Browse iModels" tab
  4. Switch back to "Ruleset Editor" tab

Result: The ruleset is reset to default.
Expected result: The ruleset is preserved when switching tabs or even iModels.

Show an indication of in-progress update

When "Submit Ruleset" is clicked and it takes a while to update content for the components, it impossible to know if that already happened or is still in progress. We should add some indication.

Make monaco-editor bundle load independently of iTwin.js bundle

Bundle analyser shows that monaco-editor (~3MB) and iTwin.js (~6MB) libraries are concatenated into the same bundle.

We only need iTwin.js libraries to start connecting to an iModel, and while connecting, we can load monaco-editor bundle in parallel to speed up application startup.

Improve problem diagnostics

Need a widget that shows problems encountered when handling given ruleset: non existing classes, invalid / deprecated attributes, etc.

Rework iModel selector

@itwin/imodel-browser-react package has been unmaintained for quite a while and has become incompatible with recent iTwinUI-css versions. This package also introduces its own tile component which looks and acts differently from the one in iTwinUI-react. We chose to style all tile components in the app like imodel-browser-react does for consistency.

We need to write our own iModel browser that will allow users to search and open local, cloud, and demo iModels. All tile components in the app will be switched over to use iTwinUI-react implementation.

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.