From 1748088d28a276edaf6d2eb36d98b298cc635ab8 Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Tue, 29 Aug 2017 07:03:32 +0200 Subject: [PATCH] add RRDStore class Copied from pve-manager: - removed field specification - changed statid to proxmoxRRDTypeSelection --- Makefile | 1 + data/RRDStore.js | 77 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 data/RRDStore.js diff --git a/Makefile b/Makefile index 0b3ad30..46aea79 100644 --- a/Makefile +++ b/Makefile @@ -20,6 +20,7 @@ JSSRC= \ data/UpdateStore.js \ data/DiffStore.js \ data/ObjectStore.js \ + data/RRDStore.js \ data/TimezoneStore.js \ form/IntegerField.js \ form/TextField.js \ diff --git a/data/RRDStore.js b/data/RRDStore.js new file mode 100644 index 0000000..8c0a9ff --- /dev/null +++ b/data/RRDStore.js @@ -0,0 +1,77 @@ +/* Extends the Proxmox.data.UpdateStore type + * + * + */ +Ext.define('Proxmox.data.RRDStore', { + extend: 'Proxmox.data.UpdateStore', + alias: 'store.proxmoxRRDStore', + + setRRDUrl: function(timeframe, cf) { + var me = this; + if (!timeframe) { + timeframe = me.timeframe; + } + + if (!cf) { + cf = me.cf; + } + + me.proxy.url = me.rrdurl + "?timeframe=" + timeframe + "&cf=" + cf; + }, + + proxy: { + type: 'proxmox' + }, + + timeframe: 'hour', + + cf: 'AVERAGE', + + constructor: function(config) { + var me = this; + + config = config || {}; + + // set default interval to 30seconds + if (!config.interval) { + config.interval = 30000; + } + + // set a new storeid + if (!config.storeid) { + config.storeid = 'rrdstore-' + (++Ext.idSeed); + } + + // rrdurl is required + if (!config.rrdurl) { + throw "no rrdurl specified"; + } + + var stateid = 'proxmoxRRDTypeSelection'; + var sp = Ext.state.Manager.getProvider(); + var stateinit = sp.get(stateid); + + if (stateinit) { + if(stateinit.timeframe !== me.timeframe || stateinit.cf !== me.rrdcffn){ + me.timeframe = stateinit.timeframe; + me.rrdcffn = stateinit.cf; + } + } + + me.callParent([config]); + + me.setRRDUrl(); + me.mon(sp, 'statechange', function(prov, key, state){ + if (key === stateid) { + if (state && state.id) { + if (state.timeframe !== me.timeframe || state.cf !== me.cf) { + me.timeframe = state.timeframe; + me.cf = state.cf; + me.setRRDUrl(); + me.reload(); + } + } + } + }); + } +}); -- 2.39.5