HI Serkan,

That is the issue with the nested states.  Please make sure you’ve cleaned all 
those up.  Then if it is still happening, I will look again.

Thanks,
-Alex

From: Serkan Taş <[email protected]>
Reply-To: "[email protected]" <[email protected]>
Date: Friday, December 7, 2018 at 1:47 PM
To: "[email protected]" <[email protected]>
Subject: Re: Work on Emulation


Hi,

After compiling the new source, the issue related with namespaces is fixed.

For the next step, I am getting error related with the source 
StatesWithTransitionsImpl.js, here is the console log for firefox :

unreachable code after return statement[Learn More] SystemManager.js:196:2
unreachable code after return statement[Learn More] JobListWithDetails.js:522:4
unreachable code after return statement[Learn More] SystemManager.js:196:2
invalidateParentSizeAndDisplayList not implemented
Language.js:238:7
TypeError: parent is undefined; can't access its "getElementIndex" 
property[Learn More] StatesWithTransitionsImpl.js:328:39

    org_apache_royale_core_StatesWithTransitionsImpl_apply 
file:///D:/dev/royale-emulation-works/github/bin/js-debug/org/apache/royale/core/StatesWithTransitionsImpl.js:328
 org_apache_royale_core_StatesWithTransitionsImpl_stateChangeHandler 
file:///D:/dev/royale-emulation-works/github/bin/js-debug/org/apache/royale/core/StatesWithTransitionsImpl.js:131
 org_apache_royale_core_StatesWithTransitionsImpl_initialStateHandler 
file:///D:/dev/royale-emulation-works/github/bin/js-debug/org/apache/royale/core/StatesWithTransitionsImpl.js:65
 <anonymous> self-hosted:974 fireListeners 
file:///D:/dev/royale-emulation-works/github/bin/js-debug/library/closure/goog/events/eventtarget.js:284
 dispatchEventInternal_ 
file:///D:/dev/royale-emulation-works/github/bin/js-debug/library/closure/goog/events/eventtarget.js:382
 dispatchEvent 
file:///D:/dev/royale-emulation-works/github/bin/js-debug/library/closure/goog/events/eventtarget.js:196
 dispatchEvent 
file:///D:/dev/royale-emulation-works/github/bin/js-debug/org/apache/royale/events/EventDispatcher.js:71
 dispatchEvent 
file:///D:/dev/royale-emulation-works/github/bin/js-debug/org/apache/royale/core/HTMLElementWrapper.js:250
 addedToParent 
file:///D:/dev/royale-emulation-works/github/bin/js-debug/spark/components/SkinnableContainer.js:179
 addElement 
file:///D:/dev/royale-emulation-works/github/bin/js-debug/org/apache/royale/core/UIBase.js:414
 addChild 
file:///D:/dev/royale-emulation-works/github/bin/js-debug/mx/managers/SystemManager.js:109
 mx_managers_SystemManager_initializeTopLevelWindow 
file:///D:/dev/royale-emulation-works/github/bin/js-debug/mx/managers/SystemManager.js:249
 start 
file:///D:/dev/royale-emulation-works/github/bin/js-debug/mx/managers/SystemManager.js:232
 <anonymous> 
file:///D:/dev/royale-emulation-works/github/bin/js-debug/index.html:1051

Source map error: TypeError: NetworkError when attempting to fetch resource.
Resource URL: 
file:///D:/dev/royale-emulation-works/github/bin/js-debug/mx/managers/SystemManager.js
Source Map URL: ./SystemManager.js.map[Learn More]

The source :

