Suggest a feature
×

Welcome to TagMyCode

Please login or create account to add a snippet.
0
0
 
0
Language: Javascript
Posted by: Hugo Brianski
Added: Jan 10, 2019 8:32 PM
Views: 3
Tags: no tags
Ext.state.Stateful is a mixin so by the time you could override it, the methods are already mixed into Ext.Component. that’s why you have to override Ext.Component here
  1. Ext.define(null, {
  2.     override: 'Ext.Component',
  3.  
  4.     saveState: function () {
  5.         var me = this,
  6.             stateful = me.getStateful(),
  7.             id = stateful && me.getStateId(),
  8.             hasListeners = me.hasListeners,
  9.             cfg, configs, plugins, plugin, i, len, state, pluginState;
  10.  
  11.         if (id) {
  12.             state = me.getState() || {};
  13.  
  14.             //pass along for custom interactions
  15.             if (Ext.isObject(stateful)) {
  16.                 configs = me.self.getConfigurator();
  17.                 configs = configs.configs;
  18.  
  19.                 // configs[name]: Ext.Config(name)
  20.                 for (i in stateful) {
  21.                     if (stateful[i]) {
  22.                         if (!(i in state)) {
  23.                             cfg = configs[i];
  24.  
  25.                             // if class declared this as a config
  26.                             state[i] = cfg ? me[cfg.get || cfg.names.get]() : me[i]; // change here
  27.                         }
  28.                     } else {
  29.                         delete state[i];
  30.                     }
  31.                 }
  32.             }
  33.  
  34.             /*
  35.              * Gather state from those plugins that implement a getState method
  36.              */
  37.             plugins = me.getPlugins() || [];
  38.  
  39.             for (i = 0, len = plugins.length; i < len; i++) {
  40.                 plugin = plugins[i];
  41.  
  42.                 if (plugin && plugin.getState) {
  43.                     pluginState = plugin.getState(state);
  44.  
  45.                     if (pluginState && !state[plugin.ptype]) {
  46.                         //first duplicate plugin wins
  47.                         state[plugin.ptype] = pluginState;
  48.                     }
  49.                 }
  50.             }
  51.  
  52.             if (!hasListeners.beforestatesave || me.fireEvent('beforestatesave', me, state) !== false) {
  53.                 Ext.state.Manager.set(id, state);
  54.  
  55.                 if (hasListeners.statesave) {
  56.                     me.fireEvent('statesave', me, state);
  57.                 }
  58.             }
  59.         }
  60.     }
  61. });