custom rows in react-admin list view - datagrid

I am using the react-admin list component and want to add a custom layout for specific rows.
Usually, each row is build by the list component using the data from the data-provider. I would like to customize specific rows based on the data of the row. These specific rows should not use the standard layout (and columns), but a specially defined one.
Here is a example, what I am looking for:
The special rows should be selected according to the data object.
Standard data object, which forms a standard row, may look like:
{
id: 127,
Reference: "OEPEE4",
author_id: 12,
...
}
The special entry may look like:
{
id: 128,
isSpecial: true,
text: "Lorem Ipsum ...",
...
}
Does anyone know how to achieve this?
Thanks!

I think the key lies in creating your custom DataGrid component's body and rows, because that way you would be able to check the value of record.isSpecial, as the record is passed to the component. Take a look at this part of the docs.
I tried playing around a bit with a custom DataGridRow (here's the sandbox), and I was able to display only the text when the record has the isSpecial property, although I think you would need to style the cells and the row. Maybe you get some ideas from it. Let me know if it helps.

Related

Antd - Form.List prefill

I use https://codesandbox.io/s/wonderful-lichterman-br63z and would like to prefill items (with specific data) in the form.
What is the best approach to do this ? I have entries in redux which I would like to get into this dynamic form prefilled.
I know that I can create placeholders, but how can I add specific data ?
What really makes it difficult is that I need a relation between a rendered item and an entry from a data array.
Please see:
https://codesandbox.io/s/blissful-hopper-4e6i0?file=/index.js
I hope the solution works for your use case. You will need to replace my hard-coded default values with desired initial values from your redux store. Cheers!
Update:
I found a better implementation. Turns out add method allows one to set a dynamic fields defaultValue
See:
https://codesandbox.io/s/fervent-morning-c9vhk

Display label based on, field on one data-source (singular) being within another data-source fields many

I am still learning, and looking for help on how to display a label based on one data-sources field value, being within another data-sources field value list.
I have one calculated table, displaying rows of documents within a folder, and wish to use a field representing the document number in that data-source, so that if it's ANYWHERE within another tables field it displays my label.
I've been trying to use projection as I think this is how to achieve it.
I can get it working based on both the current #datasouce.item.fieldnames but need it to base the calculation on all possible numbers in that tables field (Image below should make it easier to understand).
I expect that it has something to do with projections, but can't find anything within the learning templates or anywhere else to resolve the issue.
I think the following should work for you. For the 'Reserved' label have the following binding for the text property:
(#datasources.project_quotes.items..quotenumber).indexOf(#widget.datasource.item.Qnumber) !== -1 ? 'Reserved' : ''
I would suggest alternatively just to include a field in your calculated datasource and making the determination in your server script.

SmartGWT ListGrid FilterEditor getValue

I have a little appliation that shows MySQL data in web browser ListGrid. It has 14 columns.
I would like to upgrade it so the user could add query parameters.
For this job the best I could imagine is the grid.setShowFilterEditor() that put text boxes above the column headers and will live together with the column header when moved or resized.
I planned to use the filter button FilterEditorSubmitHandler() to get the filter values and run the query.
Unfortunately, I can not find any solution to get the text from a certain filter box eg. the value that was written by the user into the box above Column_#1. Is there any way to do that or this FilterEditor grown together with the DataSources object, and not available for any other data binding?
Something like this, but without using DataSource:
http://www.smartclient.com/smartgwt/showcase/#grid_sortfilter_disable_filter
As per my knowledge, filter editor works on com.smartgwt.client.data.DataSource only.
If you want to have filterEditor in ListGrid, you have to use DataSource or go for some custom implementation.

Reorder Entity Properties

I have an Entity (Extensions) with a number of properties (e.g. id, extension, prefix) and a few navigation properties (phones_departments, phones_buildings) - they show up in the order they display in the EDMX...but what if I want them to display in a different order? I'm using Dynamic Data - is there a way to accomplish this?
are you showing your data in a grid?
if yes, you could sort grid columns based on some other property. You could for example have a ColumnOrder property in your data store and update that. The code to sort the columns varies per grid, but it is usually easy to do.
Main point being is that you want to modify the display level logic, not the way the actual object is created. since your order can always very per application.

Flex 4 How do I access a specific cell by index?

I would like to edit a cell by the row and column indexes so essentially do the following:
advDataGrid[2][3] = "Dogs"
so that I am setting the data grid row 2 and column 3 to Dogs. I cannot for the life of me figure out how to do this!
Side note: I need this because I am trying to allow the user to copy a section of an excel file to a section of an AdvancedDataGrid like Google Docs does. I am using this idea to do it: http://mannu.livejournal.com/348299.html
Thanks! Any help will be greatly appreciated!
In general you want to operate on the dataProvider rather than the presentation (AdvancedDataGrid). So in your case, I would get the item associated with the specified row from your dataProvider and modify whichever element is specified to "Dogs". So something like this: adg.dataProvider[row].someColumnData = "Dogs"
EDIT: "someColumnData" refers to whatever property you have set for the column to display. So when you defined your AdvancedDataGrid's columns, you set the 4th column to use the "someColumnData" property of the items in your dataProvider, and you want to change the value in the 4th column, then you'd set it as described above. Hope that clarifies things.
Flex components are data driven, so you should modify the data provider of the grid.
What if you want to edit specific individual cells, eg I want to to keep running totals of some cells in other cells, IE: as a user edits I update whole columns.
Surely their must be a way to walk the array and get Column4.row6 = something.

Resources