Code Monkey home page Code Monkey logo

ultima's People

Contributors

anatolybuga avatar hamza1311 avatar qqrm avatar troshchinskii avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

ultima's Issues

Prettifying: Summary Statistics

image

"Summary" to be availiable as a little button at the bottow right. Notice, what we can do: Summary table to show those statistics for each column (rather than just one selected)

Improve ultibi_server build process

Currently to call .ui() in rust one needs to build ultibi_server which requires

  1. npm run build frontend
  2. Set env variable STATIC_FILES_DIR
  3. And only then build rust lib

This could (in theory) be performed from build.rs like this:

  1. Git checkout ultima/frontend
  2. npm run build
  3. call to resource_dir with dist forlder as an arg

Cache

Currently, user builds request and Posts it by hitting "Run". This is known as Deffered Update (ie only update after hitting Run).

We could improve performance significantly, by sending "incremental" requests. Say, wants to add a single measure to his request (and single measure only). What we could do, is in fact send a request just for that additional measure as soon as user has selected it, and then outer join responce to the existing result !on GroupBy fields!. Polars nodejs has all the built in functionality. It's just about applying it in our context.

Clearly, this only works if user has selected at least 1 Group By field. It also only works if user hasn't changed Group By, or Filters, or Overrides. If they did, then we do not send incremental request.

Additional backgroupnd about outer join.

Prettifying: Table focus

@hamza1311 , would it be possible to:
i) Highlight Column of focus same way as you highlight row
ii) Make the cell value of focus bold
ii) Use accounting format for numbers, ie when number is 997895.11 we should show 997,895.11 This is much more user friendly.

Prettyfy Table

• Highlighting Total lines of the result table
• Highlighting row/column on hoover
• Borders across measures box And fields box (at the moment user might get confused on what is what on the most left hand side)

scan if in memory is too much

It's possible clients will have too much data to hold it in memory all the time. For such usecases we can try to provide an option for lazy scans, leveraging on with_streaming.

Pros:

  1. No in memory frame

Cons:

  1. Performance will be impacted significantly because reading, assigning weights, has to happen per request.

Charts.js

The idea is that a user can convert each table into a chart.

Next to Summarize add Charts
At the top left corner of ech table a small seethrough (graph) icon button.

When user clicks, eather a dropdown or more buttons appear. These follow the hierarchy of chart.js samples. In our case user will need to click "Other Charts", this will open more buttons. Then "Pie".

Attached document Pie tab shows the output for Result from Data tab.
Charts.xlsx

Note: the nature of pie chart is as such for each Measure we will get a Chart. Show them next to each other. Keep in mind it can be 1,2,3,4 etc. Let user close the ones he/she doesn't need.

It would be really good if you could let user perform actions such as Add Labels (in my document Labels are added).

Prevent duplicated GroupBy and Measure

image

For Measure, in theory we could have MeasureA-sum and MeasureA-count. However, for now we can keep it simplier. Just make sure that the measure is unique in the request.

Currently fields is Utf8 columns only - not good enough for Overrides

We can and should be able to override columns of types: DataType::List(DataType::Float64), DataType::Float64, DataType::Utf8 (and bool to be added) as per overrides.rs

There are two ways to achieve this:

  1. Change returned fields in Dataset Info GET API endpoint to return column name and column type. Then FrontEnd to pick Utf8 for fields, and types mentioned above for overrides.

  2. add another key (name it "overrides) into the return of the Dataset Info GET API endpoint, called overrides which would return column names of columns with above datatypes. This key (ie "overrides") then would be used for overrides (instead of fields).

@hamza1311 which one do you prefer?

populate the whole request with a template

A newly created API endpoint http://localhost:8000/FRTB/templates returns a vec of Requests. (Notice they have a new optional field called name). It would be nice for user to search and select from a dropdown for a template. The idea behind this is if an organisation has a template which many users use many times, it's would be much easier for them to select a template rather than type it in. (Moreover, organisation mught prefer users to use a particular template for particular purposes).

Capital Optimisation

Equity bucket 11
DRC weights for CRR2
RRAO
CoveredBond
DayCountConvention for DRC yearfrac

Split Screen

User might want to compare two outputs from two different requests - side by side. (for exmaple, with filter vs without. Or with override vs without). For this, it would be beneficial to allow to "split screen", so that two result tables could be seen at the same time.

Load data from S3

Difficult while polars doesn't allow that. Have to do it via python.

Measures - trying to save some space

It would be really good, if possible, to place AggType next to the Measure name and then allow multiple measures in a row (similar to GroupBy)

image

P.S. This is just thinking how we could save some space

Decimal places on numeric columns

Two digits after the . would be great. 1.9999 Ideally would be 2.00, but if we make it 1.99 that would work too (but 2.00 preferred).

Cache2

Request to be broken down into incremental requests in the backend and then for each single measure in request
to check if such request has been posted. If so, look it up from the dashmap, otherwise send and save incrementally)

apply_multiple scalar=True

Polars 25.1 introduced scalar param to apply_multiple function. This could be used to instead of creating a series of particular height.

i) Request body sharing and ii) Run from request body copy paste

i) Imagine, User A and User are connected to the same backend, ie they are within the same orginisation. If Anatoly right clicks on the table and sees an option to view request which opens a super simple text box with request body and copies and pastes it to clipboard. Then he/she email/message this to User B (this step is independent of us).

ii) Then User B pastes this request into the same text box on his side, and then presses Run/(or presses OK in the same box), and this sends the request to the server , and User B gets the same table on his side.

Calc params to dropdown with search

Hey Hamza,

After going through all the calc params, #13 , I see that some of them have to be really long. There is not much we can do here. It's jsut how the regulator (ECB) prescribes them. As such, I think it would be really good to use dropdown box with search (and removal) for this. What do you think?

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.