Roll20 uses cookies to improve your experience on our site. Cookies enable you to enjoy certain features, social sharing functionality, and tailor message and display ads to your interests on our site and others. They also help us understand how our site is being used. By continuing to use our site, you consent to our use of cookies. Update your cookie preferences .
×
Create a free account

Repeating Fields Issues: Pathfinder Sheet

1454560158
vÍnce
Pro
Sheet Author
Done
So this is only happening on the Beta sheet campaign, not on the current version that is Live?
1454604827

Edited 1454604844
Magik
Sheet Author
Riley D. said: So this is only happening on the Beta sheet campaign, not on the current version that is Live? The PF Beta game is just where I tried to repro the issue. Other players have reported having the same issue still in their own games. I'll repro it in another test game and provide the console log.
1454607401

Edited 1454607552
chris b.
Pro
Sheet Author
API Scripter
it's doing it in dev but not prod. the code is different though, when i copy the code back from prod it doesn't happen in dev. sigh guess i'll figure out what i did in the dev code.  the only real difference is, for the on("change:repeating_section")  where it tries to set the row id, I did change that to try to get the id from the eventInfo.sourceAttribute  instead of using getSectionIDs. but of course there is no id it's just repeating_section_attributename I guess i can't do that if it's not a real row yet, since the eventhandler is still being called.... hmm I was going to use eventInfo for more.. 
1454611484

Edited 1454611814
vÍnce
Pro
Sheet Author
Riley D. said: So this is only happening on the Beta sheet campaign, not on the current version that is Live? Doing a quick test, it only seems to be happening with our beta code...  Although as Magik mentioned there has been at least one user saying they are seeing this behavior happening with new characters, apparently using the live sheet.  This hasn't been verified .  I've suggested he post here. Karankwan said: Hi guys, First of all: is this a known problem that seemingly randomly empty attack sections are added to the sheet? I didn't see you guys discussing it lately so I thought either there's a fix I don't know of or it's a more individual problem. Which would be weird since it occurs on different PCs and in different campaigns. these new entries are all boxed in by red borders. I would upload a picture put I'm currently on mobile, sorry. It tried to find some patterns in the randomness and found that if I create a new char and add lets say two attacks. The next character I create has two empty rows already. I delete them and give him 3 attacks, leading to the third new character having 5 empty rows. ...
1454612108
chris b.
Pro
Sheet Author
API Scripter
i fixed it, i will send vince the update. i just can't do what i wanted :( it is because of the dropdowns that have <option value="@{somefield}"> that events get fired for rows that don't yet exist, throwing off the javascript. One way around would be to remove the @{} around them, the javascript would still work, i'd just have to add more event handlers to watch for those instead of using the autocalc system. And on the sheet open i'd have to replace them all. I didn't change any of those dropdown values since I didn't want to break existing sheets.but i guess if we replace it all... well for now the rollback will have to be enough till work slows down, speaking of which i have to get back :)
chris b. said: it's doing it in dev but not prod. the code is different though, when i copy the code back from prod it doesn't happen in dev. sigh guess i'll figure out what i did in the dev code.  the only real difference is, for the on("change:repeating_section")  where it tries to set the row id, I did change that to try to get the id from the eventInfo.sourceAttribute  instead of using getSectionIDs. but of course there is no id it's just repeating_section_attributename I guess i can't do that if it's not a real row yet, since the eventhandler is still being called.... hmm I was going to use eventInfo for more..  If you're getting an on("change") event then it should have the ID in there. The change event doesn't fire until the first time that the row is modified and something is created. Now there may not be attributes present for all fields in the row at that point yet, but it should give you an ID...
1454613195

