Dan
(Dan)
August 11, 2020, 10:08pm
1
Hi everyone,
Has anyone looked at changing the results entry grid UI
I think Plone is using jQueryUI grid, which looks abandoned or at least hasn’t been updated since Sep 2016.
I looked at a few different JS grid UI components but don’t know if they will play nice with Plone.
Handsontable is definitely the nicest but isn’t open source. There’s a comprehensive list here .
Can anyone advise on what they’ve tried or what they’re using?
Would this be best handled as an add-on or as a proposed change to Senaite CORE?
Thanks from a long time lurker.
ramonski
(Ramon Bartl)
August 12, 2020, 10:09pm
2
Hi Dan,
thanks for your Post and welcome to the Senaite Community.
All listing table components since Senaite 1.3.0 are implemented with ReactJS in the Add-on senaite.app.listing .
We abandoned almost all JS from Plone in Version 2.x of Senaite and try to use more modern libraries bundled by Webpack .
Is there something specific you wanted to change in the listing components or is it just because of the outdated jQueryUI library you asked?
Best regards
Ramon
Dan
(Dan)
August 14, 2020, 11:11am
3
Hi Ramon,
That’s awesome. Great work!
The outdated jQueryUI was the main concern, yes.
Thank you - I’m reading through senaite.app.listing now. I want to change the Worksheet UI to a different view - similar to the ‘Worksheet Transposed Listing’ view, but with samples and analytes inverted/flipped, basically this view transposed again.
Reason for this is easier viewing of larger datasets.
Thanks.
ramonski
(Ramon Bartl)
August 14, 2020, 11:31am
4
Hi Dan,
the transposed view of Worksheets is a bit tricky implemented and is based on a different folder item structure:
"before": {}, "after": {}, "replace": {}, "allow_edit": [], "disabled": False, "state_class": "state-active", } item.update(**kw) return item def folderitem(self, obj, item, index): item = super(AnalysesTransposedView, self).folderitem(obj, item, index) pos = str(item["Pos"]) service = item["Service"] review_state = item["review_state"] # Skip retracted folderitems and display only the retest if review_state in ["retracted"]: return item
The listing picks up the different type transposed
to render these items properly:
return item def folderitems(self): super(AnalysesTransposedView, self).folderitems() # Insert the "column key" column self.columns["column_key"] = {"title": ""} # Insert the columns for the slots for pos in self.get_slots(): self.columns[pos] = {"title": "", "type": "transposed"} # Restrict visible columns self.review_states[0]["columns"] = ["column_key"] + self.get_slots() # transposed rows holder transposed = OrderedDict() # first row contains the HTML slot headers transposed.update(self.headers)
However, if you want to follow this path, I would suggest that you use the latest 2.x
Version of Senaite to keep up with the current development.
You can test the new version 2 of Senaite using the 2.0.0rc1
Docker image:
Regards, Ramon
Dan
(Dan)
August 15, 2020, 12:36am
5
Hi Ramon,
Thank you, that’s great.
I did see the 2.x docker image but stuck with 1.3.3
I’ll redeploy and take a look.
Thanks again for your help.
Cheers,
Dan