mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-08-03 05:16:26 +00:00
use DiffStore from widget toolkit
The alias stayed the same (store.diff) so we need to change direct usage of 'PVE.data.DiffStore' only. Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com> Reviewed-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
parent
672a6270ea
commit
eaa018d71e
@ -16,7 +16,6 @@ JSSRC= \
|
||||
VNCConsole.js \
|
||||
data/TimezoneStore.js \
|
||||
data/PVEProxy.js \
|
||||
data/DiffStore.js \
|
||||
data/ObjectStore.js \
|
||||
data/ResourceStore.js \
|
||||
data/model/RRDModels.js \
|
||||
|
@ -77,7 +77,7 @@ Ext.define('PVE.node.CephMonList', {
|
||||
}
|
||||
});
|
||||
|
||||
var store = Ext.create('PVE.data.DiffStore', {
|
||||
var store = Ext.create('Proxmox.data.DiffStore', {
|
||||
rstore: rstore,
|
||||
sorters: [{ property: 'name'}]
|
||||
});
|
||||
|
@ -162,7 +162,7 @@ Ext.define('PVE.node.CephPoolList', {
|
||||
}
|
||||
});
|
||||
|
||||
var store = Ext.create('PVE.data.DiffStore', { rstore: rstore });
|
||||
var store = Ext.create('Proxmox.data.DiffStore', { rstore: rstore });
|
||||
|
||||
Proxmox.Utils.monStoreErrors(me, rstore);
|
||||
|
||||
|
@ -1,114 +0,0 @@
|
||||
/*
|
||||
* The DiffStore is a in-memory store acting as proxy between a real store
|
||||
* instance and a component.
|
||||
* Its purpose is to redisplay the component *only* if the data has been changed
|
||||
* inside the real store, to avoid the annoying visual flickering of using
|
||||
* the real store directly.
|
||||
*
|
||||
* Implementation:
|
||||
* The DiffStore monitors via mon() the 'load' events sent by the real store.
|
||||
* On each 'load' event, the DiffStore compares its own content with the target
|
||||
* store (call to cond_add_item()) and then fires a 'refresh' event.
|
||||
* The 'refresh' event will automatically trigger a view refresh on the component
|
||||
* who binds to this store.
|
||||
*/
|
||||
|
||||
/* Config properties:
|
||||
* rstore: the realstore which will autorefresh its content from the API
|
||||
* Only works if rstore has a model and use 'idProperty'
|
||||
* sortAfterUpdate: sort the diffstore before rendering the view
|
||||
*/
|
||||
Ext.define('PVE.data.DiffStore', {
|
||||
extend: 'Ext.data.Store',
|
||||
alias: 'store.diff',
|
||||
|
||||
sortAfterUpdate: false,
|
||||
|
||||
constructor: function(config) {
|
||||
var me = this;
|
||||
|
||||
config = config || {};
|
||||
|
||||
if (!config.rstore) {
|
||||
throw "no rstore specified";
|
||||
}
|
||||
|
||||
if (!config.rstore.model) {
|
||||
throw "no rstore model specified";
|
||||
}
|
||||
|
||||
var rstore = config.rstore;
|
||||
|
||||
Ext.apply(config, {
|
||||
model: rstore.model,
|
||||
proxy: { type: 'memory' }
|
||||
});
|
||||
|
||||
me.callParent([config]);
|
||||
|
||||
var first_load = true;
|
||||
|
||||
var cond_add_item = function(data, id) {
|
||||
var olditem = me.getById(id);
|
||||
if (olditem) {
|
||||
olditem.beginEdit();
|
||||
Ext.Array.each(me.model.prototype.fields, function(field) {
|
||||
if (olditem.data[field.name] !== data[field.name]) {
|
||||
olditem.set(field.name, data[field.name]);
|
||||
}
|
||||
});
|
||||
olditem.endEdit(true);
|
||||
olditem.commit();
|
||||
} else {
|
||||
var newrec = Ext.create(me.model, data);
|
||||
var pos = (me.appendAtStart && !first_load) ? 0 : me.data.length;
|
||||
me.insert(pos, newrec);
|
||||
}
|
||||
};
|
||||
|
||||
var loadFn = function(s, records, success) {
|
||||
|
||||
if (!success) {
|
||||
return;
|
||||
}
|
||||
|
||||
me.suspendEvents();
|
||||
|
||||
// getSource returns null if data is not filtered
|
||||
// if it is filtered it returns all records
|
||||
var allItems = me.getData().getSource() || me.getData();
|
||||
|
||||
// remove vanished items
|
||||
allItems.each(function(olditem) {
|
||||
var item = rstore.getById(olditem.getId());
|
||||
if (!item) {
|
||||
me.remove(olditem);
|
||||
}
|
||||
});
|
||||
|
||||
rstore.each(function(item) {
|
||||
cond_add_item(item.data, item.getId());
|
||||
});
|
||||
|
||||
me.filter();
|
||||
|
||||
if (me.sortAfterUpdate) {
|
||||
me.sort();
|
||||
}
|
||||
|
||||
first_load = false;
|
||||
|
||||
me.resumeEvents();
|
||||
me.fireEvent('refresh', me);
|
||||
me.fireEvent('datachanged', me);
|
||||
};
|
||||
|
||||
if (rstore.isLoaded()) {
|
||||
// if store is already loaded,
|
||||
// insert items instantly
|
||||
loadFn(rstore, [], true);
|
||||
}
|
||||
|
||||
me.mon(rstore, 'load', loadFn);
|
||||
}
|
||||
});
|
@ -19,7 +19,7 @@ Ext.define('PVE.dc.Log', {
|
||||
}
|
||||
});
|
||||
|
||||
var store = Ext.create('PVE.data.DiffStore', {
|
||||
var store = Ext.create('Proxmox.data.DiffStore', {
|
||||
rstore: logstore,
|
||||
appendAtStart: true
|
||||
});
|
||||
@ -91,4 +91,4 @@ Ext.define('PVE.dc.Log', {
|
||||
|
||||
me.callParent();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -67,7 +67,7 @@ Ext.define('PVE.dc.Summary', {
|
||||
}
|
||||
});
|
||||
|
||||
var gridstore = Ext.create('PVE.data.DiffStore', {
|
||||
var gridstore = Ext.create('Proxmox.data.DiffStore', {
|
||||
rstore: rstore,
|
||||
filters: {
|
||||
property: 'type',
|
||||
|
@ -19,7 +19,7 @@ Ext.define('PVE.dc.Tasks', {
|
||||
}
|
||||
});
|
||||
|
||||
var store = Ext.create('PVE.data.DiffStore', {
|
||||
var store = Ext.create('Proxmox.data.DiffStore', {
|
||||
rstore: taskstore,
|
||||
sortAfterUpdate: true,
|
||||
appendAtStart: true,
|
||||
|
@ -441,7 +441,7 @@ Ext.define('PVE.grid.ReplicaView', {
|
||||
}
|
||||
});
|
||||
|
||||
me.store = Ext.create('PVE.data.DiffStore', {
|
||||
me.store = Ext.create('Proxmox.data.DiffStore', {
|
||||
rstore: me.rstore,
|
||||
sorters: [
|
||||
{
|
||||
|
@ -18,7 +18,7 @@ Ext.define('PVE.ha.ResourcesView', {
|
||||
|
||||
Proxmox.Utils.monStoreErrors(me, me.rstore);
|
||||
|
||||
var store = Ext.create('PVE.data.DiffStore', {
|
||||
var store = Ext.create('Proxmox.data.DiffStore', {
|
||||
rstore: me.rstore,
|
||||
filters: {
|
||||
property: 'type',
|
||||
|
@ -20,7 +20,7 @@ Ext.define('PVE.ha.StatusView', {
|
||||
|
||||
Proxmox.Utils.monStoreErrors(me, me.rstore);
|
||||
|
||||
var store = Ext.create('PVE.data.DiffStore', {
|
||||
var store = Ext.create('Proxmox.data.DiffStore', {
|
||||
rstore: me.rstore,
|
||||
sortAfterUpdate: true,
|
||||
sorters: [{
|
||||
|
Loading…
Reference in New Issue
Block a user