parallaxinc / BlocklyProp

Blockly based visual programming editor for Propeller C
MIT License
42 stars 25 forks source link

Add a public/private icon column to the My Projects listing #1581

Open paragitadmin opened 5 years ago

paragitadmin commented 5 years ago

The My Projects page contains a grid that lists projects owned by the logged in user. The columns are:

The proposal is to add a fourth column that indicates the public/private status of the project. This will provide a quick visual queue to the user as to the visibility of the projects contained in the list.

cbradyatinquire commented 5 years ago

A DATE-modified column would be VERY useful (esp if sortable by this)

zfi commented 5 years ago

Great idea! Append the Last-Changed date and the public/private columns to the existing grid. The default sort order of the grid contents should be on the Last-Changed column, in descending order.

@MatzElectronics : I am looking at the REST endpoints to see if adding these fields is a breaking change. If it is, I can add a new endpoint that provides the additional data.

MatzElectronics commented 5 years ago

I believe that's all provided. The current data display UI engine is the problem. Our current one is too unstable to try anything new - we need to switch to the one I found before - datatables.net I think...Just need to figure out how to server-side it to make it flow nicely, because the one I found has a really nice vertical scroll feature.

PropGit commented 5 years ago

It's not clear from this issue, but @zfi is working on a fantastic search engine solution behind-the-scenes. It seems to sport all the features we want and will make the dataset filtering very easy to deal with. Also, it won't be hitting the main database for this or the Community list, which is also a big plus.

zfi commented 5 years ago

@MatzElectronics, the datatables.net package looks like it will work well. The initial plan is to set up a new endpoint to support the datatables by providing the server-side support that is noted in their documentation.

As @PropGit noted, the data source will be a search engine (Elasticsearch) instead of the database. It supports the pagination requirements and will handle the filtering of private and COPPA restricted projects when appropriate. I am omitting a lot of details here to keep this simple.

The browser code will call a new endpoint to obtain a list of projects by passing a value indicating how many project to return; a value that indicates the starting position in the overall list of projects; an optional array of sort order specifications; an optional query string that contains a list of keywords that the server should use to filter the results. There may be other options but we will cross that bridge when we get there.

The first phase of this feature is not going to address some of the issues we had discussed earlier, such as caching the results or other enhancements to minimize network traffic. We will drop the new datatables package into the browser code, wire it up to the new endpoint and tune for reliable function. My hope is that I will be able to comment out a block of code, or a few blocks, that handles the project listing grid.