mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-13 17:26:34 +00:00
extended charts to support more axes
better errorhandling - messages using sourceforge as thirdparty repository for update git-svn-id: https://svn.fhem.de/fhem/trunk@2836 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
aca47f90b8
commit
63e5b10cf1
1323
fhem/www/frontend/FHEM/93_DbLog.pm
Normal file
1323
fhem/www/frontend/FHEM/93_DbLog.pm
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,2 +1,437 @@
|
||||
DIR www/frontend
|
||||
DIR www/frontend/app
|
||||
DIR www/frontend/app/model
|
||||
DIR www/frontend/app/store
|
||||
DIR www/frontend/app/view
|
||||
DIR www/frontend/app/controller
|
||||
DIR www/frontend/lib
|
||||
DIR www/frontend/lib/ext-4.1.1a
|
||||
DIR www/frontend/lib/ext-4.1.1a/images
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/tools
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/tree
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/window-header
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/form-invalid-tip
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/datepicker
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/sizer
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/tab
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/toolbar
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/shared
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/btn
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/btn-group
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/tab-bar
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/progress
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/boundlist
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/dd
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/box
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/form
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/menu
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/slider
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/button
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/layout
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/panel
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/window
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/grid
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/util
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/panel-header
|
||||
DIR www/frontend/lib/ext-4.1.1a/images/gray/tip
|
||||
UPD 2013-03-01_05:44:48 49099 FHEM/93_DbLog.pm
|
||||
UPD 2013-02-25_08:13:15 499 www/frontend/index.html
|
||||
UPD 2013-02-27_07:20:39 236 www/frontend/README.txt
|
||||
UPD 2013-03-01_05:42:05 1655 www/frontend/app/app.js
|
||||
UPD 2013-03-01_05:43:56 20350 www/frontend/app/view/LineChartPanel.js
|
||||
UPD 2013-03-01_05:43:56 6770 www/frontend/app/view/Viewport.js
|
||||
UPD 2013-03-01_05:43:56 2503 www/frontend/app/view/TableDataGridPanel.js
|
||||
UPD 2013-03-01_05:43:55 1310 www/frontend/app/view/LineChartView.js
|
||||
UPD 2013-03-01_05:42:32 41591 www/frontend/app/controller/ChartController.js
|
||||
UPD 2013-03-01_05:42:32 2115 www/frontend/app/controller/MainController.js
|
||||
UPD 2013-03-01_05:43:32 202 www/frontend/app/model/ReadingsModel.js
|
||||
UPD 2013-03-01_05:43:32 338 www/frontend/app/model/SavedChartsModel.js
|
||||
UPD 2013-03-01_05:43:31 674 www/frontend/app/model/ChartModel.js
|
||||
UPD 2013-03-01_05:43:32 198 www/frontend/app/model/DeviceModel.js
|
||||
UPD 2013-03-01_05:43:31 685 www/frontend/app/model/TableDataModel.js
|
||||
UPD 2013-03-01_05:43:45 432 www/frontend/app/store/ChartStore.js
|
||||
UPD 2013-03-01_05:43:45 505 www/frontend/app/store/SavedChartsStore.js
|
||||
UPD 2013-03-01_05:43:45 426 www/frontend/app/store/ReadingsStore.js
|
||||
UPD 2013-03-01_05:43:45 1048 www/frontend/app/store/TableDataStore.js
|
||||
UPD 2013-03-01_05:43:44 447 www/frontend/app/store/DeviceStore.js
|
||||
UPD 2013-02-25_08:13:15 1291919 www/frontend/lib/ext-4.1.1a/ext-all.js
|
||||
UPD 2013-02-25_08:13:15 381835 www/frontend/lib/ext-4.1.1a/ext-all-gray-debug.css
|
||||
UPD 2013-02-25_08:13:15 1981 www/frontend/lib/ext-4.1.1a/images/gray/tools/tools-sprites-trans.gif
|
||||
UPD 2013-02-25_08:13:15 5835 www/frontend/lib/ext-4.1.1a/images/gray/tools/tool-sprites.gif
|
||||
UPD 2013-02-25_08:13:15 971 www/frontend/lib/ext-4.1.1a/images/gray/tools/tool-sprite-tpl.gif
|
||||
UPD 2013-02-25_08:13:15 911 www/frontend/lib/ext-4.1.1a/images/gray/tree/drop-over.gif
|
||||
UPD 2013-02-25_08:13:15 1001 www/frontend/lib/ext-4.1.1a/images/gray/tree/drop-add.gif
|
||||
UPD 2013-02-25_08:13:15 159 www/frontend/lib/ext-4.1.1a/images/gray/tree/elbow-end-plus.gif
|
||||
UPD 2013-02-25_08:13:15 771 www/frontend/lib/ext-4.1.1a/images/gray/tree/loading.gif
|
||||
UPD 2013-02-25_08:13:15 356 www/frontend/lib/ext-4.1.1a/images/gray/tree/folder-open.gif
|
||||
UPD 2013-02-25_08:13:15 70 www/frontend/lib/ext-4.1.1a/images/gray/tree/elbow-end.gif
|
||||
UPD 2013-02-25_08:13:15 72 www/frontend/lib/ext-4.1.1a/images/gray/tree/elbow-line.gif
|
||||
UPD 2013-02-25_08:13:15 945 www/frontend/lib/ext-4.1.1a/images/gray/tree/leaf.gif
|
||||
UPD 2013-02-25_08:13:15 152 www/frontend/lib/ext-4.1.1a/images/gray/tree/elbow-plus-nl.gif
|
||||
UPD 2013-02-25_08:13:15 160 www/frontend/lib/ext-4.1.1a/images/gray/tree/elbow-plus.gif
|
||||
UPD 2013-02-25_08:13:15 911 www/frontend/lib/ext-4.1.1a/images/gray/tree/drop-below.gif
|
||||
UPD 2013-02-25_08:13:15 911 www/frontend/lib/ext-4.1.1a/images/gray/tree/drop-above.gif
|
||||
UPD 2013-02-25_08:13:15 151 www/frontend/lib/ext-4.1.1a/images/gray/tree/elbow-minus-nl.gif
|
||||
UPD 2013-02-25_08:13:15 73 www/frontend/lib/ext-4.1.1a/images/gray/tree/elbow.gif
|
||||
UPD 2013-02-25_08:13:15 1016 www/frontend/lib/ext-4.1.1a/images/gray/tree/drop-yes.gif
|
||||
UPD 2013-02-25_08:13:15 1001 www/frontend/lib/ext-4.1.1a/images/gray/tree/drop-append.gif
|
||||
UPD 2013-02-25_08:13:15 351 www/frontend/lib/ext-4.1.1a/images/gray/tree/folder.gif
|
||||
UPD 2013-02-25_08:13:15 617 www/frontend/lib/ext-4.1.1a/images/gray/tree/arrows.gif
|
||||
UPD 2013-02-25_08:13:15 907 www/frontend/lib/ext-4.1.1a/images/gray/tree/drop-between.gif
|
||||
UPD 2013-02-25_08:13:15 43 www/frontend/lib/ext-4.1.1a/images/gray/tree/s.gif
|
||||
UPD 2013-02-25_08:13:15 151 www/frontend/lib/ext-4.1.1a/images/gray/tree/elbow-end-minus-nl.gif
|
||||
UPD 2013-02-25_08:13:15 157 www/frontend/lib/ext-4.1.1a/images/gray/tree/elbow-end-minus.gif
|
||||
UPD 2013-02-25_08:13:15 159 www/frontend/lib/ext-4.1.1a/images/gray/tree/elbow-minus.gif
|
||||
UPD 2013-02-25_08:13:15 911 www/frontend/lib/ext-4.1.1a/images/gray/tree/drop-under.gif
|
||||
UPD 2013-02-25_08:13:15 152 www/frontend/lib/ext-4.1.1a/images/gray/tree/elbow-end-plus-nl.gif
|
||||
UPD 2013-02-25_08:13:15 949 www/frontend/lib/ext-4.1.1a/images/gray/tree/drop-no.gif
|
||||
UPD 2013-02-25_08:13:15 1690 www/frontend/lib/ext-4.1.1a/images/gray/form-invalid-tip/form-invalid-tip-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1690 www/frontend/lib/ext-4.1.1a/images/gray/form-invalid-tip/form-invalid-tip-default-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1647 www/frontend/lib/ext-4.1.1a/images/gray/form-invalid-tip/form-invalid-tip-default-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1647 www/frontend/lib/ext-4.1.1a/images/gray/form-invalid-tip/form-invalid-tip-sides.gif
|
||||
UPD 2013-02-25_08:13:15 2072 www/frontend/lib/ext-4.1.1a/images/gray/editor/tb-sprite.gif
|
||||
UPD 2013-02-25_08:13:15 204 www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-collapsed-right-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1647 www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-left-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1607 www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-left-sides.gif
|
||||
UPD 2013-02-25_08:13:15 202 www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-collapsed-top-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1649 www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-right-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1607 www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-collapsed-left-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1607 www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-right-sides.gif
|
||||
UPD 2013-02-25_08:13:15 191 www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-top-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1620 www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-collapsed-bottom-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1620 www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-top-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1652 www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-bottom-corners.gif
|
||||
UPD 2013-02-25_08:13:15 203 www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-collapsed-bottom-corners.gif
|
||||
UPD 2013-02-25_08:13:15 151 www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-collapsed-left-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1620 www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-collapsed-top-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1607 www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-collapsed-right-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1620 www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-bottom-sides.gif
|
||||
UPD 2013-02-25_08:13:15 328 www/frontend/lib/ext-4.1.1a/images/gray/datepicker/datepicker-footer-bg.png
|
||||
UPD 2013-02-25_08:13:15 1800 www/frontend/lib/ext-4.1.1a/images/gray/datepicker/datepicker-footer-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1836 www/frontend/lib/ext-4.1.1a/images/gray/datepicker/datepicker-header-bg.gif
|
||||
UPD 2013-02-25_08:13:15 309 www/frontend/lib/ext-4.1.1a/images/gray/datepicker/datepicker-header-bg.png
|
||||
UPD 2013-02-25_08:13:15 1060 www/frontend/lib/ext-4.1.1a/images/gray/sizer/s-handle-dark.gif
|
||||
UPD 2013-02-25_08:13:15 114 www/frontend/lib/ext-4.1.1a/images/gray/sizer/nw-handle.gif
|
||||
UPD 2013-02-25_08:13:15 494 www/frontend/lib/ext-4.1.1a/images/gray/sizer/s-handle.gif
|
||||
UPD 2013-02-25_08:13:15 114 www/frontend/lib/ext-4.1.1a/images/gray/sizer/se-handle.gif
|
||||
UPD 2013-02-25_08:13:15 128 www/frontend/lib/ext-4.1.1a/images/gray/sizer/ne-handle.gif
|
||||
UPD 2013-02-25_08:13:15 123 www/frontend/lib/ext-4.1.1a/images/gray/sizer/square.gif
|
||||
UPD 2013-02-25_08:13:15 838 www/frontend/lib/ext-4.1.1a/images/gray/sizer/se-handle-dark.gif
|
||||
UPD 2013-02-25_08:13:15 839 www/frontend/lib/ext-4.1.1a/images/gray/sizer/nw-handle-dark.gif
|
||||
UPD 2013-02-25_08:13:15 839 www/frontend/lib/ext-4.1.1a/images/gray/sizer/ne-handle-dark.gif
|
||||
UPD 2013-02-25_08:13:15 116 www/frontend/lib/ext-4.1.1a/images/gray/sizer/sw-handle.gif
|
||||
UPD 2013-02-25_08:13:15 839 www/frontend/lib/ext-4.1.1a/images/gray/sizer/sw-handle-dark.gif
|
||||
UPD 2013-02-25_08:13:15 753 www/frontend/lib/ext-4.1.1a/images/gray/sizer/e-handle.gif
|
||||
UPD 2013-02-25_08:13:15 1062 www/frontend/lib/ext-4.1.1a/images/gray/sizer/e-handle-dark.gif
|
||||
UPD 2013-02-25_08:13:15 1811 www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-top-active-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1789 www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-top-disabled-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1648 www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-top-over-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1783 www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-bottom-over-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1997 www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-top-active-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1647 www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-top-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1796 www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-bottom-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1985 www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-bottom-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1979 www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-bottom-over-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1645 www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-top-active-corners.gif
|
||||
UPD 2013-02-25_08:13:15 896 www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-close.gif
|
||||
UPD 2013-02-25_08:13:15 1960 www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-top-over-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1773 www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-top-over-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1983 www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-top-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1642 www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-bottom-active-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1642 www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-bottom-over-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1977 www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-top-disabled-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1646 www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-bottom-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1796 www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-bottom-disabled-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1637 www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-top-disabled-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1998 www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-bottom-active-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1632 www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-bottom-disabled-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1989 www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-bottom-disabled-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1813 www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-bottom-active-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1795 www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-top-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1865 www/frontend/lib/ext-4.1.1a/images/gray/toolbar/scroll-right.gif
|
||||
UPD 2013-02-25_08:13:15 1861 www/frontend/lib/ext-4.1.1a/images/gray/toolbar/scroll-left.gif
|
||||
UPD 2013-02-25_08:13:15 845 www/frontend/lib/ext-4.1.1a/images/gray/toolbar/more.gif
|
||||
UPD 2013-02-25_08:13:15 1801 www/frontend/lib/ext-4.1.1a/images/gray/toolbar/toolbar-default-bg.gif
|
||||
UPD 2013-02-25_08:13:15 2118 www/frontend/lib/ext-4.1.1a/images/gray/shared/loading-balls.gif
|
||||
UPD 2013-02-25_08:13:15 1669 www/frontend/lib/ext-4.1.1a/images/gray/shared/icon-error.gif
|
||||
UPD 2013-02-25_08:13:15 1607 www/frontend/lib/ext-4.1.1a/images/gray/shared/icon-question.gif
|
||||
UPD 2013-02-25_08:13:15 979 www/frontend/lib/ext-4.1.1a/images/gray/shared/calendar.gif
|
||||
UPD 2013-02-25_08:13:15 873 www/frontend/lib/ext-4.1.1a/images/gray/shared/glass-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1099 www/frontend/lib/ext-4.1.1a/images/gray/shared/hd-sprite.gif
|
||||
UPD 2013-02-25_08:13:15 1483 www/frontend/lib/ext-4.1.1a/images/gray/shared/icon-warning.gif
|
||||
UPD 2013-02-25_08:13:15 106 www/frontend/lib/ext-4.1.1a/images/gray/shared/left-btn.gif
|
||||
UPD 2013-02-25_08:13:15 1586 www/frontend/lib/ext-4.1.1a/images/gray/shared/icon-info.gif
|
||||
UPD 2013-02-25_08:13:15 3236 www/frontend/lib/ext-4.1.1a/images/gray/shared/blue-loading.gif
|
||||
UPD 2013-02-25_08:13:15 960 www/frontend/lib/ext-4.1.1a/images/gray/shared/warning.gif
|
||||
UPD 2013-02-25_08:13:15 3236 www/frontend/lib/ext-4.1.1a/images/gray/shared/large-loading.gif
|
||||
UPD 2013-02-25_08:13:15 107 www/frontend/lib/ext-4.1.1a/images/gray/shared/right-btn.gif
|
||||
UPD 2013-02-25_08:13:15 311 www/frontend/lib/ext-4.1.1a/images/gray/shared/shadow.png
|
||||
UPD 2013-02-25_08:13:15 118 www/frontend/lib/ext-4.1.1a/images/gray/shared/shadow-c.png
|
||||
UPD 2013-02-25_08:13:15 135 www/frontend/lib/ext-4.1.1a/images/gray/shared/shadow-lr.png
|
||||
UPD 2013-02-25_08:13:15 1803 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-disabled-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1594 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1594 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-disabled-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1619 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-over-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1892 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-focus-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1621 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-over-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1622 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-over-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1839 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1619 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1618 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-disabled-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1823 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-focus-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1934 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-over-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1621 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-pressed-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1826 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1810 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-focus-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1923 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-disabled-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1615 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-disabled-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1943 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-disabled-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1585 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-disabled-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1810 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-over-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1585 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1889 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1596 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-disabled-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1589 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-disabled-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1894 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-pressed-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1892 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-over-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1619 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-over-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1619 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-focus-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1858 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-pressed-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1892 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-focus-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1915 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-over-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1858 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-pressed-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1892 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-over-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1917 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-pressed-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1894 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-pressed-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1585 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1837 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-focus-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1619 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1621 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-pressed-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1622 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-focus-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1589 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1619 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-focus-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1832 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-disabled-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1935 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-over-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1915 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-over-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1619 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1837 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-focus-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1619 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-pressed-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1619 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-focus-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1823 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-focus-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1810 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-over-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1823 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-over-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1837 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-over-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1935 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-focus-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1621 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-pressed-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1618 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-focus-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1839 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-pressed-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1585 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1585 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-disabled-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1585 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-disabled-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1810 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-focus-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1934 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-focus-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1823 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-over-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1596 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1621 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-pressed-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1816 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-pressed-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1847 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-disabled-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1915 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-focus-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1619 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-over-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1619 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-pressed-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1801 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1888 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-disabled-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1917 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-pressed-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1947 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-pressed-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1919 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1945 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-pressed-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1816 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-pressed-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1837 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-over-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1915 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-focus-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1618 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-disabled-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1938 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1839 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-pressed-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1621 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-focus-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1618 www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-over-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1598 www/frontend/lib/ext-4.1.1a/images/gray/btn-group/btn-group-default-framed-notitle-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1623 www/frontend/lib/ext-4.1.1a/images/gray/btn-group/btn-group-default-framed-notitle-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1598 www/frontend/lib/ext-4.1.1a/images/gray/btn-group/btn-group-default-framed-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1630 www/frontend/lib/ext-4.1.1a/images/gray/btn-group/btn-group-default-framed-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1269 www/frontend/lib/ext-4.1.1a/images/gray/tab-bar/scroll-right.gif
|
||||
UPD 2013-02-25_08:13:15 1260 www/frontend/lib/ext-4.1.1a/images/gray/tab-bar/scroll-left.gif
|
||||
UPD 2013-02-25_08:13:15 314 www/frontend/lib/ext-4.1.1a/images/gray/tab-bar/tab-bar-default-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1832 www/frontend/lib/ext-4.1.1a/images/gray/progress/progress-default-bg.gif
|
||||
UPD 2013-02-25_08:13:15 2869 www/frontend/lib/ext-4.1.1a/images/gray/boundlist/trigger-arrow.png
|
||||
UPD 2013-02-25_08:13:15 1001 www/frontend/lib/ext-4.1.1a/images/gray/dd/drop-add.gif
|
||||
UPD 2013-02-25_08:13:15 1016 www/frontend/lib/ext-4.1.1a/images/gray/dd/drop-yes.gif
|
||||
UPD 2013-02-25_08:13:15 949 www/frontend/lib/ext-4.1.1a/images/gray/dd/drop-no.gif
|
||||
UPD 2013-02-25_08:13:15 810 www/frontend/lib/ext-4.1.1a/images/gray/box/r-blue.gif
|
||||
UPD 2013-02-25_08:13:15 839 www/frontend/lib/ext-4.1.1a/images/gray/box/tb.gif
|
||||
UPD 2013-02-25_08:13:15 810 www/frontend/lib/ext-4.1.1a/images/gray/box/l-blue.gif
|
||||
UPD 2013-02-25_08:13:15 810 www/frontend/lib/ext-4.1.1a/images/gray/box/r.gif
|
||||
UPD 2013-02-25_08:13:15 810 www/frontend/lib/ext-4.1.1a/images/gray/box/l.gif
|
||||
UPD 2013-02-25_08:13:15 851 www/frontend/lib/ext-4.1.1a/images/gray/box/tb-blue.gif
|
||||
UPD 2013-02-25_08:13:15 1010 www/frontend/lib/ext-4.1.1a/images/gray/box/corners-blue.gif
|
||||
UPD 2013-02-25_08:13:15 1005 www/frontend/lib/ext-4.1.1a/images/gray/box/corners.gif
|
||||
UPD 2013-02-25_08:13:15 1080 www/frontend/lib/ext-4.1.1a/images/gray/form/trigger.gif
|
||||
UPD 2013-02-25_08:13:15 2061 www/frontend/lib/ext-4.1.1a/images/gray/form/checkbox.gif
|
||||
UPD 2013-02-25_08:13:15 1071 www/frontend/lib/ext-4.1.1a/images/gray/form/trigger-square.gif
|
||||
UPD 2013-02-25_08:13:15 1425 www/frontend/lib/ext-4.1.1a/images/gray/form/clear-trigger.gif
|
||||
UPD 2013-02-25_08:13:15 929 www/frontend/lib/ext-4.1.1a/images/gray/form/date-trigger.gif
|
||||
UPD 2013-02-25_08:13:15 996 www/frontend/lib/ext-4.1.1a/images/gray/form/exclamation.gif
|
||||
UPD 2013-02-25_08:13:15 819 www/frontend/lib/ext-4.1.1a/images/gray/form/text-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1975 www/frontend/lib/ext-4.1.1a/images/gray/form/spinner.gif
|
||||
UPD 2013-02-25_08:13:15 2220 www/frontend/lib/ext-4.1.1a/images/gray/form/search-trigger.gif
|
||||
UPD 2013-02-25_08:13:15 4183 www/frontend/lib/ext-4.1.1a/images/gray/form/error-tip-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1487 www/frontend/lib/ext-4.1.1a/images/gray/form/trigger-tpl.gif
|
||||
UPD 2013-02-25_08:13:15 1746 www/frontend/lib/ext-4.1.1a/images/gray/form/radio.gif
|
||||
UPD 2013-02-25_08:13:15 743 www/frontend/lib/ext-4.1.1a/images/gray/form/spinner-small.gif
|
||||
UPD 2013-02-25_08:13:15 1820 www/frontend/lib/ext-4.1.1a/images/gray/menu/menu-item-active-bg.gif
|
||||
UPD 2013-02-25_08:13:15 941 www/frontend/lib/ext-4.1.1a/images/gray/menu/unchecked.gif
|
||||
UPD 2013-02-25_08:13:15 834 www/frontend/lib/ext-4.1.1a/images/gray/menu/menu.gif
|
||||
UPD 2013-02-25_08:13:15 850 www/frontend/lib/ext-4.1.1a/images/gray/menu/item-over.gif
|
||||
UPD 2013-02-25_08:13:15 959 www/frontend/lib/ext-4.1.1a/images/gray/menu/checked.gif
|
||||
UPD 2013-02-25_08:13:15 1902 www/frontend/lib/ext-4.1.1a/images/gray/menu/menu-item-active-sides.gif
|
||||
UPD 2013-02-25_08:13:15 165 www/frontend/lib/ext-4.1.1a/images/gray/menu/menu-parent.gif
|
||||
UPD 2013-02-25_08:13:15 1620 www/frontend/lib/ext-4.1.1a/images/gray/menu/menu-item-active-corners.gif
|
||||
UPD 2013-02-25_08:13:15 295 www/frontend/lib/ext-4.1.1a/images/gray/menu/group-checked.gif
|
||||
UPD 2013-02-25_08:13:15 49 www/frontend/lib/ext-4.1.1a/images/gray/menu/item-over-disabled.gif
|
||||
UPD 2013-02-25_08:13:15 533 www/frontend/lib/ext-4.1.1a/images/gray/slider/slider-v-thumb.gif
|
||||
UPD 2013-02-25_08:13:15 632 www/frontend/lib/ext-4.1.1a/images/gray/slider/slider-v-thumb.png
|
||||
UPD 2013-02-25_08:13:15 150 www/frontend/lib/ext-4.1.1a/images/gray/slider/slider-v-bg.gif
|
||||
UPD 2013-02-25_08:13:15 675 www/frontend/lib/ext-4.1.1a/images/gray/slider/slider-thumb.png
|
||||
UPD 2013-02-25_08:13:15 542 www/frontend/lib/ext-4.1.1a/images/gray/slider/slider-thumb.gif
|
||||
UPD 2013-02-25_08:13:15 145 www/frontend/lib/ext-4.1.1a/images/gray/slider/slider-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1494 www/frontend/lib/ext-4.1.1a/images/gray/slider/slider-bg.png
|
||||
UPD 2013-02-25_08:13:15 288 www/frontend/lib/ext-4.1.1a/images/gray/slider/slider-v-bg.png
|
||||
UPD 2013-02-25_08:13:15 3319 www/frontend/lib/ext-4.1.1a/images/gray/button/btn.gif
|
||||
UPD 2013-02-25_08:13:15 861 www/frontend/lib/ext-4.1.1a/images/gray/button/group-lr.gif
|
||||
UPD 2013-02-25_08:13:15 846 www/frontend/lib/ext-4.1.1a/images/gray/button/group-tb.gif
|
||||
UPD 2013-02-25_08:13:15 139 www/frontend/lib/ext-4.1.1a/images/gray/button/s-arrow-o.gif
|
||||
UPD 2013-02-25_08:13:15 1222 www/frontend/lib/ext-4.1.1a/images/gray/button/btn-sprite.gif
|
||||
UPD 2013-02-25_08:13:15 863 www/frontend/lib/ext-4.1.1a/images/gray/button/s-arrow-noline.gif
|
||||
UPD 2013-02-25_08:13:15 898 www/frontend/lib/ext-4.1.1a/images/gray/button/s-arrow-b-noline.gif
|
||||
UPD 2013-02-25_08:13:15 2459 www/frontend/lib/ext-4.1.1a/images/gray/button/group-cs.gif
|
||||
UPD 2013-02-25_08:13:15 937 www/frontend/lib/ext-4.1.1a/images/gray/button/s-arrow.gif
|
||||
UPD 2013-02-25_08:13:15 937 www/frontend/lib/ext-4.1.1a/images/gray/button/s-arrow-b.gif
|
||||
UPD 2013-02-25_08:13:15 870 www/frontend/lib/ext-4.1.1a/images/gray/button/btn-arrow.gif
|
||||
UPD 2013-02-25_08:13:15 937 www/frontend/lib/ext-4.1.1a/images/gray/button/s-arrow-bo.gif
|
||||
UPD 2013-02-25_08:13:15 828 www/frontend/lib/ext-4.1.1a/images/gray/button/arrow.gif
|
||||
UPD 2013-02-25_08:13:15 116 www/frontend/lib/ext-4.1.1a/images/gray/button/s-arrow-light.gif
|
||||
UPD 2013-02-25_08:13:15 871 www/frontend/lib/ext-4.1.1a/images/gray/layout/mini-left.gif
|
||||
UPD 2013-02-25_08:13:15 872 www/frontend/lib/ext-4.1.1a/images/gray/layout/mini-right.gif
|
||||
UPD 2013-02-25_08:13:15 856 www/frontend/lib/ext-4.1.1a/images/gray/layout/mini-bottom.gif
|
||||
UPD 2013-02-25_08:13:15 856 www/frontend/lib/ext-4.1.1a/images/gray/layout/mini-top.gif
|
||||
UPD 2013-02-25_08:13:15 1727 www/frontend/lib/ext-4.1.1a/images/gray/panel/panel-default-framed-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1631 www/frontend/lib/ext-4.1.1a/images/gray/panel/panel-default-framed-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1669 www/frontend/lib/ext-4.1.1a/images/gray/window/icon-error.gif
|
||||
UPD 2013-02-25_08:13:15 1607 www/frontend/lib/ext-4.1.1a/images/gray/window/icon-question.gif
|
||||
UPD 2013-02-25_08:13:15 1483 www/frontend/lib/ext-4.1.1a/images/gray/window/icon-warning.gif
|
||||
UPD 2013-02-25_08:13:15 1586 www/frontend/lib/ext-4.1.1a/images/gray/window/icon-info.gif
|
||||
UPD 2013-02-25_08:13:15 1672 www/frontend/lib/ext-4.1.1a/images/gray/window/window-default-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1776 www/frontend/lib/ext-4.1.1a/images/gray/window/window-default-sides.gif
|
||||
UPD 2013-02-25_08:13:15 136 www/frontend/lib/ext-4.1.1a/images/gray/grid/group-collapse.gif
|
||||
UPD 2013-02-25_08:13:15 923 www/frontend/lib/ext-4.1.1a/images/gray/grid/page-last-disabled.gif
|
||||
UPD 2013-02-25_08:13:15 1767 www/frontend/lib/ext-4.1.1a/images/gray/grid/column-header-over-bg.gif
|
||||
UPD 2013-02-25_08:13:15 325 www/frontend/lib/ext-4.1.1a/images/gray/grid/page-last.gif
|
||||
UPD 2013-02-25_08:13:15 177 www/frontend/lib/ext-4.1.1a/images/gray/grid/col-move-bottom.gif
|
||||
UPD 2013-02-25_08:13:15 879 www/frontend/lib/ext-4.1.1a/images/gray/grid/page-prev-disabled.gif
|
||||
UPD 2013-02-25_08:13:15 59 www/frontend/lib/ext-4.1.1a/images/gray/grid/sort_desc.gif
|
||||
UPD 2013-02-25_08:13:15 971 www/frontend/lib/ext-4.1.1a/images/gray/grid/hmenu-unlock.gif
|
||||
UPD 2013-02-25_08:13:15 771 www/frontend/lib/ext-4.1.1a/images/gray/grid/loading.gif
|
||||
UPD 2013-02-25_08:13:15 1100 www/frontend/lib/ext-4.1.1a/images/gray/grid/wait.gif
|
||||
UPD 2013-02-25_08:13:15 178 www/frontend/lib/ext-4.1.1a/images/gray/grid/col-move-top.gif
|
||||
UPD 2013-02-25_08:13:15 829 www/frontend/lib/ext-4.1.1a/images/gray/grid/grid-vista-hd.gif
|
||||
UPD 2013-02-25_08:13:15 875 www/frontend/lib/ext-4.1.1a/images/gray/grid/page-next-disabled.gif
|
||||
UPD 2013-02-25_08:13:15 697 www/frontend/lib/ext-4.1.1a/images/gray/grid/hmenu-unlock.png
|
||||
UPD 2013-02-25_08:13:15 825 www/frontend/lib/ext-4.1.1a/images/gray/grid/arrow-left-white.gif
|
||||
UPD 2013-02-25_08:13:15 823 www/frontend/lib/ext-4.1.1a/images/gray/grid/row-sel.gif
|
||||
UPD 2013-02-25_08:13:15 186 www/frontend/lib/ext-4.1.1a/images/gray/grid/page-prev.gif
|
||||
UPD 2013-02-25_08:13:15 1036 www/frontend/lib/ext-4.1.1a/images/gray/grid/pick-button.gif
|
||||
UPD 2013-02-25_08:13:15 855 www/frontend/lib/ext-4.1.1a/images/gray/grid/grid-hrow.gif
|
||||
UPD 2013-02-25_08:13:15 836 www/frontend/lib/ext-4.1.1a/images/gray/grid/grid3-hrow.gif
|
||||
UPD 2013-02-25_08:13:15 1640 www/frontend/lib/ext-4.1.1a/images/gray/grid/cell-special-selected-bg.gif
|
||||
UPD 2013-02-25_08:13:15 823 www/frontend/lib/ext-4.1.1a/images/gray/grid/row-over.gif
|
||||
UPD 2013-02-25_08:13:15 121 www/frontend/lib/ext-4.1.1a/images/gray/grid/cell-special-bg.png
|
||||
UPD 2013-02-25_08:13:15 482 www/frontend/lib/ext-4.1.1a/images/gray/grid/grid3-hd-btn.gif
|
||||
UPD 2013-02-25_08:13:15 832 www/frontend/lib/ext-4.1.1a/images/gray/grid/dirty.gif
|
||||
UPD 2013-02-25_08:13:15 825 www/frontend/lib/ext-4.1.1a/images/gray/grid/arrow-right-white.gif
|
||||
UPD 2013-02-25_08:13:15 941 www/frontend/lib/ext-4.1.1a/images/gray/grid/unchecked.gif
|
||||
UPD 2013-02-25_08:13:15 577 www/frontend/lib/ext-4.1.1a/images/gray/grid/refresh-disabled.gif
|
||||
UPD 2013-02-25_08:13:15 133 www/frontend/lib/ext-4.1.1a/images/gray/grid/done.gif
|
||||
UPD 2013-02-25_08:13:15 570 www/frontend/lib/ext-4.1.1a/images/gray/grid/refresh.gif
|
||||
UPD 2013-02-25_08:13:15 349 www/frontend/lib/ext-4.1.1a/images/gray/grid/dd-insert-arrow-right.png
|
||||
UPD 2013-02-25_08:13:15 930 www/frontend/lib/ext-4.1.1a/images/gray/grid/hmenu-desc.gif
|
||||
UPD 2013-02-25_08:13:15 884 www/frontend/lib/ext-4.1.1a/images/gray/grid/nowait.gif
|
||||
UPD 2013-02-25_08:13:15 925 www/frontend/lib/ext-4.1.1a/images/gray/grid/page-first-disabled.gif
|
||||
UPD 2013-02-25_08:13:15 1858 www/frontend/lib/ext-4.1.1a/images/gray/grid/column-header-bg.gif
|
||||
UPD 2013-02-25_08:13:15 843 www/frontend/lib/ext-4.1.1a/images/gray/grid/property-cell-selected-bg.gif
|
||||
UPD 2013-02-25_08:13:15 59 www/frontend/lib/ext-4.1.1a/images/gray/grid/sort_asc.gif
|
||||
UPD 2013-02-25_08:13:15 955 www/frontend/lib/ext-4.1.1a/images/gray/grid/hmenu-lock.gif
|
||||
UPD 2013-02-25_08:13:15 701 www/frontend/lib/ext-4.1.1a/images/gray/grid/grid-loading.gif
|
||||
UPD 2013-02-25_08:13:15 196 www/frontend/lib/ext-4.1.1a/images/gray/grid/group-expand-sprite.gif
|
||||
UPD 2013-02-25_08:13:15 1083 www/frontend/lib/ext-4.1.1a/images/gray/grid/row-check-sprite.gif
|
||||
UPD 2013-02-25_08:13:15 345 www/frontend/lib/ext-4.1.1a/images/gray/grid/dd-insert-arrow-left.png
|
||||
UPD 2013-02-25_08:13:15 815 www/frontend/lib/ext-4.1.1a/images/gray/grid/invalid_line.gif
|
||||
UPD 2013-02-25_08:13:15 43 www/frontend/lib/ext-4.1.1a/images/gray/grid/grid3-rowheader.gif
|
||||
UPD 2013-02-25_08:13:15 301 www/frontend/lib/ext-4.1.1a/images/gray/grid/dd-insert-arrow-right.gif
|
||||
UPD 2013-02-25_08:13:15 283 www/frontend/lib/ext-4.1.1a/images/gray/grid/column-header-over-bg.png
|
||||
UPD 2013-02-25_08:13:15 959 www/frontend/lib/ext-4.1.1a/images/gray/grid/checked.gif
|
||||
UPD 2013-02-25_08:13:15 823 www/frontend/lib/ext-4.1.1a/images/gray/grid/grid3-hrow-over.gif
|
||||
UPD 2013-02-25_08:13:15 834 www/frontend/lib/ext-4.1.1a/images/gray/grid/footer-bg.gif
|
||||
UPD 2013-02-25_08:13:15 860 www/frontend/lib/ext-4.1.1a/images/gray/grid/drop-yes.gif
|
||||
UPD 2013-02-25_08:13:15 875 www/frontend/lib/ext-4.1.1a/images/gray/grid/mso-hd.gif
|
||||
UPD 2013-02-25_08:13:15 817 www/frontend/lib/ext-4.1.1a/images/gray/grid/grid-split.gif
|
||||
UPD 2013-02-25_08:13:15 931 www/frontend/lib/ext-4.1.1a/images/gray/grid/hmenu-asc.gif
|
||||
UPD 2013-02-25_08:13:15 839 www/frontend/lib/ext-4.1.1a/images/gray/grid/hd-pop.gif
|
||||
UPD 2013-02-25_08:13:15 817 www/frontend/lib/ext-4.1.1a/images/gray/grid/grid-blue-split.gif
|
||||
UPD 2013-02-25_08:13:15 829 www/frontend/lib/ext-4.1.1a/images/gray/grid/grid-blue-hd.gif
|
||||
UPD 2013-02-25_08:13:15 136 www/frontend/lib/ext-4.1.1a/images/gray/grid/cell-special-selected-bg.png
|
||||
UPD 2013-02-25_08:13:15 917 www/frontend/lib/ext-4.1.1a/images/gray/grid/group-by.gif
|
||||
UPD 2013-02-25_08:13:15 138 www/frontend/lib/ext-4.1.1a/images/gray/grid/group-expand.gif
|
||||
UPD 2013-02-25_08:13:15 183 www/frontend/lib/ext-4.1.1a/images/gray/grid/page-next.gif
|
||||
UPD 2013-02-25_08:13:15 1636 www/frontend/lib/ext-4.1.1a/images/gray/grid/cell-special-bg.gif
|
||||
UPD 2013-02-25_08:13:15 2731 www/frontend/lib/ext-4.1.1a/images/gray/grid/sort-hd.gif
|
||||
UPD 2013-02-25_08:13:15 293 www/frontend/lib/ext-4.1.1a/images/gray/grid/column-header-bg.png
|
||||
UPD 2013-02-25_08:13:15 648 www/frontend/lib/ext-4.1.1a/images/gray/grid/hmenu-lock.png
|
||||
UPD 2013-02-25_08:13:15 155 www/frontend/lib/ext-4.1.1a/images/gray/grid/property-cell-bg.gif
|
||||
UPD 2013-02-25_08:13:15 196 www/frontend/lib/ext-4.1.1a/images/gray/grid/row-expand-sprite.gif
|
||||
UPD 2013-02-25_08:13:15 299 www/frontend/lib/ext-4.1.1a/images/gray/grid/dd-insert-arrow-left.gif
|
||||
UPD 2013-02-25_08:13:15 962 www/frontend/lib/ext-4.1.1a/images/gray/grid/columns.gif
|
||||
UPD 2013-02-25_08:13:15 947 www/frontend/lib/ext-4.1.1a/images/gray/grid/drop-no.gif
|
||||
UPD 2013-02-25_08:13:15 327 www/frontend/lib/ext-4.1.1a/images/gray/grid/page-first.gif
|
||||
UPD 2013-02-25_08:13:15 871 www/frontend/lib/ext-4.1.1a/images/gray/util/splitter/mini-left.gif
|
||||
UPD 2013-02-25_08:13:15 872 www/frontend/lib/ext-4.1.1a/images/gray/util/splitter/mini-right.gif
|
||||
UPD 2013-02-25_08:13:15 856 www/frontend/lib/ext-4.1.1a/images/gray/util/splitter/mini-bottom.gif
|
||||
UPD 2013-02-25_08:13:15 856 www/frontend/lib/ext-4.1.1a/images/gray/util/splitter/mini-top.gif
|
||||
UPD 2013-02-25_08:13:15 1677 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-collapsed-right-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1819 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1995 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1842 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-right-sides.gif
|
||||
UPD 2013-02-25_08:13:15 2003 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-collapsed-top-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1819 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-collapsed-top-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1676 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-collapsed-left-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1633 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-collapsed-left-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1851 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-top-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1841 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-left-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1641 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-bottom-corners.gif
|
||||
UPD 2013-02-25_08:13:15 2018 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-top-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1656 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-collapsed-top-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1829 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-bottom-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1638 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-right-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1838 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-top-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1832 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-collapsed-right-sides.gif
|
||||
UPD 2013-02-25_08:13:15 2009 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-bottom-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1842 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-bottom-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1652 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1659 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-right-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1641 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-right-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1641 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-top-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1660 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-left-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1640 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-left-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1637 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-left-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1634 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-collapsed-right-bg.gif
|
||||
UPD 2013-02-25_08:13:15 1828 www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-collapsed-left-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1620 www/frontend/lib/ext-4.1.1a/images/gray/tip/tip-corners.gif
|
||||
UPD 2013-02-25_08:13:15 1623 www/frontend/lib/ext-4.1.1a/images/gray/tip/tip-sides.gif
|
||||
UPD 2013-02-25_08:13:15 1482 www/frontend/lib/ext-4.1.1a/license.txt
|
||||
|
@ -5,6 +5,10 @@ Ext.define('FHEM.controller.ChartController', {
|
||||
extend: 'Ext.app.Controller',
|
||||
|
||||
refs: [
|
||||
{
|
||||
selector: 'panel[name=chartformpanel]',
|
||||
ref: 'chartformpanel' //this.getChartformpanel()
|
||||
},
|
||||
{
|
||||
selector: 'datefield[name=starttimepicker]',
|
||||
ref: 'starttimepicker' //this.getStarttimepicker()
|
||||
@ -21,6 +25,14 @@ Ext.define('FHEM.controller.ChartController', {
|
||||
selector: 'button[name=savechartdata]',
|
||||
ref: 'savechartdatabtn' //this.getSavechartdatabtn()
|
||||
},
|
||||
{
|
||||
selector: 'button[name=addyaxisbtn]',
|
||||
ref: 'addyaxisbtn' //this.getAddyaxisbtn()
|
||||
},
|
||||
{
|
||||
selector: 'button[name=addbaselinebtn]',
|
||||
ref: 'addbaselinebtn' //this.getAddbaselinebtn()
|
||||
},
|
||||
{
|
||||
selector: 'combobox[name=devicecombo]',
|
||||
ref: 'devicecombo' //this.getDevicecombo()
|
||||
@ -29,10 +41,50 @@ Ext.define('FHEM.controller.ChartController', {
|
||||
selector: 'combobox[name=xaxiscombo]',
|
||||
ref: 'xaxiscombo' //this.getXaxiscombo()
|
||||
},
|
||||
{
|
||||
selector: 'combobox[name=device2combo]',
|
||||
ref: 'device2combo' //this.getDevicecombo()
|
||||
},
|
||||
{
|
||||
selector: 'combobox[name=y2axiscombo]',
|
||||
ref: 'y2axiscombo' //this.getY2axiscombo()
|
||||
},
|
||||
{
|
||||
selector: 'combobox[name=device3combo]',
|
||||
ref: 'device3combo' //this.getDevicecombo()
|
||||
},
|
||||
{
|
||||
selector: 'combobox[name=y3axiscombo]',
|
||||
ref: 'y3axiscombo' //this.getY3axiscombo()
|
||||
},
|
||||
{
|
||||
selector: 'combobox[name=yaxiscombo]',
|
||||
ref: 'yaxiscombo' //this.getYaxiscombo()
|
||||
},
|
||||
{
|
||||
selector: 'combobox[name=yaxiscolorcombo]',
|
||||
ref: 'yaxiscolorcombo' //this.getYaxiscombo()
|
||||
},
|
||||
{
|
||||
selector: 'combobox[name=y2axiscolorcombo]',
|
||||
ref: 'y2axiscolorcombo' //this.getYaxiscombo()
|
||||
},
|
||||
{
|
||||
selector: 'combobox[name=y3axiscolorcombo]',
|
||||
ref: 'y3axiscolorcombo' //this.getYaxiscombo()
|
||||
},
|
||||
{
|
||||
selector: 'checkboxfield[name=yaxisfillcheck]',
|
||||
ref: 'yaxisfillcheck' //this.getYaxiscombo()
|
||||
},
|
||||
{
|
||||
selector: 'checkboxfield[name=y2axisfillcheck]',
|
||||
ref: 'y2axisfillcheck' //this.getYaxiscombo()
|
||||
},
|
||||
{
|
||||
selector: 'checkboxfield[name=y3axisfillcheck]',
|
||||
ref: 'y3axisfillcheck' //this.getYaxiscombo()
|
||||
},
|
||||
{
|
||||
selector: 'linechartview',
|
||||
ref: 'linechartview' //this.getLinechartview()
|
||||
@ -48,9 +100,56 @@ Ext.define('FHEM.controller.ChartController', {
|
||||
{
|
||||
selector: 'grid[name=savedchartsgrid]',
|
||||
ref: 'savedchartsgrid' //this.getSavedchartsgrid()
|
||||
},
|
||||
{
|
||||
selector: 'numberfield[name=base1start]',
|
||||
ref: 'base1start' //this.getSavedchartsgrid()
|
||||
},
|
||||
{
|
||||
selector: 'numberfield[name=base1end]',
|
||||
ref: 'base1end' //this.getSavedchartsgrid()
|
||||
},
|
||||
{
|
||||
selector: 'combobox[name=baseline1colorcombo]',
|
||||
ref: 'base1color' //this.getSavedchartsgrid()
|
||||
},
|
||||
{
|
||||
selector: 'checkboxfield[name=baseline1fillcheck]',
|
||||
ref: 'base1fill' //this.getSavedchartsgrid()
|
||||
},
|
||||
{
|
||||
selector: 'numberfield[name=base2start]',
|
||||
ref: 'base2start' //this.getSavedchartsgrid()
|
||||
},
|
||||
{
|
||||
selector: 'numberfield[name=base2end]',
|
||||
ref: 'base2end' //this.getSavedchartsgrid()
|
||||
},
|
||||
{
|
||||
selector: 'combobox[name=baseline2colorcombo]',
|
||||
ref: 'base2color' //this.getSavedchartsgrid()
|
||||
},
|
||||
{
|
||||
selector: 'checkboxfield[name=baseline2fillcheck]',
|
||||
ref: 'base2fill' //this.getSavedchartsgrid()
|
||||
},
|
||||
{
|
||||
selector: 'numberfield[name=base3start]',
|
||||
ref: 'base3start' //this.getSavedchartsgrid()
|
||||
},
|
||||
{
|
||||
selector: 'numberfield[name=base3end]',
|
||||
ref: 'base3end' //this.getSavedchartsgrid()
|
||||
},
|
||||
{
|
||||
selector: 'combobox[name=baseline3colorcombo]',
|
||||
ref: 'base3color' //this.getSavedchartsgrid()
|
||||
},
|
||||
{
|
||||
selector: 'checkboxfield[name=baseline3fillcheck]',
|
||||
ref: 'base3fill' //this.getSavedchartsgrid()
|
||||
}
|
||||
|
||||
|
||||
],
|
||||
|
||||
/**
|
||||
@ -61,6 +160,12 @@ Ext.define('FHEM.controller.ChartController', {
|
||||
'combobox[name=devicecombo]': {
|
||||
select: this.deviceSelected
|
||||
},
|
||||
'combobox[name=device2combo]': {
|
||||
select: this.deviceSelected
|
||||
},
|
||||
'combobox[name=device3combo]': {
|
||||
select: this.deviceSelected
|
||||
},
|
||||
'button[name=requestchartdata]': {
|
||||
click: this.requestChartData
|
||||
},
|
||||
@ -73,6 +178,9 @@ Ext.define('FHEM.controller.ChartController', {
|
||||
'button[name=stepforward]': {
|
||||
click: this.stepchange
|
||||
},
|
||||
'button[name=resetchartform]': {
|
||||
click: this.resetFormFields
|
||||
},
|
||||
'linechartview': {
|
||||
afterrender: this.enableZoomInChart
|
||||
},
|
||||
@ -93,8 +201,19 @@ Ext.define('FHEM.controller.ChartController', {
|
||||
deviceSelected: function(combo){
|
||||
|
||||
var device = combo.getValue(),
|
||||
store,
|
||||
proxy;
|
||||
|
||||
if (combo.name === "devicecombo") {
|
||||
store = this.getYaxiscombo().getStore(),
|
||||
proxy = store.getProxy();
|
||||
} else if (combo.name === "device2combo") {
|
||||
store = this.getY2axiscombo().getStore(),
|
||||
proxy = store.getProxy();
|
||||
} else if (combo.name === "device3combo") {
|
||||
store = this.getY3axiscombo().getStore(),
|
||||
proxy = store.getProxy();
|
||||
}
|
||||
|
||||
if (proxy) {
|
||||
proxy.url = '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+""+""+' + device + '+getreadings&XHR=1';
|
||||
@ -113,6 +232,30 @@ Ext.define('FHEM.controller.ChartController', {
|
||||
var device = me.getDevicecombo().getValue(),
|
||||
xaxis = me.getXaxiscombo().getValue(),
|
||||
yaxis = me.getYaxiscombo().getValue(),
|
||||
yaxiscolorcombo = me.getYaxiscolorcombo().getValue(),
|
||||
yaxisfillcheck = me.getYaxisfillcheck().checked,
|
||||
y2device = me.getDevice2combo().getValue(),
|
||||
y2axis = me.getY2axiscombo().getValue(),
|
||||
y2axiscolorcombo = me.getY2axiscolorcombo().getValue(),
|
||||
y2axisfillcheck= me.getY2axisfillcheck().checked,
|
||||
y3device = me.getDevice3combo().getValue(),
|
||||
y3axis = me.getY3axiscombo().getValue(),
|
||||
y3axiscolorcombo = me.getY3axiscolorcombo().getValue(),
|
||||
y3axisfillcheck = me.getY3axisfillcheck().checked,
|
||||
|
||||
base1start = me.getBase1start().getValue(),
|
||||
base1end = me.getBase1end().getValue(),
|
||||
base1color = me.getBase1color().getValue(),
|
||||
base1fill = me.getBase1fill().checked,
|
||||
base2start = me.getBase2start().getValue(),
|
||||
base2end = me.getBase2end().getValue(),
|
||||
base2color = me.getBase2color().getValue(),
|
||||
base2fill = me.getBase2fill().checked,
|
||||
base3start = me.getBase3start().getValue(),
|
||||
base3end = me.getBase3end().getValue(),
|
||||
base3color = me.getBase3color().getValue(),
|
||||
base3fill = me.getBase3fill().checked,
|
||||
|
||||
starttime = me.getStarttimepicker().getValue(),
|
||||
dbstarttime = Ext.Date.format(starttime, 'Y-m-d_H:i:s'),
|
||||
endtime = me.getEndtimepicker().getValue(),
|
||||
@ -121,25 +264,20 @@ Ext.define('FHEM.controller.ChartController', {
|
||||
store = me.getLinechartview().getStore(),
|
||||
proxy = store.getProxy();
|
||||
|
||||
//cleanup store
|
||||
store.removeAll();
|
||||
|
||||
//cleanup chart
|
||||
for (var i = view.series.length -1; i >= 0; i--) {
|
||||
view.series.removeAt(i);
|
||||
}
|
||||
|
||||
//register store listeners
|
||||
store.on("beforeload", function() {
|
||||
me.getLinechartview().setLoading(true);
|
||||
});
|
||||
store.on("load", function() {
|
||||
me.getLinechartview().setLoading(false);
|
||||
});
|
||||
|
||||
if (proxy) {
|
||||
var url = '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+' + dbstarttime + '+' + dbendtime + '+';
|
||||
url +=device + '+timerange+' + xaxis + '+' + yaxis + '&XHR=1';
|
||||
proxy.url = url;
|
||||
store.load();
|
||||
}
|
||||
|
||||
//remove the old max values of y axis to get a dynamic range
|
||||
delete view.axes.get(0).maximum;
|
||||
|
||||
view.axes.get(0).setTitle(yaxis);
|
||||
//setting x-axis title
|
||||
view.axes.get(1).setTitle(xaxis);
|
||||
|
||||
// set the x axis range dependent on user given timerange
|
||||
@ -147,7 +285,342 @@ Ext.define('FHEM.controller.ChartController', {
|
||||
view.axes.get(1).toDate = endtime;
|
||||
view.axes.get(1).processView();
|
||||
|
||||
me.getLinechartview().redraw();
|
||||
//setup the first y series
|
||||
var y1series = {
|
||||
type : 'line',
|
||||
axis : 'left',
|
||||
xField : 'TIMESTAMP',
|
||||
yField : 'VALUE',
|
||||
title: yaxis,
|
||||
showInLegend: true,
|
||||
smooth: 2,
|
||||
highlight: true,
|
||||
fill: yaxisfillcheck,
|
||||
style: {
|
||||
fill: yaxiscolorcombo,
|
||||
stroke: yaxiscolorcombo
|
||||
},
|
||||
markerConfig: {
|
||||
type: 'circle',
|
||||
size: 3,
|
||||
radius: 3,
|
||||
stroke: yaxiscolorcombo
|
||||
},
|
||||
tips : {
|
||||
trackMouse : true,
|
||||
width : 140,
|
||||
height : 100,
|
||||
renderer : function(storeItem, item) {
|
||||
this.setTitle(' Value: : ' + storeItem.get('VALUE') +
|
||||
'<br> Time: ' + storeItem.get('TIMESTAMP'));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
view.series.add(y1series);
|
||||
|
||||
if (proxy) {
|
||||
var url = '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+' + dbstarttime + '+' + dbendtime + '+';
|
||||
url +=device + '+timerange+' + xaxis + '+' + yaxis;
|
||||
url += '&XHR=1';
|
||||
proxy.url = url;
|
||||
store.load();
|
||||
store.on("load", function() {
|
||||
|
||||
if (!Ext.isEmpty(y2axis)) {
|
||||
|
||||
//setup the second y series
|
||||
var y2series = {
|
||||
type: 'line',
|
||||
title: y2axis,
|
||||
style: {
|
||||
fill: y2axiscolorcombo,
|
||||
stroke: y2axiscolorcombo
|
||||
},
|
||||
axis: 'left',
|
||||
fill: y2axisfillcheck,
|
||||
smooth: 2,
|
||||
highlight: true,
|
||||
showInLegend: true,
|
||||
xField: 'TIMESTAMP2',
|
||||
yField: 'VALUE2',
|
||||
markerConfig: {
|
||||
type: 'circle',
|
||||
size: 3,
|
||||
radius: 3,
|
||||
stroke: y2axiscolorcombo
|
||||
},
|
||||
tips : {
|
||||
trackMouse : true,
|
||||
width : 140,
|
||||
height : 100,
|
||||
renderer : function(storeItem, item) {
|
||||
this.setTitle(' Value: : ' + storeItem.get('VALUE2') +
|
||||
'<br> Time: ' + storeItem.get('TIMESTAMP2'));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
view.series.add(y2series);
|
||||
|
||||
var url2 = '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+' + dbstarttime + '+' + dbendtime + '+';
|
||||
url2 +=y2device + '+timerange+' + xaxis + '+' + y2axis;
|
||||
url2 += '&XHR=1';
|
||||
|
||||
Ext.Ajax.request({
|
||||
method: 'GET',
|
||||
disableCaching: false,
|
||||
url: url2,
|
||||
success: function(response){
|
||||
var json = Ext.decode(response.responseText);
|
||||
|
||||
if (json.success && json.success === "false") {
|
||||
Ext.Msg.alert("Error", "Error an adding 2nd Y-Axis, error was: <br>" + json.msg);
|
||||
} else {
|
||||
|
||||
//rewrite valuedescription to differ from other series / axes
|
||||
store.each(function(rec, index) {
|
||||
if (json.data[index]) {
|
||||
rec.set('VALUE2', json.data[index].VALUE);
|
||||
rec.set('TIMESTAMP2', json.data[index].TIMESTAMP);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
//add records if y2 contains more than y1
|
||||
var storelength = store.getCount();
|
||||
if (json.data.length > storelength) {
|
||||
for (var i = storelength; i < json.data.length; i++) {
|
||||
store.add(
|
||||
{
|
||||
"VALUE2": json.data[i].VALUE,
|
||||
"TIMESTAMP2": json.data[i].TIMESTAMP
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (!Ext.isEmpty(y3axis)) {
|
||||
|
||||
var y3series = {
|
||||
type: 'line',
|
||||
title: y3axis,
|
||||
highlight: true,
|
||||
style: {
|
||||
fill: y3axiscolorcombo,
|
||||
stroke: y3axiscolorcombo
|
||||
},
|
||||
axis: 'left',
|
||||
fill: y3axisfillcheck,
|
||||
smooth: 2,
|
||||
showInLegend: true,
|
||||
xField: 'TIMESTAMP3',
|
||||
yField: 'VALUE3',
|
||||
markerConfig: {
|
||||
type: 'circle',
|
||||
size: 3,
|
||||
radius: 3,
|
||||
stroke: y3axiscolorcombo
|
||||
},
|
||||
tips : {
|
||||
trackMouse : true,
|
||||
width : 140,
|
||||
height : 100,
|
||||
renderer : function(storeItem, item) {
|
||||
this.setTitle(' Value: : ' + storeItem.get('VALUE3') +
|
||||
'<br> Time: ' + storeItem.get('TIMESTAMP3'));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
view.series.add(y3series);
|
||||
|
||||
var url3 = '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+' + dbstarttime + '+' + dbendtime + '+';
|
||||
url3 +=y3device + '+timerange+' + xaxis + '+' + y3axis;
|
||||
url3 += '&XHR=1';
|
||||
|
||||
Ext.Ajax.request({
|
||||
method: 'GET',
|
||||
disableCaching: false,
|
||||
url: url3,
|
||||
success: function(response){
|
||||
|
||||
var json = Ext.decode(response.responseText);
|
||||
|
||||
if (json.success && json.success === "false") {
|
||||
Ext.Msg.alert("Error", "Error an adding 3rd Y-Axis, error was: <br>" + json.msg);
|
||||
} else {
|
||||
|
||||
//rewrite valuedescription to differ from other series / axes
|
||||
store.each(function(rec, index) {
|
||||
if (json.data[index]) {
|
||||
rec.set('VALUE3', json.data[index].VALUE);
|
||||
rec.set('TIMESTAMP3', json.data[index].TIMESTAMP);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
//add records if y3 contains more than y2
|
||||
var storelength = store.getCount();
|
||||
if (json.data.length > storelength) {
|
||||
for (var i = storelength; i < json.data.length; i++) {
|
||||
store.add(
|
||||
{
|
||||
"VALUE3": json.data[i].VALUE,
|
||||
"TIMESTAMP3": json.data[i].TIMESTAMP
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
failure: function() {
|
||||
Ext.Msg.alert("Error", "Error an adding 3rd Y-Axis");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
failure: function() {
|
||||
Ext.Msg.alert("Error", "Error an adding 2nd Y-Axis");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//adding base lines if neccessary
|
||||
if (!Ext.isEmpty(base1start) && base1start != "null") {
|
||||
var bl1 = {
|
||||
type : 'line',
|
||||
name: 'baseline1',
|
||||
axis : 'left',
|
||||
xField : 'TIMESTAMP',
|
||||
yField : 'VALUEBASE1',
|
||||
showInLegend: false,
|
||||
highlight: true,
|
||||
fill: base1fill,
|
||||
style: {
|
||||
fill : base1color,
|
||||
'stroke-width': 3,
|
||||
stroke: base1color
|
||||
},
|
||||
tips : {
|
||||
trackMouse : true,
|
||||
width : 140,
|
||||
height : 100,
|
||||
renderer : function(storeItem, item) {
|
||||
this.setTitle(' Value: : ' + storeItem.get('VALUEBASE1') +
|
||||
'<br> Time: ' + storeItem.get('TIMESTAMP'));
|
||||
}
|
||||
}
|
||||
};
|
||||
view.series.add(bl1);
|
||||
|
||||
store.first().set('VALUEBASE1', base1start);
|
||||
store.last().set('VALUEBASE1', base1end);
|
||||
}
|
||||
|
||||
if (!Ext.isEmpty(base2start) && base2start != "null") {
|
||||
var bl2 = {
|
||||
type : 'line',
|
||||
name: 'baseline2',
|
||||
axis : 'left',
|
||||
xField : 'TIMESTAMP',
|
||||
yField : 'VALUEBASE2',
|
||||
showInLegend: false,
|
||||
highlight: true,
|
||||
fill: base2fill,
|
||||
style: {
|
||||
fill : base2color,
|
||||
'stroke-width': 3,
|
||||
stroke: base2color
|
||||
},
|
||||
tips : {
|
||||
trackMouse : true,
|
||||
width : 140,
|
||||
height : 100,
|
||||
renderer : function(storeItem, item) {
|
||||
this.setTitle(' Value: : ' + storeItem.get('VALUEBASE2') +
|
||||
'<br> Time: ' + storeItem.get('TIMESTAMP'));
|
||||
}
|
||||
}
|
||||
};
|
||||
view.series.add(bl2);
|
||||
store.first().set('VALUEBASE2', base2start);
|
||||
store.last().set('VALUEBASE2', base2end);
|
||||
}
|
||||
if (!Ext.isEmpty(base3start) && base3start != "null") {
|
||||
var bl3 = {
|
||||
type : 'line',
|
||||
name: 'baseline3',
|
||||
axis : 'left',
|
||||
xField : 'TIMESTAMP',
|
||||
yField : 'VALUEBASE3',
|
||||
showInLegend: false,
|
||||
highlight: true,
|
||||
fill: base3fill,
|
||||
style: {
|
||||
fill : base3color,
|
||||
'stroke-width': 3,
|
||||
stroke: base3color
|
||||
},
|
||||
tips : {
|
||||
trackMouse : true,
|
||||
width : 140,
|
||||
height : 100,
|
||||
renderer : function(storeItem, item) {
|
||||
this.setTitle(' Value: : ' + storeItem.get('VALUEBASE3') +
|
||||
'<br> Time: ' + storeItem.get('TIMESTAMP'));
|
||||
}
|
||||
}
|
||||
};
|
||||
view.series.add(bl3);
|
||||
store.first().set('VALUEBASE3', base3start);
|
||||
store.last().set('VALUEBASE3', base3end);
|
||||
|
||||
}
|
||||
|
||||
//remove the old max values of y axis to get a dynamic range
|
||||
delete view.axes.get(0).maximum;
|
||||
|
||||
me.getLinechartview().setLoading(false);
|
||||
|
||||
}, this, {single: true});
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* reset the form fields e.g. when loading a new chart
|
||||
*/
|
||||
resetFormFields: function() {
|
||||
this.getChartformpanel().getForm().reset();
|
||||
this.getDevice2combo().hide();
|
||||
this.getY2axiscombo().hide();
|
||||
this.getY2axiscolorcombo().hide();
|
||||
this.getY2axisfillcheck().hide();
|
||||
this.getDevice3combo().hide();
|
||||
this.getY3axiscombo().hide();
|
||||
this.getY3axiscolorcombo().hide();
|
||||
this.getY3axisfillcheck().hide();
|
||||
this.getAddyaxisbtn().setDisabled(false);
|
||||
this.getBase1start().hide();
|
||||
this.getBase1end().hide();
|
||||
this.getBase1color().hide();
|
||||
this.getBase1fill().hide();
|
||||
this.getBase2start().hide();
|
||||
this.getBase2end().hide();
|
||||
this.getBase2color().hide();
|
||||
this.getBase2fill().hide();
|
||||
this.getBase3start().hide();
|
||||
this.getBase3end().hide();
|
||||
this.getBase3color().hide();
|
||||
this.getBase3fill().hide();
|
||||
this.getAddbaselinebtn().setDisabled(false);
|
||||
|
||||
},
|
||||
|
||||
@ -221,59 +694,85 @@ Ext.define('FHEM.controller.ChartController', {
|
||||
Ext.Msg.prompt("Select a name", "Enter a name to save the Chart", function(action, savename) {
|
||||
if (action === "ok" && !Ext.isEmpty(savename)) {
|
||||
|
||||
//getting all devices, check for same name
|
||||
var store = me.getSavedchartsgrid().getStore(),
|
||||
storednames = [];
|
||||
|
||||
var device = this.getDevicecombo().getValue(),
|
||||
xaxis = this.getXaxiscombo().getValue(),
|
||||
yaxis = this.getYaxiscombo().getValue(),
|
||||
|
||||
yaxiscolorcombo = me.getYaxiscolorcombo().getDisplayValue(),
|
||||
yaxisfillcheck = me.getYaxisfillcheck().checked,
|
||||
y2device = me.getDevice2combo().getValue(),
|
||||
y2axis = me.getY2axiscombo().getValue(),
|
||||
y2axiscolorcombo = me.getY2axiscolorcombo().getDisplayValue(),
|
||||
y2axisfillcheck= me.getY2axisfillcheck().checked,
|
||||
y3device = me.getDevice3combo().getValue(),
|
||||
y3axis = me.getY3axiscombo().getValue(),
|
||||
y3axiscolorcombo = me.getY3axiscolorcombo().getDisplayValue(),
|
||||
y3axisfillcheck = me.getY3axisfillcheck().checked,
|
||||
base1start = me.getBase1start().getValue(),
|
||||
base1end = me.getBase1end().getValue(),
|
||||
base1color = me.getBase1color().getDisplayValue(),
|
||||
base1fill = me.getBase1fill().checked,
|
||||
base2start = me.getBase2start().getValue(),
|
||||
base2end = me.getBase2end().getValue(),
|
||||
base2color = me.getBase2color().getDisplayValue(),
|
||||
base2fill = me.getBase2fill().checked,
|
||||
base3start = me.getBase3start().getValue(),
|
||||
base3end = me.getBase3end().getValue(),
|
||||
base3color = me.getBase3color().getDisplayValue(),
|
||||
base3fill = me.getBase3fill().checked,
|
||||
|
||||
starttime = this.getStarttimepicker().getValue(),
|
||||
dbstarttime = Ext.Date.format(starttime, 'Y-m-d_H:i:s'),
|
||||
endtime = this.getEndtimepicker().getValue(),
|
||||
dbendtime = Ext.Date.format(endtime, 'Y-m-d_H:i:s'),
|
||||
view = this.getLinechartview();
|
||||
|
||||
var jsonConfig = '{\\"x\\":\\"' + xaxis + '\\",\\"y\\":\\"' + yaxis + '\\",\\"device\\":\\"' + device + '\\",';
|
||||
jsonConfig += '\\"yaxiscolorcombo\\":\\"\\' + yaxiscolorcombo + '\\",\\"yaxisfillcheck\\":\\"' + yaxisfillcheck + '\\",';
|
||||
jsonConfig += '\\"y2device\\":\\"' + y2device + '\\",';
|
||||
jsonConfig += '\\"y2axis\\":\\"' + y2axis + '\\",\\"y2axiscolorcombo\\":\\"' + y2axiscolorcombo + '\\",';
|
||||
jsonConfig += '\\"y2axisfillcheck\\":\\"' + y2axisfillcheck + '\\",\\"y3axis\\":\\"' + y3axis + '\\",';
|
||||
jsonConfig += '\\"y3device\\":\\"' + y3device + '\\",';
|
||||
jsonConfig += '\\"y3axiscolorcombo\\":\\"' + y3axiscolorcombo + '\\",\\"y3axisfillcheck\\":\\"' + y3axisfillcheck + '\\",';
|
||||
jsonConfig += '\\"base1start\\":\\"' + base1start + '\\",\\"base1end\\":\\"' + base1end + '\\",';
|
||||
jsonConfig += '\\"base1color\\":\\"' + base1color + '\\",\\"base1fill\\":\\"' + base1fill + '\\",';
|
||||
jsonConfig += '\\"base2start\\":\\"' + base2start + '\\",\\"base2end\\":\\"' + base2end + '\\",';
|
||||
jsonConfig += '\\"base2color\\":\\"' + base2color + '\\",\\"base2fill\\":\\"' + base2fill + '\\",';
|
||||
jsonConfig += '\\"base3start\\":\\"' + base3start + '\\",\\"base3end\\":\\"' + base3end + '\\",';
|
||||
jsonConfig += '\\"base3color\\":\\"' + base3color + '\\",\\"base3fill\\":\\"' + base3fill + '\\",';
|
||||
jsonConfig += '\\"starttime\\":\\"' + dbstarttime + '\\",\\"endtime\\":\\"' + dbendtime + '\\"}';
|
||||
|
||||
store.each(function(record){
|
||||
var name = record.get('VALUE');
|
||||
storednames.push(name);
|
||||
});
|
||||
var url = '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+' + dbstarttime + '+' + dbendtime + '+';
|
||||
url +=device + '+savechart+""+""+' + savename + '+' + jsonConfig + '&XHR=1';
|
||||
|
||||
if (Ext.Array.contains(storednames, savename)) {
|
||||
Ext.Msg.alert("Error", "There already is a chart with the name: " + savename);
|
||||
} else {
|
||||
|
||||
var device = this.getDevicecombo().getValue(),
|
||||
xaxis = this.getXaxiscombo().getValue(),
|
||||
yaxis = this.getYaxiscombo().getValue(),
|
||||
starttime = this.getStarttimepicker().getValue(),
|
||||
dbstarttime = Ext.Date.format(starttime, 'Y-m-d_H:i:s'),
|
||||
endtime = this.getEndtimepicker().getValue(),
|
||||
dbendtime = Ext.Date.format(endtime, 'Y-m-d_H:i:s'),
|
||||
view = this.getLinechartview();
|
||||
view.setLoading(true);
|
||||
|
||||
var url = '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+' + dbstarttime + '+' + dbendtime + '+';
|
||||
url +=device + '+savechart+' + xaxis + '+' + yaxis + '+' + savename + '&XHR=1';
|
||||
|
||||
view.setLoading(true);
|
||||
|
||||
Ext.Ajax.request({
|
||||
method: 'GET',
|
||||
disableCaching: false,
|
||||
url: url,
|
||||
success: function(response){
|
||||
view.setLoading(false);
|
||||
var json = Ext.decode(response.responseText);
|
||||
if (json.success === true) {
|
||||
me.getSavedchartsgrid().getStore().load();
|
||||
Ext.Msg.alert("Success", "Chart successfully saved!");
|
||||
} else if (json.msg) {
|
||||
Ext.Msg.alert("Error", "The Chart could not be saved, error Message is:<br><br>" + json.msg);
|
||||
} else {
|
||||
Ext.Msg.alert("Error", "The Chart could not be saved!");
|
||||
}
|
||||
},
|
||||
failure: function() {
|
||||
view.setLoading(false);
|
||||
if (json && json.msg) {
|
||||
Ext.Msg.alert("Error", "The Chart could not be saved, error Message is:<br><br>" + json.msg);
|
||||
} else {
|
||||
Ext.Msg.alert("Error", "The Chart could not be saved!");
|
||||
}
|
||||
Ext.Ajax.request({
|
||||
method: 'GET',
|
||||
disableCaching: false,
|
||||
url: url,
|
||||
success: function(response){
|
||||
view.setLoading(false);
|
||||
var json = Ext.decode(response.responseText);
|
||||
if (json.success === "true") {
|
||||
me.getSavedchartsgrid().getStore().load();
|
||||
Ext.Msg.alert("Success", "Chart successfully saved!");
|
||||
} else if (json.msg) {
|
||||
Ext.Msg.alert("Error", "The Chart could not be saved, error Message is:<br><br>" + json.msg);
|
||||
} else {
|
||||
Ext.Msg.alert("Error", "The Chart could not be saved!");
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
failure: function() {
|
||||
view.setLoading(false);
|
||||
if (json && json.msg) {
|
||||
Ext.Msg.alert("Error", "The Chart could not be saved, error Message is:<br><br>" + json.msg);
|
||||
} else {
|
||||
Ext.Msg.alert("Error", "The Chart could not be saved!");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}, this);
|
||||
|
||||
@ -283,25 +782,88 @@ Ext.define('FHEM.controller.ChartController', {
|
||||
* loading saved chart data and trigger the load of the chart
|
||||
*/
|
||||
loadsavedchart: function(grid, td, cellIndex, record) {
|
||||
|
||||
|
||||
if (cellIndex === 0) {
|
||||
var name = record.get('VALUE');
|
||||
var chartdata = Ext.decode(record.get('EVENT'))[0];
|
||||
var name = record.get('NAME'),
|
||||
rawchartdata = record.get('VALUE'),
|
||||
chartdata = Ext.decode(rawchartdata);
|
||||
|
||||
//cleanup the form before loading
|
||||
this.resetFormFields();
|
||||
|
||||
if (chartdata && !Ext.isEmpty(chartdata)) {
|
||||
|
||||
this.getDevicecombo().setValue(chartdata.device);
|
||||
// load storedata for readings after device has been selected
|
||||
this.deviceSelected(this.getDevicecombo());
|
||||
|
||||
this.getXaxiscombo().setValue(chartdata.x);
|
||||
this.getYaxiscombo().setValue(chartdata.y);
|
||||
this.getStarttimepicker().setValue(chartdata.starttime);
|
||||
this.getEndtimepicker().setValue(chartdata.endtime);
|
||||
|
||||
if (chartdata.y2device && !Ext.isEmpty(chartdata.y2device) && chartdata.y2device != "null") {
|
||||
this.getDevice2combo().setValue(chartdata.y2device);
|
||||
this.getDevice2combo().show();
|
||||
this.getY2axiscombo().setValue(chartdata.y2axis);
|
||||
this.getY2axiscombo().show();
|
||||
this.getY2axiscolorcombo().setValue(chartdata.y2axiscolorcombo);
|
||||
this.getY2axiscolorcombo().show();
|
||||
this.getY2axisfillcheck().setValue(chartdata.y2axisfillcheck);
|
||||
this.getY2axisfillcheck().show();
|
||||
}
|
||||
if (chartdata.y3device && !Ext.isEmpty(chartdata.y3device) && chartdata.y3device != "null") {
|
||||
this.getDevice3combo().setValue(chartdata.y3device);
|
||||
this.getDevice3combo().show();
|
||||
this.getY3axiscombo().setValue(chartdata.y3axis);
|
||||
this.getY3axiscombo().show();
|
||||
this.getY3axiscolorcombo().setValue(chartdata.y3axiscolorcombo);
|
||||
this.getY3axiscolorcombo().show();
|
||||
this.getY3axisfillcheck().setValue(chartdata.y3axisfillcheck);
|
||||
this.getY3axisfillcheck().show();
|
||||
}
|
||||
|
||||
if (chartdata.base1start && !Ext.isEmpty(chartdata.base1start) && chartdata.base1start != "null") {
|
||||
this.getBase1start().setValue(chartdata.base1start);
|
||||
this.getBase1start().show();
|
||||
this.getBase1end().setValue(chartdata.base1end);
|
||||
this.getBase1end().show();
|
||||
this.getBase1color().setValue(chartdata.base1color);
|
||||
this.getBase1color().show();
|
||||
this.getBase1fill().setValue(chartdata.base1fill);
|
||||
this.getBase1fill().show();
|
||||
}
|
||||
|
||||
if (chartdata.base2start && !Ext.isEmpty(chartdata.base2start) && chartdata.base2start != "null") {
|
||||
this.getBase2start().setValue(chartdata.base2start);
|
||||
this.getBase2start().show();
|
||||
this.getBase2end().setValue(chartdata.base2end);
|
||||
this.getBase2end().show();
|
||||
this.getBase2color().setValue(chartdata.base2color);
|
||||
this.getBase2color().show();
|
||||
this.getBase2fill().setValue(chartdata.base2fill);
|
||||
this.getBase2fill().show();
|
||||
}
|
||||
|
||||
if (chartdata.base3start && !Ext.isEmpty(chartdata.base3start) && chartdata.base3start != "null") {
|
||||
this.getBase3start().setValue(chartdata.base3start);
|
||||
this.getBase3start().show();
|
||||
this.getBase3end().setValue(chartdata.base3end);
|
||||
this.getBase3end().show();
|
||||
this.getBase3color().setValue(chartdata.base3color);
|
||||
this.getBase3color().show();
|
||||
this.getBase3fill().setValue(chartdata.base3fill);
|
||||
this.getBase3fill().show();
|
||||
}
|
||||
|
||||
//convert time
|
||||
var start = chartdata.starttime.replace("_", " "),
|
||||
end = chartdata.endtime.replace("_", " ");
|
||||
this.getStarttimepicker().setValue(start);
|
||||
this.getEndtimepicker().setValue(end);
|
||||
|
||||
this.requestChartData();
|
||||
this.getLinechartpanel().setTitle(name);
|
||||
} else {
|
||||
Ext.Msg.alert("Error", "The Chart could not be loaded!");
|
||||
Ext.Msg.alert("Error", "The Chart could not be loaded! RawChartdata was: <br>" + rawchartdata);
|
||||
}
|
||||
|
||||
}
|
||||
@ -313,10 +875,10 @@ Ext.define('FHEM.controller.ChartController', {
|
||||
deletechart: function(grid, td, cellIndex, par, evt, record) {
|
||||
|
||||
var me = this,
|
||||
chartname = record.get('VALUE'),
|
||||
chartid = record.get('ID'),
|
||||
view = this.getLinechartview();
|
||||
|
||||
if (Ext.isDefined(chartname) && chartname !== "") {
|
||||
if (Ext.isDefined(chartid) && chartid !== "") {
|
||||
|
||||
Ext.create('Ext.window.Window', {
|
||||
width: 250,
|
||||
@ -333,7 +895,7 @@ Ext.define('FHEM.controller.ChartController', {
|
||||
text: "Ok",
|
||||
handler: function(btn){
|
||||
|
||||
var url = '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+""+""+""+deletechart+""+""+' + chartname + '&XHR=1';
|
||||
var url = '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+""+""+""+deletechart+""+""+' + chartid + '&XHR=1';
|
||||
|
||||
view.setLoading(true);
|
||||
|
||||
@ -344,7 +906,7 @@ Ext.define('FHEM.controller.ChartController', {
|
||||
success: function(response){
|
||||
view.setLoading(false);
|
||||
var json = Ext.decode(response.responseText);
|
||||
if (json && json.success === true) {
|
||||
if (json && json.success === "true") {
|
||||
me.getSavedchartsgrid().getStore().load();
|
||||
Ext.Msg.alert("Success", "Chart successfully deleted!");
|
||||
} else if (json && json.msg) {
|
||||
@ -373,8 +935,10 @@ Ext.define('FHEM.controller.ChartController', {
|
||||
}
|
||||
}]
|
||||
}).show();
|
||||
} else {
|
||||
Ext.Msg.alert("Error", "The Chart could not be deleted, no record id has been found");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
});
|
@ -72,9 +72,8 @@ Ext.define('FHEM.controller.MainController', {
|
||||
*
|
||||
*/
|
||||
showDatabaseTablePanel: function() {
|
||||
//TODO: use this when new dblog module is deployed
|
||||
//Ext.ComponentQuery.query('panel[name=linechartpanel]')[0].hide();
|
||||
//Ext.ComponentQuery.query('panel[name=tabledatagridpanel]')[0].show();
|
||||
Ext.ComponentQuery.query('panel[name=linechartpanel]')[0].hide();
|
||||
Ext.ComponentQuery.query('panel[name=tabledatagridpanel]')[0].show();
|
||||
}
|
||||
|
||||
});
|
@ -8,9 +8,26 @@ Ext.define('FHEM.model.ChartModel', {
|
||||
name: 'TIMESTAMP',
|
||||
type: 'date',
|
||||
dateFormat: "Y-m-d H:i:s"
|
||||
},{
|
||||
},
|
||||
{
|
||||
name: 'TIMESTAMP2',
|
||||
type: 'date',
|
||||
dateFormat: "Y-m-d H:i:s"
|
||||
},
|
||||
{
|
||||
name: 'TIMESTAMP3',
|
||||
type: 'date',
|
||||
dateFormat: "Y-m-d H:i:s"
|
||||
},
|
||||
{
|
||||
name: 'VALUE',
|
||||
type: 'float'
|
||||
},{
|
||||
name: 'VALUE2',
|
||||
type: 'float'
|
||||
},{
|
||||
name: 'VALUE3',
|
||||
type: 'float'
|
||||
}
|
||||
]
|
||||
});
|
@ -5,10 +5,14 @@ Ext.define('FHEM.model.SavedChartsModel', {
|
||||
extend: 'Ext.data.Model',
|
||||
fields: [
|
||||
{
|
||||
name: 'VALUE',
|
||||
name: 'ID',
|
||||
type: 'number'
|
||||
},
|
||||
{
|
||||
name: 'NAME',
|
||||
type: 'text'
|
||||
},{
|
||||
name: 'EVENT',
|
||||
name: 'VALUE',
|
||||
type: 'text'
|
||||
}
|
||||
]
|
||||
|
@ -12,7 +12,7 @@ Ext.define('FHEM.store.TableDataStore', {
|
||||
proxy: {
|
||||
type: 'ajax',
|
||||
method: 'POST',
|
||||
url: '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+""+""+""+getTableData+""+""+""+0+100&XHR=1',
|
||||
url: '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+""+""+""+getTableData+""+""+""+""+0+100&XHR=1',
|
||||
reader: {
|
||||
type: 'json',
|
||||
root: 'data',
|
||||
@ -24,7 +24,7 @@ Ext.define('FHEM.store.TableDataStore', {
|
||||
beforeprefetch: function(store, operation) {
|
||||
//override stores url to contain start and limit params in our needed notation
|
||||
store.proxy.url = '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+""+""+""';
|
||||
store.proxy.url += '+getTableData+""+""+""+' + operation.start +'+' + operation.limit +'&XHR=1';
|
||||
store.proxy.url += '+getTableData+""+""+""+""+' + operation.start +'+' + operation.limit +'&XHR=1';
|
||||
}
|
||||
}
|
||||
});
|
@ -4,7 +4,6 @@
|
||||
Ext.define('FHEM.view.LineChartPanel', {
|
||||
extend: 'Ext.panel.Panel',
|
||||
alias : 'widget.linechartpanel',
|
||||
xtype : 'chart',
|
||||
requires: [
|
||||
'FHEM.view.LineChartView',
|
||||
'FHEM.store.ChartStore'
|
||||
@ -34,7 +33,21 @@ Ext.define('FHEM.view.LineChartPanel', {
|
||||
]
|
||||
});
|
||||
|
||||
me.comboColorStore = Ext.create('Ext.data.Store', {
|
||||
fields: ['name', 'value'],
|
||||
data : [
|
||||
{'name':'Blue','value':'#2F40FA'},
|
||||
{'name':'Green', 'value':'#46E01B'},
|
||||
{'name':'Orange','value':'#F0A800'},
|
||||
{'name':'Red','value':'#E0321B'},
|
||||
{'name':'Yellow','value':'#F5ED16'}
|
||||
]
|
||||
});
|
||||
|
||||
me.comboDeviceStore = Ext.create('FHEM.store.DeviceStore');
|
||||
me.comboDevice2Store = Ext.create('FHEM.store.DeviceStore');
|
||||
me.comboDevice3Store = Ext.create('FHEM.store.DeviceStore');
|
||||
|
||||
me.comboDeviceStore.on("load", function(store, e, success) {
|
||||
if(!success) {
|
||||
Ext.Msg.alert("Error", "Connection to database failed! Check your configuration.");
|
||||
@ -42,86 +55,429 @@ Ext.define('FHEM.view.LineChartPanel', {
|
||||
});
|
||||
|
||||
me.comboReadingsStore = Ext.create('FHEM.store.ReadingsStore');
|
||||
me.comboReadings2Store = Ext.create('FHEM.store.ReadingsStore');
|
||||
me.comboReadings3Store = Ext.create('FHEM.store.ReadingsStore');
|
||||
|
||||
me.dockedItems = [{
|
||||
xtype: 'toolbar',
|
||||
dock: 'top',
|
||||
layout: 'column',
|
||||
minheight: 60,
|
||||
maxHeight: 90,
|
||||
var chartSettingPanel = Ext.create('Ext.form.Panel', {
|
||||
title: 'Chart Settings - Click me to edit',
|
||||
name: 'chartformpanel',
|
||||
maxHeight: 285,
|
||||
autoScroll: true,
|
||||
collapsible: true,
|
||||
titleCollapse: true,
|
||||
listeners: {
|
||||
collapse: me.layoutChart,
|
||||
expand: me.layoutChart
|
||||
},
|
||||
items: [
|
||||
{
|
||||
xtype: 'combobox',
|
||||
name: 'devicecombo',
|
||||
fieldLabel: 'Select Device',
|
||||
store: me.comboDeviceStore,
|
||||
displayField: 'DEVICE',
|
||||
valueField: 'DEVICE'
|
||||
},
|
||||
{
|
||||
xtype: 'combobox',
|
||||
name: 'xaxiscombo',
|
||||
fieldLabel: 'Select X Axis',
|
||||
store: me.comboAxesStore,
|
||||
displayField: 'name',
|
||||
valueField: 'name'
|
||||
},
|
||||
{
|
||||
xtype: 'combobox',
|
||||
name: 'yaxiscombo',
|
||||
fieldLabel: 'Select Y Axis',
|
||||
store: me.comboReadingsStore,
|
||||
displayField: 'READING',
|
||||
valueField: 'READING'
|
||||
{
|
||||
xtype: 'fieldset',
|
||||
layout: 'column',
|
||||
title: 'Select data',
|
||||
defaults: {
|
||||
margin: '0 10 10 10'
|
||||
},
|
||||
items: [
|
||||
{
|
||||
xtype: 'combobox',
|
||||
name: 'devicecombo',
|
||||
fieldLabel: 'Select Device',
|
||||
labelWidth: 90,
|
||||
store: me.comboDeviceStore,
|
||||
displayField: 'DEVICE',
|
||||
valueField: 'DEVICE'
|
||||
},
|
||||
{
|
||||
xtype: 'combobox',
|
||||
name: 'xaxiscombo',
|
||||
fieldLabel: 'Select X Axis',
|
||||
labelWidth: 90,
|
||||
inputWidth: 100,
|
||||
store: me.comboAxesStore,
|
||||
displayField: 'name',
|
||||
valueField: 'name'
|
||||
},
|
||||
{
|
||||
xtype: 'combobox',
|
||||
name: 'yaxiscombo',
|
||||
fieldLabel: 'Select Y-Axis',
|
||||
labelWidth: 90,
|
||||
inputWidth: 110,
|
||||
store: me.comboReadingsStore,
|
||||
displayField: 'READING',
|
||||
valueField: 'READING'
|
||||
},
|
||||
{
|
||||
xtype: 'combobox',
|
||||
name: 'yaxiscolorcombo',
|
||||
fieldLabel: 'Y-Color',
|
||||
labelWidth: 50,
|
||||
inputWidth: 70,
|
||||
store: me.comboColorStore,
|
||||
displayField: 'name',
|
||||
valueField: 'value',
|
||||
value: me.comboColorStore.getAt(0)
|
||||
},
|
||||
{
|
||||
xtype: 'checkboxfield',
|
||||
name: 'yaxisfillcheck',
|
||||
boxLabel: 'Fill'
|
||||
},
|
||||
{
|
||||
xtype: 'combobox',
|
||||
name: 'device2combo',
|
||||
fieldLabel: 'Select 2. Device',
|
||||
labelWidth: 100,
|
||||
store: me.comboDevice2Store,
|
||||
displayField: 'DEVICE',
|
||||
valueField: 'DEVICE',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
xtype: 'combobox',
|
||||
name: 'y2axiscombo',
|
||||
fieldLabel: 'Y2',
|
||||
labelWidth: 20,
|
||||
store: me.comboReadings2Store,
|
||||
displayField: 'READING',
|
||||
valueField: 'READING',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
xtype: 'combobox',
|
||||
name: 'y2axiscolorcombo',
|
||||
fieldLabel: 'Y2-Color',
|
||||
labelWidth: 60,
|
||||
inputWidth: 70,
|
||||
store: me.comboColorStore,
|
||||
displayField: 'name',
|
||||
valueField: 'value',
|
||||
value: me.comboColorStore.getAt(1),
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
xtype: 'checkboxfield',
|
||||
name: 'y2axisfillcheck',
|
||||
boxLabel: 'Fill',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
xtype: 'combobox',
|
||||
name: 'device3combo',
|
||||
fieldLabel: 'Select 3. Device',
|
||||
labelWidth: 100,
|
||||
store: me.comboDevice3Store,
|
||||
displayField: 'DEVICE',
|
||||
valueField: 'DEVICE',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
xtype: 'combobox',
|
||||
name: 'y3axiscombo',
|
||||
fieldLabel: 'Y3',
|
||||
labelWidth: 20,
|
||||
store: me.comboReadings3Store,
|
||||
displayField: 'READING',
|
||||
valueField: 'READING',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
xtype: 'combobox',
|
||||
name: 'y3axiscolorcombo',
|
||||
fieldLabel: 'Y3-Color',
|
||||
labelWidth: 60,
|
||||
inputWidth: 70,
|
||||
store: me.comboColorStore,
|
||||
displayField: 'name',
|
||||
valueField: 'value',
|
||||
value: me.comboColorStore.getAt(2),
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
xtype: 'checkboxfield',
|
||||
name: 'y3axisfillcheck',
|
||||
boxLabel: 'Fill',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
xtype: 'button',
|
||||
width: 110,
|
||||
text: 'Add another Y-Axis',
|
||||
name: 'addyaxisbtn',
|
||||
handler: function(btn) {
|
||||
var y2device = btn.up().down('combobox[name=device2combo]');
|
||||
var y2 = btn.up().down('combobox[name=y2axiscombo]');
|
||||
var y2color = btn.up().down('combobox[name=y2axiscolorcombo]');
|
||||
var y2fill = btn.up().down('checkboxfield[name=y2axisfillcheck]');
|
||||
|
||||
var y3device = btn.up().down('combobox[name=device3combo]');
|
||||
var y3 = btn.up().down('combobox[name=y3axiscombo]');
|
||||
var y3color = btn.up().down('combobox[name=y3axiscolorcombo]');
|
||||
var y3fill = btn.up().down('checkboxfield[name=y3axisfillcheck]');
|
||||
|
||||
if (y2.hidden) {
|
||||
y2device.show();
|
||||
y2.show();
|
||||
y2color.show();
|
||||
y2fill.show();
|
||||
} else if (y3.hidden) {
|
||||
y3device.show();
|
||||
y3.show();
|
||||
y3color.show();
|
||||
y3fill.show();
|
||||
btn.setDisabled(true);
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
xtype: 'numberfield',
|
||||
fieldLabel: 'Startvalue',
|
||||
name: 'base1start',
|
||||
allowBlank: false,
|
||||
labelWidth: 60,
|
||||
width: 120,
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
xtype: 'numberfield',
|
||||
fieldLabel: 'Endvalue',
|
||||
name: 'base1end',
|
||||
allowBlank: false,
|
||||
labelWidth: 60,
|
||||
width: 120,
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
xtype: 'combobox',
|
||||
name: 'baseline1colorcombo',
|
||||
fieldLabel: 'Baseline 1 Color',
|
||||
labelWidth: 100,
|
||||
inputWidth: 70,
|
||||
store: me.comboColorStore,
|
||||
displayField: 'name',
|
||||
valueField: 'value',
|
||||
value: me.comboColorStore.getAt(0),
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
xtype: 'checkboxfield',
|
||||
name: 'baseline1fillcheck',
|
||||
boxLabel: 'Fill',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
xtype: 'numberfield',
|
||||
fieldLabel: 'Startvalue',
|
||||
name: 'base2start',
|
||||
allowBlank: false,
|
||||
labelWidth: 60,
|
||||
width: 120,
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
xtype: 'numberfield',
|
||||
fieldLabel: 'Endvalue',
|
||||
name: 'base2end',
|
||||
allowBlank: false,
|
||||
labelWidth: 60,
|
||||
width: 120,
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
xtype: 'combobox',
|
||||
name: 'baseline2colorcombo',
|
||||
fieldLabel: 'Baseline 2 Color',
|
||||
labelWidth: 100,
|
||||
inputWidth: 70,
|
||||
store: me.comboColorStore,
|
||||
displayField: 'name',
|
||||
valueField: 'value',
|
||||
value: me.comboColorStore.getAt(1),
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
xtype: 'checkboxfield',
|
||||
name: 'baseline2fillcheck',
|
||||
boxLabel: 'Fill',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
xtype: 'numberfield',
|
||||
fieldLabel: 'Startvalue',
|
||||
name: 'base3start',
|
||||
allowBlank: false,
|
||||
labelWidth: 60,
|
||||
width: 120,
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
xtype: 'numberfield',
|
||||
fieldLabel: 'Endvalue',
|
||||
name: 'base3end',
|
||||
allowBlank: false,
|
||||
labelWidth: 60,
|
||||
width: 120,
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
xtype: 'combobox',
|
||||
name: 'baseline3colorcombo',
|
||||
fieldLabel: 'Baseline 3 Color',
|
||||
labelWidth: 100,
|
||||
inputWidth: 70,
|
||||
store: me.comboColorStore,
|
||||
displayField: 'name',
|
||||
valueField: 'value',
|
||||
value: me.comboColorStore.getAt(2),
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
xtype: 'checkboxfield',
|
||||
name: 'baseline3fillcheck',
|
||||
boxLabel: 'Fill',
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
xtype: 'button',
|
||||
width: 110,
|
||||
text: 'Add Baseline',
|
||||
name: 'addbaselinebtn',
|
||||
handler: function(btn) {
|
||||
var b1start = btn.up().down('numberfield[name=base1start]');
|
||||
var b1end = btn.up().down('numberfield[name=base1end]');
|
||||
var b1color = btn.up().down('combobox[name=baseline1colorcombo]');
|
||||
var b1fill = btn.up().down('checkboxfield[name=baseline1fillcheck]');
|
||||
var b2start = btn.up().down('numberfield[name=base2start]');
|
||||
var b2end = btn.up().down('numberfield[name=base2end]');
|
||||
var b2color = btn.up().down('combobox[name=baseline2colorcombo]');
|
||||
var b2fill = btn.up().down('checkboxfield[name=baseline2fillcheck]');
|
||||
var b3start = btn.up().down('numberfield[name=base3start]');
|
||||
var b3end = btn.up().down('numberfield[name=base3end]');
|
||||
var b3color = btn.up().down('combobox[name=baseline3colorcombo]');
|
||||
var b3fill = btn.up().down('checkboxfield[name=baseline3fillcheck]');
|
||||
|
||||
if (b1start.hidden) {
|
||||
b1start.show();
|
||||
b1end.show();
|
||||
b1color.show();
|
||||
b1fill.show();
|
||||
} else if (b2start.hidden) {
|
||||
b2start.show();
|
||||
b2end.show();
|
||||
b2color.show();
|
||||
b2fill.show();
|
||||
} else if (b3start.hidden) {
|
||||
b3start.show();
|
||||
b3end.show();
|
||||
b3color.show();
|
||||
b3fill.show();
|
||||
btn.setDisabled(true);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
xtype: 'datefield',
|
||||
name: 'starttimepicker',
|
||||
format: 'Y-m-d H:i:s',
|
||||
fieldLabel: 'Select Starttime'
|
||||
},
|
||||
xtype: 'fieldset',
|
||||
layout: 'column',
|
||||
title: 'Select Timerange',
|
||||
defaults: {
|
||||
margin: '0 0 0 10'
|
||||
},
|
||||
items: [
|
||||
{
|
||||
xtype: 'datefield',
|
||||
name: 'starttimepicker',
|
||||
format: 'Y-m-d H:i:s',
|
||||
fieldLabel: 'Select Starttime',
|
||||
labelWidth: 90
|
||||
},
|
||||
{
|
||||
xtype: 'datefield',
|
||||
name: 'endtimepicker',
|
||||
format: 'Y-m-d H:i:s',
|
||||
fieldLabel: 'Select Endtime',
|
||||
labelWidth: 90
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
xtype: 'datefield',
|
||||
name: 'endtimepicker',
|
||||
format: 'Y-m-d H:i:s',
|
||||
fieldLabel: 'Select Endtime'
|
||||
},
|
||||
{
|
||||
xtype: 'button',
|
||||
width: 100,
|
||||
text: 'Show Chart',
|
||||
name: 'requestchartdata'
|
||||
},
|
||||
{
|
||||
xtype: 'button',
|
||||
width: 100,
|
||||
text: 'Save Chart',
|
||||
name: 'savechartdata'
|
||||
},
|
||||
{
|
||||
xtype: 'button',
|
||||
width: 100,
|
||||
text: 'Step back',
|
||||
name: 'stepback'
|
||||
},
|
||||
{
|
||||
xtype: 'button',
|
||||
width: 100,
|
||||
text: 'Step forward',
|
||||
name: 'stepforward'
|
||||
xtype: 'fieldset',
|
||||
layout: 'column',
|
||||
defaults: {
|
||||
margin: '0 0 0 10'
|
||||
},
|
||||
items: [
|
||||
{
|
||||
xtype: 'button',
|
||||
width: 100,
|
||||
text: 'Show Chart',
|
||||
name: 'requestchartdata'
|
||||
},
|
||||
{
|
||||
xtype: 'button',
|
||||
width: 100,
|
||||
text: 'Save Chart',
|
||||
name: 'savechartdata'
|
||||
},
|
||||
{
|
||||
xtype: 'button',
|
||||
width: 100,
|
||||
text: 'Reset Fields',
|
||||
name: 'resetchartform'
|
||||
},
|
||||
{
|
||||
xtype: 'button',
|
||||
width: 100,
|
||||
text: 'Step back',
|
||||
name: 'stepback'
|
||||
},
|
||||
{
|
||||
xtype: 'button',
|
||||
width: 100,
|
||||
text: 'Step forward',
|
||||
name: 'stepforward'
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}];
|
||||
});
|
||||
|
||||
me.items = [
|
||||
var linechartview = Ext.create('Ext.panel.Panel', {
|
||||
title: 'Chart',
|
||||
autoScroll: true,
|
||||
collapsible: true,
|
||||
titleCollapse: true,
|
||||
items: [
|
||||
{
|
||||
xtype: 'linechartview',
|
||||
width: '100%'
|
||||
}
|
||||
xtype: 'linechartview'
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
me.items = [
|
||||
chartSettingPanel,
|
||||
linechartview
|
||||
];
|
||||
|
||||
me.callParent(arguments);
|
||||
|
||||
me.on("resize", me.layoutChart);
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* helper function to relayout the chartview dependent on free space
|
||||
*/
|
||||
layoutChart: function() {
|
||||
var lcp = Ext.ComponentQuery.query('linechartpanel')[0];
|
||||
var lcv = Ext.ComponentQuery.query('linechartview')[0];
|
||||
var cfp = Ext.ComponentQuery.query('form[name=chartformpanel]')[0];
|
||||
var chartheight = lcp.getHeight() - cfp.getHeight() - 85;
|
||||
var chartwidth = lcp.getWidth() - 25;
|
||||
lcv.setHeight(chartheight);
|
||||
lcv.setWidth(chartwidth);
|
||||
}
|
||||
|
||||
});
|
||||
|
@ -6,57 +6,42 @@ Ext.define('FHEM.view.LineChartView', {
|
||||
alias : 'widget.linechartview',
|
||||
xtype : 'chart',
|
||||
requires : [ 'FHEM.store.ChartStore' ],
|
||||
style : 'background:#fff',
|
||||
animate : true,
|
||||
shadow : true,
|
||||
theme : 'Category1',
|
||||
legend: {
|
||||
position: 'right'
|
||||
},
|
||||
|
||||
initComponent : function() {
|
||||
var me = this;
|
||||
me.store = Ext.create('FHEM.store.ChartStore');
|
||||
|
||||
me.axes = [ {
|
||||
type : 'Numeric',
|
||||
name : 'yaxe',
|
||||
position : 'left',
|
||||
fields : [ 'VALUE' ],
|
||||
title : 'kW / h',
|
||||
grid : {
|
||||
odd : {
|
||||
opacity : 1,
|
||||
fill : '#ddd',
|
||||
stroke : '#bbb',
|
||||
'stroke-width' : 0.5
|
||||
me.axes = [
|
||||
{
|
||||
type : 'Numeric',
|
||||
name : 'yaxe',
|
||||
position : 'left',
|
||||
fields : [ 'VALUE', 'VALUE2', 'VALUE3', 'VALUEBASE1', 'VALUEBASE2', 'VALUEBASE3' ],
|
||||
title : 'VALUE',
|
||||
grid : {
|
||||
odd : {
|
||||
opacity : 1,
|
||||
fill : '#ddd',
|
||||
stroke : '#bbb',
|
||||
'stroke-width' : 0.5
|
||||
}
|
||||
}
|
||||
}
|
||||
}, {
|
||||
type : 'Time',
|
||||
name : 'xaxe',
|
||||
position : 'bottom',
|
||||
fields : [ 'TIMESTAMP' ],
|
||||
dateFormat : "Y-m-d H:i:s",
|
||||
minorTickSteps : 12,
|
||||
title : 'Time'
|
||||
} ];
|
||||
},
|
||||
{
|
||||
type : 'Time',
|
||||
name : 'xaxe',
|
||||
position : 'bottom',
|
||||
fields : [ 'TIMESTAMP' ],
|
||||
dateFormat : "Y-m-d H:i:s",
|
||||
minorTickSteps : 12,
|
||||
title : 'Time'
|
||||
} ];
|
||||
|
||||
me.series = [ {
|
||||
type : 'line',
|
||||
axis : 'left',
|
||||
xField : 'TIMESTAMP',
|
||||
yField : 'VALUE',
|
||||
smooth: 2,
|
||||
fill: true,
|
||||
highlight: true,
|
||||
tips : {
|
||||
trackMouse : true,
|
||||
width : 140,
|
||||
height : 100,
|
||||
renderer : function(storeItem, item) {
|
||||
this.setTitle(' Value: : ' + storeItem.get('VALUE') +
|
||||
'<br> Time: ' + storeItem.get('TIMESTAMP'));
|
||||
}
|
||||
}
|
||||
} ];
|
||||
me.series = null;
|
||||
|
||||
me.callParent(arguments);
|
||||
|
||||
|
@ -45,7 +45,7 @@ Ext.define('FHEM.view.Viewport', {
|
||||
columns: [
|
||||
{
|
||||
header: 'Saved Charts',
|
||||
dataIndex: 'VALUE',
|
||||
dataIndex: 'NAME',
|
||||
width: '80%'
|
||||
},
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user