5
Duplicated cells are disappearing
complete
J
Johannes Woehler
Hi,
I have a row with two cells which contain a label. I duplicate one of the cells twice and change the labels. Then I save. When I switch the page and come back, the duplicated cells are gone and instead the Save button is appearing again. I tried it now several times with two different pages but the issue is still there.
Any idea what is going on?
Thanks,
Jo
Log In
Activity
Newest
Oldest
Kristian Gerkman
complete
Kristian Gerkman
Merged in a post:
Saving app loses app components
C
Chris Ice
Edit existing app, duplicate a component, save - exit app or reload page - component is lost/gone!
Chrome Browser, Mac OS X
Kristian Gerkman
Merged in a post:
Row cells can be duplicated and if they are, they disappear after navigating to different page
Merituuli Melkko
H
Harri Sarsa
Very weird behavior – we'll definitely get to the bottom of this, but holidays are taking a toll in our ability to deep-dive here.
Is it just about the Row component BTW?
C
Chris Ice
@Harri Sarsa: In my case, it's duplicating a cell within a row. If I duplicate this cell, save it, the app running in preview will update to contain the added cell, but exiting composer and coming back in will show this cell is lost.

H
Harri Sarsa
@Chris Ice: I see — it seems to be a bug with how Composer handle’s row cells specifically, so at least the root cause is there. We’ll find a way to either block cell duplication in row specifically, or make it work as expected.
Kristian Gerkman
Yeah most definitely this is not supposed to happen! Has this been happening for long? I tried to replicate this, but couldn't so if this still happens to you, could you please open the developer console and then replicate this, to see if any error appear? I noticed that the save button became visible again after you saved, so something must have gone wrong with the saving. Most likely it is network error on our side, but can't be sure from the video. Also if it still occurs do you give me permission to look at your app?
Thank you!
C
Chris Ice
@Kristian Gerkman: Yes, this has been going on for some time (4-5 months?). I avoided changing the app because of this problem, but the most recent updates to AG brought me to making updates to my own app which brought this problem up again. I do see some clues in the console, output below. Def OK to look at the app, ID 88990.
Some messages have been moved to the Issues panel.
[Violation] Forced reflow while executing JavaScript took 30ms
raven.js:135 rawDolan {i18n: {…}, name: "WeatherStation 2", fonts: Array(5), theme: {…}, title: "WeatherStation 2", …} {env: "production", images: Array(0), locale: "en", defaultLocale: "en", urls: {…}}
raven.js:135 transforming to array flows for DolanRuntime {i18n: {…}, name: "WeatherStation 2", fonts: Array(5), theme: {…}, title: "WeatherStation 2", …}
raven.js:135 longPoll open_page
[Violation] 'setTimeout' handler took <N>ms
[Violation] 'setTimeout' handler took <N>ms
[Violation] 'setTimeout' handler took <N>ms
[Violation] 'setTimeout' handler took <N>ms
[Violation] 'setTimeout' handler took <N>ms
[Violation] 'setTimeout' handler took <N>ms
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
raven.js:135 runOnlineSearch:: {query: "", type: "frontend-logic", filter: "is-core", body: {…}, offset: undefined, …}
raven.js:135 Node-RED: AppGyver standalone
raven.js:135 add category input
raven.js:135 add category output
raven.js:135 add category function
raven.js:135 red/runtime/nodes/credentials.load : user provided key
raven.js:135 subflows changed, refreshing
raven.js:135 runOfflineSearch:: {query: "", keywords: Array(1), type: "any", ownershipFilter: null, applicationDolan: e, …}
raven.js:135 no incoming changes
raven.js:135 longPoll undefined
raven.js:135 got long poll result {state: {…}, cursor: 1608216800926}
raven.js:135 long poll ok, starting new shortly
raven.js:135 no incoming changes
raven.js:135 longPoll undefined
raven.js:135 selectedComponent change detected Component {args: {…}, args_definition: Array(2), description_version: 32, composite_instance_changed: false, intro: undefined, …}
raven.min.js:2 [Violation] 'click' handler took 495ms
raven.js:135 selectedComponent change detected Component {args: {…}, args_definition: Array(2), description_version: 32, composite_instance_changed: false, intro: undefined, …}
raven.js:135 already had object flows before {i18n: {…}, name: "WeatherStation 2", fonts: Array(5), theme: {…}, title: "WeatherStation 2", …}
raven.js:135 computed diff in 15/26/56 ms (41) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
raven.js:135 longPoll unsaved_changes
raven.js:135 ignoring older poll
raven.js:135 already had object flows before {i18n: {…}, name: "WeatherStation 2", fonts: Array(5), theme: {…}, title: "WeatherStation 2", …}
raven.js:135 patch is {dolanDiff: Array(41), reverseDiff: Array(41), changeLog: "Console logic, Console UI"}
raven.js:135 longPoll save
raven.js:135 rawDolan {i18n: {…}, name: "WeatherStation 2", fonts: Array(5), theme: {…}, title: "WeatherStation 2", …} {env: "production", images: Array(0), locale: "en", defaultLocale: "en", urls: {…}}
raven.js:135 transforming to array flows for DolanRuntime {i18n: {…}, name: "WeatherStation 2", fonts: Array(5), theme: {…}, title: "WeatherStation 2", …}
raven.js:135 longPoll no_changes
raven.js:135 longPoll open_page
raven.js:135 subflows changed, refreshing
raven.js:135 selectedComponent change detected Component {args: {…}, args_definition: Array(2), description_version: 32, composite_instance_changed: false, intro: undefined, …}
raven.min.js:2 [Violation] 'load' handler took 1187ms
raven.js:135 longPoll open_page
[Violation] Forced reflow while executing JavaScript took 63ms
raven.js:135 runOfflineSearch:: {query: "", keywords: Array(1), type: "any", ownershipFilter: null, applicationDolan: e, …}
/builder/:1 GET https://www.example.com/index.html net::ERR_NAME_NOT_RESOLVED
raven.min.js:2 [Violation] 'setInterval' handler took 56ms
raven.js:135 used subflow forks {}
raven.js:135 ignoring older poll
www.example.com/index.html:1 GET https://www.example.com/index.html net::ERR_NAME_NOT_RESOLVED
Image (async)
eval @ RenderTemplate.js:27
getDimensions @ RenderTemplate.js:11
adjust @ RenderTemplate.js:168
eval @ RenderTemplate.js:203
d @ raven.js:521
setTimeout (async)
raven.js:135 subflows changed, refreshing
raven.js:135 ignoring older poll
raven.js:135 got long poll result {state: {…}, cursor: 1608216817513}
raven.js:135 long poll ok, starting new shortly
raven.js:135 ignoring older poll
raven.js:135 ignoring older poll
raven.js:135 no incoming changes
raven.js:135 already had object flows before {i18n: {…}, name: "WeatherStation 2", fonts: Array(5), theme: {…}, title: "WeatherStation 2", …}
raven.js:135 computed diff in 26/39/51 ms (27) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
raven.js:135 longPoll unsaved_changes
raven.js:135 got long poll result {state: {…}, cursor: 1608216818623}
raven.js:135 long poll ok, starting new shortly
raven.js:135 no incoming changes
raven.js:135 longPoll undefined
raven.js:135 got long poll result {state: {…}, cursor: 1608216819424}
raven.js:135 long poll ok, starting new shortly
raven.js:135 no incoming changes
raven.js:135 longPoll undefined
Kristian Gerkman
@Chris Ice: Sorry for the delay, are you using any kind of VPN? It looks like the images on composer are loaded over non-secure connection(meaning http not https) for some reason. I tried to save the app and it looked to be working fine for me. But if you use VPN it might be causing some weird interaction.
Have you tried to save some other app? Or creating a new app and then saving it.
The weird thing is that I don't know why the images are downloaded over non-secure connection.
C
Chris Ice
@Kristian Gerkman: No vpn here, no. And I was able to create a test app and save it ok.
In the console output above, this line:
raven.js:1567 GET https://platform.appgyver.com/apps/88990/services.json 403 (Forbidden)
...looks pretty suspect. I can replicate this in my browser as well. Perhaps this is a clue?
Kristian Gerkman
@Chris Ice: Do you get the 403 forbidden with a new app also?
I assume that, this app(88990) where the errors happen is not in use?
I can forward this ticket to someone who can look at the app more closely, but the holiday season is coming so it might take some time before someone can take a look.
Sorry about this. :/
C
Chris Ice
@Kristian Gerkman: Ah, good point, yes, the new app does it too - so that's a false clue:
/apps/182658/services.json:1 Failed to load resource: the server responded with a status of 403 (Forbidden)
Correct, 88990 is my personal app and I am only running it within preview on tablets in my home. While I don't want the existing app to break (it's working ok), there is no pending end-user requirements so time is ok.
An interesting clue also is, even when I add the component and save it - despite the component being lost in my browser - the preview app KEEPS the component so the preview app and the browser end up in an inconsistent state.
1) Edit app in composer, add component, save
2) Preview on tablet updates, HAS the added component
3) Exit app in composer, and re-edit the app - component is now missing
4) Preview will retain the "lost" component until the app is saved again, and will take on whatever was in composer at the time it was saved
C
Chris Ice
Oddly, the middle row added-component has now saved and exiting and re-entering composer now shows the added component consistently on the middle row ONLY. I don't know what changed, just worked.
However, the bottom row exhibits the same erroneous behavior that started the thread - duplicate one of the components in the bottom row, save it, preview on my android tablet updates and shows the added component, yet when you exit and re-enter composer the added component is gone. Again, bottom row only now.
Kristian Gerkman
@Chris Ice: Hey, sorry about the delayed answer, I did try to replicate the bug with the middle row, not sure if that has something to do with your comment above. But anyways, this ticket will be looked at in the upcoming weeks (takes some time due to holidays). Thanks!
C
Chris Ice
@Kristian Gerkman: Hiya - I created a new app, and am seeing the same behavior. If I use the row component and duplicate cells within it, save, exit, and re-enter the app - the duplicated cells are lost.
Can we look at this together somehow?
C
Chris Ice
Found it, or found a workaround anyway. You cannot add cells to a row by duplicating a cell on a row. You have to edit the row style and increase the number of cells there. Using this path, I am able to add my row cells, save, exit, and re-open and find my cells are still there.
Kristian Gerkman
@Chris Ice: Hey, sorry about the wait. The issue indeed seems to be that if a row cell is duplicated, it somehow does not register and it is not saved.
I've reported this forward so it'll be fixed as soon as possible! Thank you!
H
Harri Sarsa
planned
H
Harri Sarsa
Looks like duplicating cells is broken, good catch! We'll put this on the fix list. What does work is increasing the cell count via the Style panel on the right.