We apologize for the instability of composr.app and appreciate your patience. We are working on the statistics addon and trying to find an optimal way to store and render data. Unfortunately, we have yet to find a solution that can handle the traffic (and therefore, tens of millions of statistical records) of composr.app. We're working hard on one.
#3647 - Block AJAX loading
This is a spacer post for a website comment topic. The content this topic relates to: #3647 - Block AJAX loading
1. Many calls to $dom.internaliseAjaxBlockWrapperLinks() had a wrong parameter name, sorry about this :(.
2. After fixing above, the "internalising" was only working once because when new HTML was loaded via AJAX, $dom.internaliseAjaxBlockWrapperLinks() wasn't getting called afterwards to attach event listeners to the new links and forms. This is because we got rid of inline <script> tags, we now use "behaviors" instead which are applied any time new HTML is inserted using $dom.* functions. They are called on an element using data attributes. So I added a behavior named [data-ajaxify-links] to fix this.
3. The on-change event listeners attached for triggering the form submit event were also lost when loading new HTML, this is where event delegation shines. I simply added a 'js-onchange-submit-form' class to the relevant elements and added this to the template function: $dom.on(container, 'change', '.js-onchange-submit-form', function (e, el) { $dom.trigger(el.form, 'submit'); });.
4. The submit event needed to be triggered on the form, not the input elements: $dom.trigger(el, 'submit'); -> $dom.trigger(el.form, 'submit');
So the main_staff_actions block is working now but other stuff using $dom.internaliseAjaxBlockWrapperLinks() is probably broken as well :(, testing/fixing that now.
1. Many calls to $dom.internaliseAjaxBlockWrapperLinks() had a wrong parameter name, sorry about this :(.
2. After fixing above, the "internalising" was only working once because when new HTML was loaded via AJAX, $dom.internaliseAjaxBlockWrapperLinks() wasn't getting called afterwards to attach event listeners to the new links and forms. This is because we got rid of inline <script> tags, we now use "behaviors" instead which are applied any time new HTML is inserted using $dom.* functions. They are called on an element using data attributes. So I added a behavior named [data-ajaxify-links] to fix this.
3. The on-change event listeners attached for triggering the form submit event were also lost when loading new HTML, this is where event delegation shines. I simply added a 'js-onchange-submit-form' class to the relevant elements and added this to the template function: $dom.on(container, 'change', '.js-onchange-submit-form', function (e, el) { $dom.trigger(el.form, 'submit'); });.
4. The submit event needed to be triggered on the form, not the input elements: $dom.trigger(el, 'submit'); -> $dom.trigger(el.form, 'submit');
So the main_staff_actions block is working now but other stuff using $dom.internaliseAjaxBlockWrapperLinks() is probably broken as well :(, testing/fixing that now.