Edited 1454613727
chris b.
Pro
Sheet Author
API Scripter
i think the event comes from the autocalc code, since there is a <select name="attr_myselect" ><option value="@{someOtherFieldOutsideRepeatingSection}" > and whenever that outside field was modified, a change event would be detected on the selected option. so in on("change:repeating_class-ability"),function(eventInfo){ console.log(eventInfo.sourceAttribute);}); i'd see the value with no id, where the field was the select "myselect" above ill make a demo that is smaller than the giant PF sheet.
chris b. said: i think the event comes from the autocalc code, since there is a <select name="attr_myselect" ><option value="@{someOtherFieldOutsideRepeatingSection}" > and whenever that outside field was modified, a change event would be detected on the selected option. so in on("change:repeating_class-ability"),function(eventInfo){ console.log(eventInfo.sourceAttribute);}); i'd see the value with no id, where the field was the select "myselect" above ill make a demo that is smaller than the giant PF sheet. That would be great, thanks!
1454692437
Magik
Sheet Author
There is another repeating entry issue, where when you add a new entry, it sorts itself after you tab out of the first field that you change. It also takes on the values of another repeating entry instead of the default that the sheet developer expected. Here is a video capture of my reproducing the issue. I have the repeating entry IDs exposed and the java console open for reference. &nbsp; <a href="https://youtu.be/ROPMzrKyHhQ" rel="nofollow">https://youtu.be/ROPMzrKyHhQ</a>
Magik -- You have some bad rows that are affected by a bug we had a while back. The ones highlighted in red need to be deleted and re-created or you will continue to see that behavior. Sorry for the trouble, we tried to get the word out about this a few weeks ago. Once those rows are deleted you will no longer see this behavior (or shouldn't, anyway...let me know if you still do).
1454703272
vÍnce
Pro
Sheet Author
Riley D. said: Magik -- You have some bad rows that are affected by a bug we had a while back. The ones highlighted in red need to be deleted and re-created or you will continue to see that behavior. Sorry for the trouble, we tried to get the word out about this a few weeks ago. Once those rows are deleted you will no longer see this behavior (or shouldn't, anyway...let me know if you still do). If that fixes the issue I'll add that info to the Attention text and maybe Chris can update the top of the PF thread. &nbsp;Please report back on your progress Magik. &nbsp;Thanks
1454710595
Magik
Sheet Author
Vince said: Riley D. said: Magik -- You have some bad rows that are affected by a bug we had a while back. The ones highlighted in red need to be deleted and re-created or you will continue to see that behavior. Sorry for the trouble, we tried to get the word out about this a few weeks ago. Once those rows are deleted you will no longer see this behavior (or shouldn't, anyway...let me know if you still do). If that fixes the issue I'll add that info to the Attention text and maybe Chris can update the top of the PF thread. &nbsp;Please report back on your progress Magik. &nbsp;Thanks Yes, that fixed the issue. I haven't been able to repro it after getting rid of the red-boxed entries. Thanks!
1454716263
Magik
Sheet Author
Magik said: Yes, that fixed the issue. I haven't been able to repro it after getting rid of the red-boxed entries. Thanks! I shared this finding with my colleagues. One of them is color blind and cannot tell the difference between a black-bordered entry and a red-bordered entry. Perhaps some additional marking of the invalid entry beyond just color would be worthwhile. Maybe something as simple as making the line broken would help.
1454728213
Magik
Sheet Author
Please review this video. It demonstrates how slow the repeating items can get. <a href="https://youtu.be/LMZsHzr5Rq0" rel="nofollow">https://youtu.be/LMZsHzr5Rq0</a> I created this video today from a game ( <a href="https://app.roll20.net/campaigns/details/684356" rel="nofollow">https://app.roll20.net/campaigns/details/684356</a>) on the main server. I included the java debug console in the video. To make one attack entry, it takes over 5 minutes. This video doesn't go into the additional attacks (iterative attacks) settings for the attack or the modifications to the macro text. In the video, you can observe the mouse pointer gets stuck as the icon that it was when I change fields (hitting tab most of the time). I hover over a field and other areas to demonstrate that the mouse pointer icon doesn't change until java finishes its task. Sorry about the sound; I didn't mean to have that recorded also. Guessing, it seems like every change of fields (tab or mouse click) causes the sheet to iterate through all repeating fields in the sheet. I don't see why that would be necessary.&nbsp;Please help the sheet designers identify what needs to change to speed this up. If this is a server-side repeating items issue, please help.&nbsp;Waiting for the browser to finish doing things that take 10 to 20 seconds when changing fields (even auto-complete fields) is really rough to work with. When I tab to the next field, I wait 10 seconds for it to change to the next field (probably during a save) then another 10 seconds to be presented with a cursor or mouse action to select a drop-down, etc. Thanks!
1454729162
Magik
Sheet Author
I added my 42nd class ability/feature and the new item moved up to position #41. There is nothing with a red border. Here is the java console after the click to Add. Maybe it has something to do with the entry ID having a dash at the end? No idea really. Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 34ms app.js?1454428476:36 Finding list of dirty attributes took until 40ms app.js?1454428476:36 Querytest took until 43ms app.js?1454428476:36 Set values took until 577ms app.js?1454428476:36 Took 584ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 22ms app.js?1454428476:36 Finding list of dirty attributes took until 33ms app.js?1454428476:36 Querytest took until 36ms app.js?1454428476:36 Set values took until 552ms app.js?1454428476:36 Took 557ms app.js?1454428476:45 window resize app.js?1454428476:30 Final set zoom! app.js?1454428476:30 UPDATE GL SIZE! app.js?1454428476:30 Final set zoom! Here is a screenshot. The game is the PF Beta game.
Okay, I'll take a look at both of these issues Monday. Thanks for providing such detailed test cases!
1454866308

Edited 1454897066
chris b.
Pro
Sheet Author
API Scripter
I did just send Vince some updated code so it won't loop through all rows looking for new rows. Now, it will only update the "ID" when you hit the "IDs &gt;" arrow, to view the ID and see the button to print it. That should help speed things up a little. Plus I eliminated a few round trips to the server. It is still slow though. There are only about 2 more round trips I could possibly eliminate, but even then, it is as fast as I can make it. I don't know why it's slow. BUT at least it should not get slower the more items you add anymore. Also I updated the CSS so the error rows can be more easily seen, thicker and using dashes.
1454913806
Magik
Sheet Author
chris b. said: I did just send Vince some updated code so it won't loop through all rows looking for new rows. Now, it will only update the "ID" when you hit the "IDs &gt;" arrow, to view the ID and see the button to print it. That should help speed things up a little. Plus I eliminated a few round trips to the server. It is still slow though. There are only about 2 more round trips I could possibly eliminate, but even then, it is as fast as I can make it. I don't know why it's slow. BUT at least it should not get slower the more items you add anymore. Well done! That cut out over half of the delay. Each change still takes about 7 seconds, but that is better than 20! Hopefully this can be tweaked a bit further after reviewing the video or the issue yourself.&nbsp;I took this video using the Mythic Monk character on the PF Beta game, which I'm making into a high-level ultimate version of my current low-level character in a production game. GMs of that game should be the only people that have access to the Mythic Monk character. The Classes tab repeat entries don't (and didn't prior to this change) seem to have the same type of delays as the Attack entries. <a href="https://youtu.be/lgnqkzxfAJo" rel="nofollow">https://youtu.be/lgnqkzxfAJo</a>
1454951655

Edited 1454951895
Riley D.
Roll20 Team
So I think there are two issues here: 1) (The primary issue) is that just updating all the values on the sheet at all takes a long, long time. Just loading the sheet on my computer to open it the first time takes 7 seconds. Most of that time is being spent in the "updating values" code, so something is going on there. Might have to do with all the repeating sections, for sure (every repeating section added is probably adding hundreds of new fields that need to be filled in).&nbsp; As a comparison point, the Mythic Monk character has 12,412 fields that are present on the sheet. Adding a new attack added around 80 of those it seems like. The&nbsp;Ostihul Ajitrou character, on the other hand, while largely not filled in, only has 4,219. So somewhere between those two characters the number of fields is increasing by 3x. I've noticed that once you get above around 6,000-8,000 fields, the systems starts getting really, really slow. (You can check how many fields are present on a character by running "$("*[name^=attr]").length;" in your console while only one sheet is open). 2) The secondary issue, is that the Sheet Workers are updating a lot of values every time a change is made (possibly more than they need to be? Although I'm not sure). Those value updates are causing large parts of the sheet to re-render, which is re-triggering 1). So it's not actually that the Sheet Worker itself is slow at all, but rather that the Sheet Worker is modifying values which is causing the sheet to re-render, and the re-rendering itself is very slow for a sheet with so many fields. So what that means is, it might be possible (maybe, I don't know) to keep optimizing the Sheet Workers so that they are modifying fewer values. But at the end of the day, as long as it's taking 7 seconds to load the initial sheet, it's going to be pretty slow. So I'll see if I can look into both of those things and if there's anything we can do on our end to help.
1454951930
chris b.
Pro
Sheet Author
API Scripter
I put my latest changes in a pull request to production. So prod will be a tiny bit faster :) Plus prod will have the better error notification of big dotted lines. It will be version 0.21 Bug in .21: if you have an error repeating row from the very first few hours of the new update to the servers (in December), then editing STR will create more rows. BUT, if you have an error repeating row from more recently, or no error rows, then editing STR will not result in more rows added. But there should be next to no one left with those original errors. And now the error is easier to see so users should realize something is wrong with that row.
1454952766

