User Tools

Site Tools


rm25232

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
rm25232 [2018/04/16 16:12] – [rm#25232 Browser Compatibility - Chrome DA UX UE assignment issue (expand/collapse function)] kalaschnikowrm25232 [2018/04/24 11:22] (current) – [Problem nachvollziehen] kalaschnikow
Line 1: Line 1:
 +====== rm#25232 Browser Compatibility - Chrome DA UX UE assignment issue (expand/collapse function) ======
  
 +https://cust-projects.seeburger.de/redmine/issues/25232
 +
 +===== Problem nachvollziehen =====
 +
 +    * ASN mit 4 UEs erstellen (durch Split)
 +    * Auf die UX Maske wechseln
 +    * Nach "UX Number" sortieren
 +    * 1 UX erzeugen  
 +    * Knopf "1 UX per UE" drücken. Es werden 4 neue UXes erzeugt. //Vermutlich mit dieser Aktion wird Datastore kaputt gemacht//
 +    * Jetzt z.B. das oberste UX zuklappen/aufklappen -> es wird ein anderes UX zugeklappt/aufgeklappt
 +
 +===== Ursache =====
 +
 +  * In ''processUIEvent()'' (''ext-all-debug-w-comments.js:131079'') wird in der Zeile 131114 die Methode ''indexInStore()'' (''ext-all-debug-w-comments.js:143786'') verwendet, die einen falschen Index liefert, wenn bei dem Eintritt auf die Seite "Expedition Units" die Tabelle nach der Spalte "UX number" sortiert ist. 
 +
 +  * ''ASNUXPanel.js''
 +    * ''createUXPack()'' erstellt UXes
 +      * die erstellten UXes werden unter Umständen nicht verwendet (s. Zeile 1027)
 +===== Notizen =====
 +
 +==== Ext.view.View ====
 +Zeilen 130673 - 131316 in "ext-all-debug-w-comments.js"
 +
 +Ab Zeile 131079:
 +<code javascript>
 +    processUIEvent: function(e) {
 +    
 +    //...
 +    
 +        var me = this,
 +            // this.getTargetSelector() can be used as a template method, e.g., in features.
 +            item = e.getTarget(me.getTargetSelector(), me.getTargetEl()),
 +            map = me.statics().EventMap,
 +            index, record,
 +            type = e.type,
 +            newType = type,
 +            sm;
 +        // If the event is a mouseover/mouseout event converted to a mouseenter/mouseleave,
 +        // use that event type and ensure that the item is correct.
 +        if (e.newType) {
 +            newType = e.newType;
 +            item = e.item;
 +            // When not buffering mouseover events, the event is a singleton; clear for next usage.
 +            e.newType = e.item = null;
 +        }
 +        // For keydown events, try to get either the last focused item or the selected item.
 +        // If we have not focused an item, we'll just fire a container keydown event.
 +        if (!item && type == 'keydown') {
 +            sm = me.getSelectionModel();
 +            record = sm.lastFocused || sm.getLastSelected();
 +            if (record) {
 +                item = me.getNode(record, true);
 +            }
 +        }
 +        if (item) {
 +            if (!record) {
 +                record = me.getRecord(item);
 +            }
 +            index = me.indexInStore ? me.indexInStore(record) : me.indexOf(item);
 +            // It is possible for an event to arrive for which there is no record... this
 +            // can happen with dblclick where the clicks are on removal actions (think a
 +            // grid w/"delete row" action column) or if the record was in a page that was
 +            // pruned by a buffered store.
 +            if (!record || me.processItemEvent(record, item, index, e) === false) {
 +                return false;
 +            }
 +            if ((me['onBeforeItem' + map[newType]](record, item, index, e) === false) || (me.fireEvent('beforeitem' + newType, me, record, item, index, e) === false) || (me['onItem' + map[newType]](record, item, index, e) === false)) {
 +                return false;
 +            }
 +            me.fireEvent('item' + newType, me, record, item, index, e);
 +        } else {
 +            if ((me.processContainerEvent(e) === false) || (me['onBeforeContainer' + map[type]](e) === false) || (me.fireEvent('beforecontainer' + type, me, e) === false) || (me['onContainer' + map[type]](e) === false)) {
 +                return false;
 +            }
 +            me.fireEvent('container' + type, me, e);
 +        }
 +        return true;
 +    },
 +</code>
 +
 +==== Ext.view.Table ====
 +Zeilen 143051 - 145239 in "ext-all-debug-w-comments.js"
 +
 +Ab Zeile 143786:
 +<code javascript>
 +    indexInStore: function(node) {
 +        // We cannot use the stamped in data-recordindex because that is the index in the original configured store
 +        // NOT the index in the dataSource that is being used - that may be a GroupStore.
 +        return this.dataSource.indexOf(this.getRecord(node));
 +    },
 +</code>