org.apache.royale.core.StatesWithTransitionsImpl.prototype.org_apache_royale_core_StatesWithTransitionsImpl_apply
 = function(oldState, s) {
  var /** @type {Array} */ arr = s.overrides;
  var foreachiter10_target = arr;
  for (var foreachiter10 in foreachiter10_target)
  {
  var o = foreachiter10_target[foreachiter10];
  {
    if (org.apache.royale.utils.Language.is(o, 
org.apache.royale.states.AddItems)) {
      var /** @type {Object} */ ai = o;
      if (ai.items == null) {
        ai.items = ai.itemsDescriptor.items;
        if (ai.items == null) {
          ai.items = 
org.apache.royale.utils.MXMLDataInterpreter.generateMXMLArray(ai.document, 
null, ai.itemsDescriptor.descriptor);
          ai.itemsDescriptor.items = ai.items;
        }
      }
      var /** @type {boolean} */ childrenAdded = false;
      var foreachiter11_target = ai.items;
      for (var foreachiter11 in foreachiter11_target)
      {
      var item = foreachiter11_target[foreachiter11];
      {
        if 
(!this.org_apache_royale_core_StatesWithTransitionsImpl_isItemInState(item, 
oldState)) {
          var /** @type {Object} */ parent = ai.document;
          if (ai.destination != null)
            parent = parent[ai.destination];
          if (ai.relativeTo != null) {
            var /** @type {Object} */ child = ai.document[ai.relativeTo];
            if (ai.destination == null)
              parent = child.parent;
            var /** @type {number} */ index = parent.getElementIndex(child);
            if (ai.position == "after")
              index++;
            parent.addElementAt(item, index);
            childrenAdded = true;
          } else {
            parent.addElement(item);
            childrenAdded = true;
          }
        }
      }}

      if (childrenAdded && org.apache.royale.utils.Language.is(parent, 
org.apache.royale.core.IContainer))
        parent.childrenAdded();
    } else if (org.apache.royale.utils.Language.is(o, 
org.apache.royale.states.SetProperty)) {
      var /** @type {Object} */ sp = o;
      if (sp.target != null) {
        sp.previousValue = sp.document[sp.target][sp.name];
        sp.document[sp.target][sp.name] = sp.value;
      } else {
        sp.previousValue = sp.document[sp.name];
        sp.document[sp.name] = sp.value;
      }
    } else if (org.apache.royale.utils.Language.is(o, 
org.apache.royale.states.SetEventHandler)) {
      var /** @type {Object} */ seh = o;
      if (seh.target != null) {
        seh.document[seh.target].addEventListener(seh.name, 
seh.handlerFunction);
      } else {
        seh.document.addEventListener(seh.name, seh.handlerFunction);
      }
    }
  }}

};


​Thanks,
Serkan

7.12.2018 22:47 tarihinde Serkan Taş yazdı:
Okay Alex Thank you. I am going to remove this kind of usages.

Serkan
7.12.2018 22:39 tarihinde Alex Harui yazdı:
I fixed the fact that an item used in nested states where the containing states 
were different than a child’s states was being put in the output list more than 
once, resulting in the duplicate keys issue.

The exception I saw in your code is that when you have a parent and child being 
added to or removed from the same state, the current state handllng code 
doesn’t like it because the parent may not have been created before the child 
or vice versa, and we don’t want to increase complexity of the state handling 
in these cases, since it doesn’t make sense to have:

<Group id=”MainApp” excludeFrom”loggedOut”>
    <MenuBar excludeFrom=”loggedOut” />
</Group>

-Alex

From: Serkan Taş 
<[email protected]><mailto:[email protected]>
Reply-To: "[email protected]"<mailto:[email protected]> 
<[email protected]><mailto:[email protected]>
Date: Friday, December 7, 2018 at 11:32 AM
To: "[email protected]"<mailto:[email protected]> 
<[email protected]><mailto:[email protected]>
Subject: Re: Work on Emulation

Hi Alex,

Thank you for the good news. I am going to try to build the libraries locally, 
guess i can. And going to remove nested include/exclude declarations.

As far as I remember  you fixed the include/exclude issue before, I am 
surprised to see the same bug here. Is it something different ?

Serkan.
7.12.2018 22:23 tarihinde Alex Harui yazdı:
OK, The problem was that some addDependency calls were being incorrectly 
computed and added to the output.  I pushed a fix for that.  If you don’t want 
to wait for the nightly or can’t build from sources, you can get past this 
problem by hand-editing the index.html.  For each exception you should find the 
entry in there twice.  So for mx_internal, you’ll see two addDependency calls 
and the second one will be missing dependencies.  Remove that second one and 
the exception will go away.

Once I got that exception to go away, there was one remaining exception due to 
nested states again.  The menubar above “messagePanel” is being 
included/excluded from the same state as a containing parent, in this case 
“mainApp”.

HTH,
-Alex


Reply via email to