Edited 1454952892
chris b.
Pro
Sheet Author
API Scripter
Speed:&nbsp; there are 2 improvements i can make : Collapse # of gets and sets (within a row) Right now if you edit a dropdown, or the _damage or _attack fields (which are macro fields that get evaluated) in a repeating_weapon, the system does this:&nbsp;4 getAttrs and 2 setAttrs I can possibly get that down to : 2 getAttrs and 1 setAttrs, at least for the dropdown.(because they involve looking up a value from somewhere else so that's the 2nd getAttrs) Editing the "enhance" or "mwk" fields should be only 1 getAttrs and 1 setAttrs. &nbsp;so not much i can do with those. For the updates from other areas of the sheet only (1.1 ) - I can use the eventInfo to look at the current value and calculate the delta to the final total for attack and damage, rather than calculate everything again. However if I do 1.1 then I am still at least getting those values which is taking time. but I don't know which is faster: getAttrs of 10 values, or getAttrs of 2 values then getAttrs again for 8 more, is faster But .. I don't think there are any loops anymore of something causing itself to update, now that I no longer have an event listener for the "top" level of a repeating row. There are a lot of places though where the updates do cascade through several on(change:xxxx) ... mainly because when i tried to call the updates directly to short circuit the setAttrs / getAttrs there and back, it resulted in the repeating rows getting added. I was trying to make the code simpler so someone could take over at any time, but it just got slower, so then I started making it more complicated and it gets faster :) But it also gets more tempermental and easier to break.
chris b. said: Speed:&nbsp; there are 2 improvements i can make : Collapse # of gets and sets (within a row) Right now if you edit a dropdown, or the _damage or _attack fields (which are macro fields that get evaluated) in a repeating_weapon, the system does this:&nbsp;4 getAttrs and 2 setAttrs I can possibly get that down to : 2 getAttrs and 1 setAttrs, at least for the dropdown.(because they involve looking up a value from somewhere else so that's the 2nd getAttrs) Editing the "enhance" or "mwk" fields should be only 1 getAttrs and 1 setAttrs. &nbsp;so not much i can do with those. For the updates from other areas of the sheet only (1.1 ) - I can use the eventInfo to look at the current value and calculate the delta to the final total for attack and damage, rather than calculate everything again. However if I do 1.1 then I am still at least getting those values which is taking time. but I don't know which is faster: getAttrs of 10 values, or getAttrs of 2 values then getAttrs again for 8 more, is faster But .. I don't think there are any loops anymore of something causing itself to update, now that I no longer have an event listener for the "top" level of a repeating row. There are a lot of places though where the updates do cascade through several on(change:xxxx) ... mainly because when i tried to call the updates directly to short circuit the setAttrs / getAttrs there and back, it resulted in the repeating rows getting added. I was trying to make the code simpler so someone could take over at any time, but it just got slower, so then I started making it more complicated and it gets faster :) But it also gets more tempermental and easier to break. I would hold off doing any optimization on your end until I take a look. As I said I doubt that the setAttrs/getAttrs calls are really causing that much slowdown. It's likely the re-rendering itself.
Okay, I was able to figure out a few optimizations on our end. Now the initial render is down from 7 seconds on my computer to 1.5 seconds, and updating an attack is much faster, too. These optimizations are deployed on Dev currently but NOT MAIN, so I made a copy of your PF Beta campaign on Dev: <a href="https://app.roll20dev.net/join/37421/cwD4iQ" rel="nofollow">https://app.roll20dev.net/join/37421/cwD4iQ</a> So if you go into that game and open up and play around with the characters, it should be a lot faster. Let me know what you see. Thanks!
1454964921
chris b.
Pro
Sheet Author
API Scripter
Wow that is ridiculously faster! I can't believe it.
1454965633
Magik
Sheet Author
Riley D. said: Okay, I was able to figure out a few optimizations on our end. Now the initial render is down from 7 seconds on my computer to 1.5 seconds, and updating an attack is much faster, too. These optimizations are deployed on Dev currently but NOT MAIN, so I made a copy of your PF Beta campaign on Dev: <a href="https://app.roll20dev.net/join/37421/cwD4iQ" rel="nofollow">https://app.roll20dev.net/join/37421/cwD4iQ</a> So if you go into that game and open up and play around with the characters, it should be a lot faster. Let me know what you see. Can you open up access to the Mythic Monk character so that I can test it out? Thanks!
1454966726

