- 11 Jun, 2019 12 commits
-
-
Tristan Cavelier authored
version | generique | render | onchange | onmodification | ideale have A and B with empty reference, keep typed field reset to empty keep typed ? field reset empty goto A, click next to acces B, type in reference while B form is loading, B is loaded same with B reference = 1 field set to 1 field set to 1 field set to 1 ? field set to 1 have A with empty reference, keep typed field reset to empty field reset to empty ? field reset to empty type in reference (hello), (hello) () () (?) () click View on confirm popup, A is reloaded have A with empty reference, keep typed field reset to empty field reset to empty ? field reset to empty click View to reload the form, (hello2) () () (?) () type in reference (hello2), A is reloaded have A with empty reference, keep typed field reset field reset ? keep typed (the form decides to update the field but should not ? no) type in reference (hello), save, (hello2) (hello) (hello) (why??) (?) (hello2) type in reference (hello2), focus something else, A form is reloaded have A with empty reference, field reset field reset field reset ? field reset (user should see the modification done server side) type in reference (hello), click save, (world) (world) (world) (?) (world) type in reference (hello2), focus something else, interaction add modifications to the reference (world), A form is reloaded ------------------------------------ So ! input.value MUST be updated on onStateChange if modification_dict.hasOwnProperty("value") this.state.value MUST be updated on getContent this.state.value MUST be updated on onEvent change ------------------------------------ UNRELATED NOTES input.value reflects the typed value of the element gadget_input.getContent reflects the typed value of the element too input.value = "hello" replaces the current value to "hello", no matter the state of the input gadget_input.render({value: "hello"}) does not... because gadget.state.value does not really reflects the dom value. if gadget.state.value was reflecting the value, then gadget_input.render({value: "hello"}) reflects the current value to "hello", no matter the state of the input so the form could act : while saving, listen for changes/inputs, (now saved) get the new form but ignore it, put save to orange if changes/inputs were done
-
Tristan Cavelier authored
-
Tristan Cavelier authored
rendering the gadget with the same value as rendered before causes the gadget to be not updated even if the field has been manually edited. /bug #20190204-39AF19 https://nexedijs.erp5.net/#/bug_module/20190204-39AF19
-
Tristan Cavelier authored
-
Tristan Cavelier authored
-
Tristan Cavelier authored
-
Tristan Cavelier authored
-
Tristan Cavelier authored
-
Tristan Cavelier authored
-
Tristan Cavelier authored
-
Romain Courteaud authored
-
Romain Courteaud authored
checkValidity calls getContent, which uses the same mutex
-
- 10 Jun, 2019 1 commit
-
-
Tristan Cavelier authored
-
- 07 Jun, 2019 8 commits
-
-
Romain Courteaud authored
-
Romain Courteaud authored
Improve the query speed by using the default listbox sort.
-
Nicolas Wavrant authored
-
Nicolas Wavrant authored
-
Romain Courteaud authored
OfficeJS's user blocking third party cookie will at least stop entering their credentials many times for nothing
-
Romain Courteaud authored
Followup of nexedi/erp5@340accd1
-
Romain Courteaud authored
-
Vincent Pelletier authored
-
- 06 Jun, 2019 7 commits
-
-
Valentin Benozillo authored
Conflicts: bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_nojqm_css.xml
-
Jérome Perrin authored
In ERP5 software release we now have `mock` egg installed, so we can use it in tests instead of doing manually like this: ```python saved_method = Class.method def patched_method(): ... try: Class.method = patched_method ... finally: Class.method = saved_method ``` /reviewed-on nexedi/erp5!882
-
Romain Courteaud authored
-
Romain Courteaud authored
Change the caching policy to one hour. Use the CDN to publish the page if the backend is down Cache the manifest like the HTML page but force refreshing the manifest to prevent CDN cache inconsistency.
-
Romain Courteaud authored
Defining it inside portal_components ledds to business template update issue. Bypass it by defining the expected behaviour into the web section hook.
-
Romain Courteaud authored
Allow the CDN to cache the content. Use stale_if_error to allow the CDN to return content if backend is down Unify Vary Header.
-
Xiaowu Zhang authored
-
- 05 Jun, 2019 1 commit
-
-
Vincent Pelletier authored
erp5_banking_cash depends from erp5_trade via erp5_banking_core.
-
- 04 Jun, 2019 1 commit
-
-
Jérome Perrin authored
Gadgets: * Support `changed` flag from `erp5.js`: ![unsaved changes sreenshot](/uploads/cff30eae0a5d87df26bac13d43e1da3f/image.png) * Comply with translation protocol used in ERP5JS. This does not translate, because it would not be easy ( ERP5JS translate client side with a json database of message, but in xhtml style the translation is performed server side with localizer) and not so important now. What matters is just that we can somehow reuse gadgets. Style: * While we are at it, fix a minor annoyance that the button in "long" dialogs where not easy to reach, at least on chrome ![before](/uploads/e03a8311571806a55fd72f6923cf855a/Screenshot_2019-05-31_at_10.38.05.png) ![after](/uploads/5753bc44fbc0f69b6adfeb14b3367236/Screenshot_2019-05-31_at_10.38.37.png) /reviewed-on nexedi/erp5!880
-
- 03 Jun, 2019 5 commits
-
-
Romain Courteaud authored
-
Romain Courteaud authored
Remove all globals to allow multiple live tests running on the same page. Stop reading the test output if the browser tab doesn't have the focus. Stop hardcoding the URL in the javascript. Stop hardcoding other fields path in the javascript (+ embed the textarea in the gadget). Propagate all parameters via formulator. It will allow to use this gadget from another context document. Run live test from the RJS UI
-
Jérome Perrin authored
This way we can use gadgets using of ERP5JS translation API in xhtml style. This is really minimal compatibility layer and translation is not actually performed.
-
Vincent Pelletier authored
Sorting in a module is terrible for performance as soon as there is more than a trivial amount of documents in that module.
-
Jérome Perrin authored
Test was failing because family mapping is loaded while connection is already closed. ``` Traceback (most recent call last): File "erp5/Products/ERP5/tests/testInvalidationBug.py", line 156, in testLateInvalidationFromZEO activity_tool.tic() File "erp5/product/ERP5Type/tests/ProcessingNodeTestCase.py", line 96, in tic self._orig_tic(processing_node, force) File "erp5/product/CMFActivity/ActivityTool.py", line 1326, in tic node_family_id_set = self.getCurrentNodeFamilyIdSet() File "erp5/product/CMFActivity/ActivityTool.py", line 921, in getCurrentNodeFamilyIdSet return self._getNodeFamilyIdDict().get(getCurrentNode(), ()) File "ZODB/Connection.py", line 909, in setstate self._setstate(obj, oid) File "ZODB/Connection.py", line 953, in _setstate p, serial = self._storage.load(oid, '') File "ZEO/ClientStorage.py", line 825, in load result = self.loadBefore(oid, m64) File "ZEO/ClientStorage.py", line 839, in loadBefore raise ClientDisconnected() ClientDisconnected ``` Load the object explicitly before so that it's in cache. /reviewed-on nexedi/erp5!881
-
- 31 May, 2019 5 commits
-
-
Alain Takoudjou authored
SlapOS and NMS documentation are moved into bt and committed in erp5-doc.git. This will allow to install documentation in another erp5 and also to test them. /reviewed-on nexedi/erp5!875
-
Vincent Pelletier authored
3 independent conditions does not guarantee to find the next row sorted simultaneously on those 3 values.
-
Vincent Pelletier authored
listActions result is cached, and may refer to non-existing workflows and/or worklists. Tolerate either of these being missing.
-
Jérome Perrin authored
This way the "you have unsaved changes" pops up also when navigating away after changing gadget content.
-
Jérome Perrin authored
When the page height is larger than viewport, the scrollbar hides the button on chrome. Also does the "Loading" status message on chrome. By using a margin, we make sure buttons are not behind scrollbar or status message and are easier to reach.
-