Edited 1454966822
vÍnce
Pro
Sheet Author
That seems nice! &nbsp;I can make a copy to the Dev and give you access Magik. &nbsp;Just a sec. PM sent.
Magik said: Riley D. said: Okay, I was able to figure out a few optimizations on our end. Now the initial render is down from 7 seconds on my computer to 1.5 seconds, and updating an attack is much faster, too. These optimizations are deployed on Dev currently but NOT MAIN, so I made a copy of your PF Beta campaign on Dev: <a href="https://app.roll20dev.net/join/37421/cwD4iQ" rel="nofollow">https://app.roll20dev.net/join/37421/cwD4iQ</a> So if you go into that game and open up and play around with the characters, it should be a lot faster. Let me know what you see. Can you open up access to the Mythic Monk character so that I can test it out? Thanks! Should be open now
1454969208
Magik
Sheet Author
Riley D. said: Magik said: Can you open up access to the Mythic Monk character so that I can test it out? Thanks! Should be open now Wow! The speed is incredible! I almost shed a tear of joy. :) Thanks Chris and Riley. This is amazing
1454970891
vÍnce
Pro
Sheet Author
When can we get this on Production? &nbsp;;-)
Vince said: When can we get this on Production? &nbsp;;-) Hopefully before the weekend.
1455049867
Magik
Sheet Author
Does the PF Beta game&nbsp; <a href="https://app.roll20.net/editor/setcampaign/801350" rel="nofollow">https://app.roll20.net/editor/setcampaign/801350</a> have the repeating entries fix in place? I just encountered it again. I was testing out an unrelated possible bug, but encountered this one again. I don't have a video of this one, but I grabbed the java console log. I'm not sure where the issue really started, so I apologize for the length of the log. I was on the Attacks tab with one newly-created attack entry named "Don't Whisper!" then went to the Core tab to put all 20's in for the base ability scores except for Wis (I think), which was already 20. When I went back to the Attacks tab, 13 new red-bordered entries were present. The new borders looks nice BTW. :) After that I hit the attack button for the known-good entry that I had previously created then captured the log for you. I think the section immediately below was due to attempting to launch the attack button without the attack being configured. At that point is where I went to the Core tab to edit the ability scores. app.js?1454428476:40 d20.DicePEG.result.SyntaxError app.js?1454428476:40 Uncaught SyntaxError: Expected "(", ".", "[", "abs(", "ceil(", "d", "floor(", "round(", "t", "{", [ |\t], [+|\-] or [0-9] but end of input found. app.js?1454428476:36 CLICKED app.js?1454428476:36 --- RENDER CHARACTIVE VIEW ---- app.js?1454428476:36 CLICKED app.js?1454428476:36 Redoing charsheet html jquery.min.js:2 Mixed Content: The page at '<a href="https://app.roll20.net/editor/" rel="nofollow">https://app.roll20.net/editor/</a>' was loaded over HTTPS, but requested an insecure image '<a href="http://imgsrv.roll20.net/?src=paizo.com/image/content/Logos/PathfinderRPGLogo_500.jpeg" rel="nofollow">http://imgsrv.roll20.net/?src=paizo.com/image/content/Logos/PathfinderRPGLogo_500.jpeg</a>'. This content should also be served over HTTPS. app.js?1454428476:36 267ms to end of html VM38:3996 Current Pathfinder sheet data version:0.28, Sheet code version:0.28 app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 17ms app.js?1454428476:36 Updating ALL VALUES app.js?1454428476:36 Finding list of dirty attributes took until 17ms app.js?1454428476:36 Querytest took until 19ms app.js?1454428476:36 Set values took until 984ms app.js?1454428476:36 Appending to sheetform app.js?1454428476:36 Appending to screen took until 996ms app.js?1454428476:36 Took 997ms 2app.js?1454428476:36 CLICKED app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 16ms app.js?1454428476:36 Finding list of dirty attributes took until 16ms app.js?1454428476:36 Querytest took until 18ms app.js?1454428476:36 Set values took until 33ms app.js?1454428476:36 Took 38ms app.js?1454428476:36 CLICKED app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 13ms app.js?1454428476:36 Finding list of dirty attributes took until 13ms app.js?1454428476:36 Querytest took until 15ms app.js?1454428476:36 Set values took until 24ms app.js?1454428476:36 Took 31ms app.js?1454428476:36 CLICKED app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 12ms app.js?1454428476:36 Finding list of dirty attributes took until 12ms app.js?1454428476:36 Querytest took until 13ms app.js?1454428476:36 Set values took until 25ms app.js?1454428476:36 Took 31ms app.js?1454428476:36 CLICKED app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 14ms app.js?1454428476:36 Finding list of dirty attributes took until 14ms app.js?1454428476:36 Querytest took until 15ms app.js?1454428476:36 Set values took until 29ms app.js?1454428476:36 Took 34ms app.js?1454428476:36 CLICKED app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 15ms app.js?1454428476:36 Finding list of dirty attributes took until 15ms app.js?1454428476:36 Querytest took until 17ms app.js?1454428476:36 Set values took until 31ms app.js?1454428476:36 Took 37ms app.js?1454428476:41 Array[1] app.js?1454428476:41 Array[1] app.js?1454428476:41 Array[1] app.js?1454428476:41 Array[1] app.js?1454428476:41 Array[1] app.js?1454428476:41 Finished after going 3 levels deep. app.js?1454428476:41 Begin processing op! app.js?1454428476:41 Levels deep: 1 app.js?1454428476:36 CLICKED app.js?1454428476:41 Finished 0 app.js?1454428476:41 Levels deep: 1 app.js?1454428476:41 Substituting for 0 app.js?1454428476:41 Levels deep: 0 app.js?1454428476:41 Finished 1 app.js?1454428476:41 Levels deep: 0 app.js?1454428476:41 Inline rolls complete! app.js?1454428476:36 CLICKED app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 15ms app.js?1454428476:36 Finding list of dirty attributes took until 15ms app.js?1454428476:36 Querytest took until 17ms app.js?1454428476:36 Set values took until 29ms app.js?1454428476:36 Took 35ms app.js?1454428476:41 Finished after going 2 levels deep. app.js?1454428476:41 Begin processing op! app.js?1454428476:41 Levels deep: 1 app.js?1454428476:36 CLICKED app.js?1454428476:41 Finished 0 app.js?1454428476:41 Levels deep: 1 app.js?1454428476:41 Substituting for 0 app.js?1454428476:41 Levels deep: 1 app.js?1454428476:41 Finished 1 app.js?1454428476:41 Levels deep: 1 app.js?1454428476:41 Substituting for 1 app.js?1454428476:41 Levels deep: 0 app.js?1454428476:41 Finished 2 app.js?1454428476:41 Levels deep: 0 app.js?1454428476:41 Inline rolls complete! app.js?1454428476:36 CLICKED app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 13ms app.js?1454428476:36 Finding list of dirty attributes took until 13ms app.js?1454428476:36 Querytest took until 14ms app.js?1454428476:36 Set values took until 27ms app.js?1454428476:36 Took 32ms 2app.js?1454428476:36 CLICKED app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 48ms app.js?1454428476:36 Finding list of dirty attributes took until 54ms app.js?1454428476:36 Querytest took until 57ms app.js?1454428476:36 Set values took until 146ms app.js?1454428476:36 Took 153ms app.js?1454428476:41 Finished after going 2 levels deep. app.js?1454428476:41 Begin processing op! app.js?1454428476:41 Levels deep: 1 app.js?1454428476:36 CLICKED app.js?1454428476:41 Finished 0 app.js?1454428476:41 Levels deep: 1 app.js?1454428476:41 Substituting for 0 app.js?1454428476:40 d20.DicePEG.result.SyntaxError app.js?1454428476:40 Uncaught SyntaxError: Expected "(", ".", "[", "abs(", "ceil(", "d", "floor(", "round(", "t", "{", [ |\t], [+|\-] or [0-9] but end of input found. app.js?1454428476:36 CLICKED app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 10ms app.js?1454428476:36 Finding list of dirty attributes took until 15ms app.js?1454428476:36 Querytest took until 19ms app.js?1454428476:36 Set values took until 104ms app.js?1454428476:36 Took 109ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 10ms app.js?1454428476:36 Finding list of dirty attributes took until 20ms app.js?1454428476:36 Querytest took until 23ms app.js?1454428476:36 Set values took until 111ms app.js?1454428476:36 Took 116ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 13ms app.js?1454428476:36 Finding list of dirty attributes took until 23ms app.js?1454428476:36 Querytest took until 26ms app.js?1454428476:36 Set values took until 116ms app.js?1454428476:36 Took 120ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 10ms app.js?1454428476:36 Finding list of dirty attributes took until 14ms app.js?1454428476:36 Querytest took until 18ms app.js?1454428476:36 Set values took until 107ms app.js?1454428476:36 Took 111ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 10ms app.js?1454428476:36 Finding list of dirty attributes took until 17ms app.js?1454428476:36 Querytest took until 20ms app.js?1454428476:36 Set values took until 106ms app.js?1454428476:36 Took 111ms app.js?1454428476:36 CLICKED app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 13ms app.js?1454428476:36 Finding list of dirty attributes took until 17ms app.js?1454428476:36 Querytest took until 19ms app.js?1454428476:36 Set values took until 118ms app.js?1454428476:36 Took 122ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 12ms app.js?1454428476:36 Finding list of dirty attributes took until 16ms app.js?1454428476:36 Querytest took until 19ms app.js?1454428476:36 Set values took until 108ms app.js?1454428476:36 Took 113ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 14ms app.js?1454428476:36 Finding list of dirty attributes took until 17ms app.js?1454428476:36 Querytest took until 20ms app.js?1454428476:36 Set values took until 106ms app.js?1454428476:36 Took 111ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 12ms app.js?1454428476:36 Finding list of dirty attributes took until 16ms app.js?1454428476:36 Querytest took until 18ms app.js?1454428476:36 Set values took until 112ms app.js?1454428476:36 Took 119ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 10ms app.js?1454428476:36 Finding list of dirty attributes took until 17ms app.js?1454428476:36 Querytest took until 21ms app.js?1454428476:36 Set values took until 113ms app.js?1454428476:36 Took 118ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 11ms app.js?1454428476:36 Finding list of dirty attributes took until 18ms app.js?1454428476:36 Querytest took until 20ms app.js?1454428476:36 Set values took until 111ms app.js?1454428476:36 Took 115ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 13ms app.js?1454428476:36 Finding list of dirty attributes took until 17ms app.js?1454428476:36 Querytest took until 20ms app.js?1454428476:36 Set values took until 116ms app.js?1454428476:36 Took 121ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 10ms app.js?1454428476:36 Finding list of dirty attributes took until 14ms app.js?1454428476:36 Querytest took until 17ms app.js?1454428476:36 Set values took until 106ms app.js?1454428476:36 Took 111ms app.js?1454428476:36 CLICKED app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 16ms app.js?1454428476:36 Finding list of dirty attributes took until 16ms app.js?1454428476:36 Querytest took until 18ms app.js?1454428476:36 Set values took until 38ms app.js?1454428476:36 Took 46ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 11ms app.js?1454428476:36 Finding list of dirty attributes took until 11ms app.js?1454428476:36 Querytest took until 13ms app.js?1454428476:36 Set values took until 24ms app.js?1454428476:36 Took 29ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 10ms app.js?1454428476:36 Finding list of dirty attributes took until 25ms VM38:2063 at handleDefenseDropdown:cmd-ability1 app.js?1454428476:36 Querytest took until 28ms app.js?1454428476:36 Set values took until 126ms app.js?1454428476:36 Took 130ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 10ms app.js?1454428476:36 Finding list of dirty attributes took until 17ms VM38:2814 at updateAttack:melee VM38:2818 Array[7] VM38:2814 at updateAttack:CMB VM38:2818 Array[7] app.js?1454428476:36 Querytest took until 21ms app.js?1454428476:36 Set values took until 110ms app.js?1454428476:36 Took 115ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 11ms app.js?1454428476:36 Finding list of dirty attributes took until 40ms app.js?1454428476:36 Querytest took until 44ms app.js?1454428476:36 Set values took until 138ms app.js?1454428476:36 Took 142ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 596ms app.js?1454428476:36 Finding list of dirty attributes took until 689ms app.js?1454428476:36 Querytest took until 697ms app.js?1454428476:36 Set values took until 1437ms app.js?1454428476:36 Took 1446ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 16ms app.js?1454428476:36 Finding list of dirty attributes took until 28ms VM38:2063 at handleDefenseDropdown:ac-ability VM38:2063 at handleDefenseDropdown:cmd-ability2 app.js?1454428476:36 Querytest took until 32ms app.js?1454428476:36 Set values took until 795ms app.js?1454428476:36 Took 803ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 57ms app.js?1454428476:36 Finding list of dirty attributes took until 70ms VM38:2814 at updateAttack:ranged VM38:2818 Array[7] app.js?1454428476:36 Querytest took until 74ms app.js?1454428476:36 Set values took until 186ms app.js?1454428476:36 Took 194ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 15ms app.js?1454428476:36 Finding list of dirty attributes took until 20ms app.js?1454428476:36 Querytest took until 24ms app.js?1454428476:36 Set values took until 146ms app.js?1454428476:36 Took 155ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 14ms app.js?1454428476:36 Finding list of dirty attributes took until 15ms app.js?1454428476:36 Querytest took until 17ms app.js?1454428476:36 Set values took until 35ms app.js?1454428476:36 Took 43ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 14ms app.js?1454428476:36 Finding list of dirty attributes took until 18ms app.js?1454428476:36 Querytest took until 21ms app.js?1454428476:36 Set values took until 148ms app.js?1454428476:36 Took 157ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 56ms app.js?1454428476:36 Finding list of dirty attributes took until 64ms app.js?1454428476:36 Querytest took until 67ms app.js?1454428476:36 Set values took until 190ms app.js?1454428476:36 Took 198ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 21ms app.js?1454428476:36 Finding list of dirty attributes took until 21ms app.js?1454428476:36 Querytest took until 26ms app.js?1454428476:36 Set values took until 81ms app.js?1454428476:36 Took 91ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 14ms app.js?1454428476:36 Finding list of dirty attributes took until 14ms app.js?1454428476:36 Querytest took until 16ms app.js?1454428476:36 Set values took until 33ms app.js?1454428476:36 Took 41ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 17ms app.js?1454428476:36 Finding list of dirty attributes took until 17ms app.js?1454428476:36 Querytest took until 21ms app.js?1454428476:36 Set values took until 55ms app.js?1454428476:36 Took 63ms /js/d20/sheetsandboxworker.js?20150125:217 TypeError: Cannot read property 'indexOf' of undefined(…) /js/d20/sheetsandboxworker.js?20150125:218 TypeError: Cannot read property 'indexOf' of undefined at findSpellClass (eval at &lt;anonymous&gt; (<a href="https://app.roll20.net/js/d20/sheetsandboxworker.js?20150125:198:6" rel="nofollow">https://app.roll20.net/js/d20/sheetsandboxworker.js?20150125:198:6</a>), &lt;anonymous&gt;:3151:15) at Object.eval [as -K9eW374qfFj6AkK63va//false//0.9141943911090493] (eval at &lt;anonymous&gt; (<a href="https://app.roll20.net/js/d20/sheetsandboxworker.js?20150125:198:6" rel="nofollow">https://app.roll20.net/js/d20/sheetsandboxworker.js?20150125:198:6</a>), &lt;anonymous&gt;:3375:16) at _fullfillAttrReq (<a href="https://app.roll20.net/js/d20/sheetsandboxworker.js?20150125:173:31" rel="nofollow">https://app.roll20.net/js/d20/sheetsandboxworker.js?20150125:173:31</a>) at DedicatedWorkerGlobalScope.messageHandler (<a href="https://app.roll20.net/js/d20/sheetsandboxworker.js?20150125:205:6" rel="nofollow">https://app.roll20.net/js/d20/sheetsandboxworker.js?20150125:205:6</a>) app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 20ms app.js?1454428476:36 Finding list of dirty attributes took until 20ms app.js?1454428476:36 Querytest took until 23ms app.js?1454428476:36 Set values took until 53ms app.js?1454428476:36 Took 62ms app.js?1454428476:36 CLICKED app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 72ms app.js?1454428476:36 Finding list of dirty attributes took until 72ms app.js?1454428476:36 Querytest took until 75ms app.js?1454428476:36 Set values took until 126ms app.js?1454428476:36 Took 134ms app.js?1454428476:45 window resize app.js?1454428476:30 Final set zoom! app.js?1454428476:30 Array[2] 2app.js?1454428476:30 UPDATE GL SIZE! app.js?1454428476:30 Final set zoom! app.js?1454428476:30 Array[2] app.js?1454428476:30 UPDATE GL SIZE! app.js?1454428476:30 Debounced init page! app.js?1454428476:35 init active page! app.js?1454428476:36 CLICKED app.js?1454428476:41 Finished after going 2 levels deep. app.js?1454428476:41 Begin processing op! app.js?1454428476:41 Levels deep: 1 app.js?1454428476:36 CLICKED app.js?1454428476:41 Finished 0 app.js?1454428476:41 Levels deep: 1 app.js?1454428476:41 Substituting for 0 app.js?1454428476:41 Levels deep: 1 app.js?1454428476:41 Finished 1 app.js?1454428476:41 Levels deep: 1 app.js?1454428476:41 Substituting for 1 app.js?1454428476:41 Levels deep: 0 app.js?1454428476:41 Levels deep: 1 app.js?1454428476:41 Finished 3 app.js?1454428476:41 Levels deep: 1 app.js?1454428476:41 Substituting for 3 app.js?1454428476:41 Levels deep: 0 app.js?1454428476:41 Levels deep: 1 app.js?1454428476:41 Finished 5 app.js?1454428476:41 Levels deep: 1 app.js?1454428476:41 Substituting for 5 app.js?1454428476:41 Levels deep: 0 app.js?1454428476:41 Levels deep: 1 app.js?1454428476:41 Finished 7 app.js?1454428476:41 Levels deep: 1 app.js?1454428476:41 Substituting for 7 app.js?1454428476:41 Levels deep: 1 app.js?1454428476:41 Finished 8 app.js?1454428476:41 Levels deep: 1 app.js?1454428476:41 Substituting for 8 app.js?1454428476:41 Levels deep: 0 app.js?1454428476:41 Finished 2 app.js?1454428476:41 Levels deep: 0 app.js?1454428476:41 Finished 4 app.js?1454428476:41 Levels deep: 0 app.js?1454428476:41 Finished 6 app.js?1454428476:41 Levels deep: 0 app.js?1454428476:41 Finished 9 app.js?1454428476:41 Levels deep: 0 app.js?1454428476:41 Inline rolls complete!
1455050374

Edited 1455050969
chris b.
Pro
Sheet Author
API Scripter
That is odd, I don't get that error on the Dev server on my dev campaign. Nor can I get it to happen in the production pathfinder campaign (the javascript for 0.21 is the same as dev, I just had it updated a couple days ago). But on the Beta site (which is in Prod) I can reproduce it every time. Also on the Beta site Riley copied to dev. So ... i think both beta sites are behind. .. Yes actually the code I sent Vince is behind by one update I made, I forgot to send Vince my latest .. but ... it is not in an area that&nbsp;should affect repeating sections, nothing to do with it actually. So IDK why it would cause that. but may as well make sure beta has latest.
1455051333
vÍnce
Pro
Sheet Author
I'll update.
1455052222
chris b.
Pro
Sheet Author
API Scripter
seems fixed now. guess i didn't have my latest checked in.&nbsp; oops
1455059875
Magik
Sheet Author
Is it ready for me to test again? Because I got it to fail again. :( 2app.js?1454428476:36 CLICKED app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 61ms app.js?1454428476:36 Finding list of dirty attributes took until 73ms app.js?1454428476:36 Querytest took until 77ms app.js?1454428476:36 Set values took until 169ms app.js?1454428476:36 Took 177ms app.js?1454428476:36 CLICKED app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 17ms app.js?1454428476:36 Finding list of dirty attributes took until 18ms app.js?1454428476:36 Querytest took until 21ms app.js?1454428476:36 Set values took until 40ms app.js?1454428476:36 Took 48ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 14ms app.js?1454428476:36 Finding list of dirty attributes took until 14ms app.js?1454428476:36 Querytest took until 16ms app.js?1454428476:36 Set values took until 29ms app.js?1454428476:36 Took 36ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 13ms app.js?1454428476:36 Finding list of dirty attributes took until 21ms VM38:2063 at handleDefenseDropdown:cmd-ability1 app.js?1454428476:36 Querytest took until 28ms app.js?1454428476:36 Set values took until 125ms app.js?1454428476:36 Took 132ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 10ms app.js?1454428476:36 Finding list of dirty attributes took until 11ms VM38:2819 at updateAttack:melee VM38:2823 ["attk-melee", "bab", "attk-penalty", "melee-ability-mod", "attk-melee-misc", "size", "buff_Melee-total"] app.js?1454428476:36 Querytest took until 15ms VM38:2819 at updateAttack:CMB VM38:2823 ["CMB", "bab", "attk-penalty", "CMB-ability-mod", "attk-CMB-misc", "CMD-size", "buff_Melee-total"] app.js?1454428476:36 Set values took until 37ms app.js?1454428476:36 Took 45ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 19ms app.js?1454428476:36 Finding list of dirty attributes took until 23ms app.js?1454428476:36 Querytest took until 31ms app.js?1454428476:36 Set values took until 142ms app.js?1454428476:36 Took 151ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 103ms app.js?1454428476:36 Finding list of dirty attributes took until 127ms app.js?1454428476:36 Querytest took until 138ms app.js?1454428476:36 Set values took until 341ms app.js?1454428476:36 Took 348ms app.js?1454428476:36 CLICKED app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 18ms app.js?1454428476:36 Finding list of dirty attributes took until 19ms app.js?1454428476:36 Querytest took until 21ms app.js?1454428476:36 Set values took until 41ms app.js?1454428476:36 Took 48ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 13ms app.js?1454428476:36 Finding list of dirty attributes took until 13ms app.js?1454428476:36 Querytest took until 16ms app.js?1454428476:36 Set values took until 34ms app.js?1454428476:36 Took 42ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 27ms app.js?1454428476:36 Finding list of dirty attributes took until 27ms app.js?1454428476:36 Querytest took until 32ms app.js?1454428476:36 Set values took until 50ms app.js?1454428476:36 Took 63ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 19ms app.js?1454428476:36 Finding list of dirty attributes took until 20ms app.js?1454428476:36 Querytest took until 22ms app.js?1454428476:36 Set values took until 43ms app.js?1454428476:36 Took 52ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 17ms app.js?1454428476:36 Finding list of dirty attributes took until 17ms app.js?1454428476:36 Querytest took until 20ms app.js?1454428476:36 Set values took until 48ms app.js?1454428476:36 Took 60ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 18ms app.js?1454428476:36 Finding list of dirty attributes took until 19ms app.js?1454428476:36 Querytest took until 22ms app.js?1454428476:36 Set values took until 46ms app.js?1454428476:36 Took 58ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 24ms app.js?1454428476:36 Finding list of dirty attributes took until 25ms app.js?1454428476:36 Querytest took until 27ms app.js?1454428476:36 Set values took until 47ms app.js?1454428476:36 Took 58ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 18ms app.js?1454428476:36 Finding list of dirty attributes took until 18ms app.js?1454428476:36 Querytest took until 22ms app.js?1454428476:36 Set values took until 81ms app.js?1454428476:36 Took 94ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 20ms app.js?1454428476:36 Finding list of dirty attributes took until 21ms app.js?1454428476:36 Querytest took until 24ms app.js?1454428476:36 Set values took until 66ms app.js?1454428476:36 Took 73ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 22ms app.js?1454428476:36 Finding list of dirty attributes took until 22ms app.js?1454428476:36 Querytest took until 26ms app.js?1454428476:36 Set values took until 85ms app.js?1454428476:36 Took 95ms app.js?1454428476:36 CLICKED app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 18ms app.js?1454428476:36 Finding list of dirty attributes took until 18ms app.js?1454428476:36 Querytest took until 20ms app.js?1454428476:36 Set values took until 37ms app.js?1454428476:36 Took 54ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 19ms app.js?1454428476:36 Finding list of dirty attributes took until 19ms app.js?1454428476:36 Querytest took until 23ms app.js?1454428476:36 Set values took until 63ms app.js?1454428476:36 Took 70ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 19ms app.js?1454428476:36 Finding list of dirty attributes took until 19ms app.js?1454428476:36 Querytest took until 21ms app.js?1454428476:36 Set values took until 50ms app.js?1454428476:36 Took 60ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 17ms app.js?1454428476:36 Finding list of dirty attributes took until 17ms app.js?1454428476:36 Querytest took until 22ms app.js?1454428476:36 Set values took until 65ms app.js?1454428476:36 Took 77ms app.js?1454428476:36 CLICKED app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 15ms app.js?1454428476:36 Finding list of dirty attributes took until 15ms app.js?1454428476:36 Querytest took until 17ms app.js?1454428476:36 Set values took until 36ms app.js?1454428476:36 Took 49ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 17ms app.js?1454428476:36 Finding list of dirty attributes took until 18ms app.js?1454428476:36 Querytest took until 22ms app.js?1454428476:36 Set values took until 59ms app.js?1454428476:36 Took 70ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 13ms app.js?1454428476:36 Finding list of dirty attributes took until 13ms app.js?1454428476:36 Querytest took until 18ms app.js?1454428476:36 Set values took until 50ms app.js?1454428476:36 Took 58ms app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 20ms app.js?1454428476:36 Finding list of dirty attributes took until 20ms app.js?1454428476:36 Querytest took until 22ms app.js?1454428476:36 Set values took until 64ms app.js?1454428476:36 Took 73ms app.js?1454428476:36 CLICKED app.js?1454428476:36 Really updating character sheet values app.js?1454428476:36 Setting up repeating sections took until 22ms app.js?1454428476:36 Finding list of dirty attributes took until 22ms app.js?1454428476:36 Querytest took until 24ms app.js?1454428476:36 Set values took until 52ms app.js?1454428476:36 Took 66ms
1455061742

Edited 1455062064
chris b.
Pro
Sheet Author
API Scripter
ok what is weird is, i cannot reproduce this. Until about 20 tries, then suddenly every time I adjust strength on any character, it creates an error row outlined in red. the only thing I do is change characters. 1. &nbsp;so..it seems there is some narrowing down to do, 1.a. does it start happening when changing characters? 1.b. Or after performing a certain number of updates? or something else. When I refresh the browser, the "countdown" starts again. 2. i also have not tried it in my dev campaign yet (way at the top, hidden so it only appears to devs) i can try to confirm it happens there too. (probably only difference is minor html) 3.&nbsp;need to see if this happens in the prod environment
1455063172
chris b.
Pro
Sheet Author
API Scripter
well, I can't make it happen anymore. I did delete all current error rows on all characters (on the Beta copy in dev), then refreshed. Now I can't make it happen anymore. I don't know if the existence of an error row on another character possibly affected it. We could confirm that in the original Beta in prod, by not deleting any existing error rows and testing on characters with no error rows.
Let me know if you are able to consistently reproduce it and I'll take a look. It's very possible that if there are any existing rows on a character it could cause this behavior, but once they are all cleared out it *shouldn't* happen again...
1455079393
Magik
Sheet Author
Riley D. said: Let me know if you are able to consistently reproduce it and I'll take a look. It's very possible that if there are any existing rows on a character it could cause this behavior, but once they are all cleared out it *shouldn't* happen again... Ok, I should probably work on a consistent repro in a game where I am the GM so that I can create and destroy characters at will. The issue is that I'd need to use the Beta Sheet's code to avoid encountering an issue that Chris has already fixed. Is that code available on github? Can you think of any other issues with my repro configuration?
1455086358
vÍnce
Pro
Sheet Author
I just made you a co-gm on a Dev Beta...( <a href="https://app.roll20dev.net/join/37426/LeVUDA" rel="nofollow">https://app.roll20dev.net/join/37426/LeVUDA</a> )
1455109958
Magik
Sheet Author
Vince said: I just made you a co-gm on a Dev Beta...( <a href="https://app.roll20dev.net/join/37426/LeVUDA" rel="nofollow">https://app.roll20dev.net/join/37426/LeVUDA</a> ) I didn't think of that and I appreciate the gesture; however, I believe that this repro will have to start with "1. Create a new game." That is because of its evasive nature. So I'll either need to wait for the latest fix for this to go public or I can paste in your current code into a new campaign.
1455114152
chris b.
Pro
Sheet Author
API Scripter
The code is already public , the js in the beta is live. The difference between beta and live is&nbsp; Some CSS for spell sections Html for spell sections The version is .3 not .21
1455114956
Magik
Sheet Author
Sorry, I may be confused.&nbsp;Should I be testing against .21 or .3? If .3 then maybe either of you could just email it to me or something. I just need to be able to grab the code so that when I create a new game that I can paste it in. As a co-GM dev Beta I still don't have access to the sheet's .3 code. The code on github looks to be still version .21. I can't find a way to grab the .3 code at this point unless I'm just an idiot.
1455118308

Edited 1455118422
vÍnce
Pro
Sheet Author
PM sent with links to v.30 html/css As Chris mentioned the, the js should be the same on v.21 &nbsp;I didn't have time to verify, but I know we just updated. &nbsp;v.21 is on Github
1455139405

Edited 1455139580
Magik
Sheet Author
Ok, I have a repeatable repro now. Thanks Chris for the tip with multiple characters. That seemed to be the way to repro it. Here are the steps and a video. I wasn't able to repro it without a second character nor without setting the attack entry with realistic values, which I think the Damage Ability may be key. 1. Create a New Game named “PF Sheet .21 Test on Prod” 2. Exit from Game and go to Game Settings. 3. Select Custom sheet template. 4. Paste in HTML and CSS code then Save Changes. 5. Join the Game. 6. Create 2 characters giving permissions to All Players. 7. Exit and Re-Join as Player. 8. Open first character then press the Classes tab and input these changes: a. HP = 10 b. Class Name = Fighter c. BAB = 1 d. Levels = 1 9. Press the Attacks tab then the Add New Weapon button. Select the Name field then make these changes: a. Name = My only attack b. Attack Mod = 1 c. Atk Type = Melee d. Dice = 1 e. Die = 8 f. Dmg Mods = 2 g. Dmg Ability = STR 10. Press the Core tab then modify the ability Base values to all be 12 (so that there is a modifier). 11. Close that character sheet then open the other. 12. Repeat step #8 above and when you move to the Attacks tab there is a red-bordered entry. <a href="https://youtu.be/46hAyAbAn3o" rel="nofollow">https://youtu.be/46hAyAbAn3o</a> EDIT: The latest version of the game is&nbsp;<a href="https://app.roll20.net/campaigns/details/1256460" rel="nofollow">https://app.roll20.net/campaigns/details/1256460</a>. I deleted and recreated the same game a few times. I used the .21 version of the sheet. I wasn't able to edit the Game Settings with a new game on Dev, so the game is on Prod.
Thanks, Magik! I'll take a look at this first thing tomorrow morning and see if I can figure out what's going on.
1455214766

Edited 1455215434
Riley D.
Roll20 Team
Okay, I think I tracked down the issue. It's a bit complicated to explain, but basically the short version if that our sheet worker code was triggering change events for repeating rows that didn't exist on characters, which was causing the Pathfinder sheet to use setAttrs() to attempt to update rows that didn't exist, and create those broken rows.&nbsp; This wasn't an issue before, due to the fact that no one was binding to change events for specific rows, but with the new sourceAttribute changes it was causing some trouble. I've fixed the issue on our end and deployed the fix to Dev. Here's a game where you can test the fix: <a href="https://app.roll20dev.net/join/37443/-wanLw" rel="nofollow">https://app.roll20dev.net/join/37443/-wanLw</a> I had simplified the test-case down to this. If you had two characters, one of which had an Attack created that was a Melee attack, and you increased the BAB on the second character (that didn't have the attack), the bad row would get created. So if you increase BAB on Test Two, and you don't get a bad row, the fix is working. We'll be deploying this to Main as soon as I get the all-clear from you guys that nothing else looks broken. Thanks!
1455214978
vÍnce
Pro
Sheet Author
Link not found Riley. &nbsp;;-)