From e252cb8b94e7bf3135553874dcb19e1710d55124 Mon Sep 17 00:00:00 2001
From: johannnes <>
Date: Mon, 1 Apr 2013 17:39:51 +0000
Subject: [PATCH] =?UTF-8?q?=20=20*=20Zoomen=20in=20Charts=20nun=20m=C3=B6g?=
=?UTF-8?q?lich=20mit=20aufziehbarer=20Box=20=20=20*=20Erweiterung=20der?=
=?UTF-8?q?=20Anzahl=20der=20m=C3=B6glichen=20Y-Achsen=20von=203=20auf=201?=
=?UTF-8?q?0=20=20=20*=20Jede=20Achse=20kann=20nun=20mit=20Statistikfunkti?=
=?UTF-8?q?onen=20einzeln=20versehen=20werden=20=20=20*=20Bibliotheksupdat?=
=?UTF-8?q?e=20auf=20ExtJS=204.2.0=20=20=20*=20Kleine=20Verbesserungen=20i?=
=?UTF-8?q?n=20der=20Unterst=C3=BCtzung=20mobiler=20Ger=C3=A4te=20=20=20*?=
=?UTF-8?q?=20Bugfixes?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
git-svn-id: https://svn.fhem.de/fhem/trunk@3013 2b470e98-0d58-463d-a4d8-8e2adae1ed80
---
fhem/www/frontend/CHANGED | 7 +
fhem/www/frontend/www/frontend/app/app.js | 14 +-
.../app/controller/ChartController.js | 1364 +-
.../frontend/app/controller/MainController.js | 69 +-
.../www/frontend/app/model/ChartModel.js | 379 +-
.../www/frontend/app/store/DeviceStore.js | 3 +-
.../frontend/app/store/SavedChartsStore.js | 4 +-
.../www/frontend/app/view/DevicePanel.js | 6 +
.../www/frontend/app/view/LineChartPanel.js | 814 +-
.../www/frontend/app/view/LineChartView.js | 50 -
.../frontend/app/view/TableDataGridPanel.js | 1 -
.../www/frontend/app/view/Viewport.js | 13 +-
fhem/www/frontend/www/frontend/index.html | 20 +-
.../lib/ext-4.1.1a/ext-all-gray-debug.css | 9958 --
.../www/frontend/lib/ext-4.1.1a/ext-all.js | 38 -
.../btn-group-default-framed-corners.gif | Bin 1598 -> 0 bytes
.../btn-group-default-framed-sides.gif | Bin 1630 -> 0 bytes
.../images/gray/btn/btn-default-large-bg.gif | Bin 1839 -> 0 bytes
.../gray/btn/btn-default-large-corners.gif | Bin 1619 -> 0 bytes
.../btn/btn-default-large-disabled-bg.gif | Bin 1847 -> 0 bytes
.../btn-default-large-disabled-corners.gif | Bin 1615 -> 0 bytes
.../btn/btn-default-large-disabled-sides.gif | Bin 1943 -> 0 bytes
.../gray/btn/btn-default-large-focus-bg.gif | Bin 1837 -> 0 bytes
.../btn/btn-default-large-focus-corners.gif | Bin 1619 -> 0 bytes
.../btn/btn-default-large-focus-sides.gif | Bin 1935 -> 0 bytes
.../gray/btn/btn-default-large-over-bg.gif | Bin 1837 -> 0 bytes
.../btn/btn-default-large-over-corners.gif | Bin 1619 -> 0 bytes
.../gray/btn/btn-default-large-over-sides.gif | Bin 1935 -> 0 bytes
.../gray/btn/btn-default-large-pressed-bg.gif | Bin 1858 -> 0 bytes
.../btn/btn-default-large-pressed-corners.gif | Bin 1619 -> 0 bytes
.../btn/btn-default-large-pressed-sides.gif | Bin 1945 -> 0 bytes
.../gray/btn/btn-default-large-sides.gif | Bin 1938 -> 0 bytes
.../images/gray/btn/btn-default-medium-bg.gif | Bin 1826 -> 0 bytes
.../gray/btn/btn-default-medium-corners.gif | Bin 1619 -> 0 bytes
.../btn/btn-default-medium-disabled-bg.gif | Bin 1832 -> 0 bytes
.../btn-default-medium-disabled-corners.gif | Bin 1618 -> 0 bytes
.../btn/btn-default-medium-disabled-sides.gif | Bin 1923 -> 0 bytes
.../gray/btn/btn-default-medium-focus-bg.gif | Bin 1823 -> 0 bytes
.../btn/btn-default-medium-focus-corners.gif | Bin 1619 -> 0 bytes
.../btn/btn-default-medium-focus-sides.gif | Bin 1915 -> 0 bytes
.../gray/btn/btn-default-medium-over-bg.gif | Bin 1823 -> 0 bytes
.../btn/btn-default-medium-over-corners.gif | Bin 1619 -> 0 bytes
.../btn/btn-default-medium-over-sides.gif | Bin 1915 -> 0 bytes
.../btn/btn-default-medium-pressed-bg.gif | Bin 1839 -> 0 bytes
.../btn-default-medium-pressed-corners.gif | Bin 1621 -> 0 bytes
.../btn/btn-default-medium-pressed-sides.gif | Bin 1917 -> 0 bytes
.../gray/btn/btn-default-medium-sides.gif | Bin 1919 -> 0 bytes
.../images/gray/btn/btn-default-small-bg.gif | Bin 1801 -> 0 bytes
.../gray/btn/btn-default-small-corners.gif | Bin 1619 -> 0 bytes
.../btn/btn-default-small-disabled-bg.gif | Bin 1803 -> 0 bytes
.../btn-default-small-disabled-corners.gif | Bin 1618 -> 0 bytes
.../btn/btn-default-small-disabled-sides.gif | Bin 1888 -> 0 bytes
.../gray/btn/btn-default-small-focus-bg.gif | Bin 1810 -> 0 bytes
.../btn/btn-default-small-focus-corners.gif | Bin 1622 -> 0 bytes
.../btn/btn-default-small-focus-sides.gif | Bin 1892 -> 0 bytes
.../gray/btn/btn-default-small-over-bg.gif | Bin 1810 -> 0 bytes
.../btn/btn-default-small-over-corners.gif | Bin 1622 -> 0 bytes
.../gray/btn/btn-default-small-over-sides.gif | Bin 1892 -> 0 bytes
.../gray/btn/btn-default-small-pressed-bg.gif | Bin 1816 -> 0 bytes
.../btn/btn-default-small-pressed-corners.gif | Bin 1621 -> 0 bytes
.../btn/btn-default-small-pressed-sides.gif | Bin 1894 -> 0 bytes
.../gray/btn/btn-default-small-sides.gif | Bin 1889 -> 0 bytes
.../btn/btn-default-toolbar-large-corners.gif | Bin 1585 -> 0 bytes
...default-toolbar-large-disabled-corners.gif | Bin 1585 -> 0 bytes
...n-default-toolbar-large-disabled-sides.gif | Bin 1596 -> 0 bytes
.../btn-default-toolbar-large-focus-bg.gif | Bin 1837 -> 0 bytes
...tn-default-toolbar-large-focus-corners.gif | Bin 1618 -> 0 bytes
.../btn-default-toolbar-large-focus-sides.gif | Bin 1934 -> 0 bytes
.../btn/btn-default-toolbar-large-over-bg.gif | Bin 1837 -> 0 bytes
...btn-default-toolbar-large-over-corners.gif | Bin 1618 -> 0 bytes
.../btn-default-toolbar-large-over-sides.gif | Bin 1934 -> 0 bytes
.../btn-default-toolbar-large-pressed-bg.gif | Bin 1858 -> 0 bytes
...-default-toolbar-large-pressed-corners.gif | Bin 1619 -> 0 bytes
...tn-default-toolbar-large-pressed-sides.gif | Bin 1947 -> 0 bytes
.../btn/btn-default-toolbar-large-sides.gif | Bin 1596 -> 0 bytes
.../btn-default-toolbar-medium-corners.gif | Bin 1585 -> 0 bytes
...efault-toolbar-medium-disabled-corners.gif | Bin 1585 -> 0 bytes
...-default-toolbar-medium-disabled-sides.gif | Bin 1594 -> 0 bytes
.../btn-default-toolbar-medium-focus-bg.gif | Bin 1823 -> 0 bytes
...n-default-toolbar-medium-focus-corners.gif | Bin 1619 -> 0 bytes
...btn-default-toolbar-medium-focus-sides.gif | Bin 1915 -> 0 bytes
.../btn-default-toolbar-medium-over-bg.gif | Bin 1823 -> 0 bytes
...tn-default-toolbar-medium-over-corners.gif | Bin 1619 -> 0 bytes
.../btn-default-toolbar-medium-over-sides.gif | Bin 1915 -> 0 bytes
.../btn-default-toolbar-medium-pressed-bg.gif | Bin 1839 -> 0 bytes
...default-toolbar-medium-pressed-corners.gif | Bin 1621 -> 0 bytes
...n-default-toolbar-medium-pressed-sides.gif | Bin 1917 -> 0 bytes
.../btn/btn-default-toolbar-medium-sides.gif | Bin 1594 -> 0 bytes
.../btn/btn-default-toolbar-small-corners.gif | Bin 1585 -> 0 bytes
...default-toolbar-small-disabled-corners.gif | Bin 1585 -> 0 bytes
...n-default-toolbar-small-disabled-sides.gif | Bin 1589 -> 0 bytes
.../btn-default-toolbar-small-focus-bg.gif | Bin 1810 -> 0 bytes
...tn-default-toolbar-small-focus-corners.gif | Bin 1621 -> 0 bytes
.../btn-default-toolbar-small-focus-sides.gif | Bin 1892 -> 0 bytes
.../btn/btn-default-toolbar-small-over-bg.gif | Bin 1810 -> 0 bytes
...btn-default-toolbar-small-over-corners.gif | Bin 1621 -> 0 bytes
.../btn-default-toolbar-small-over-sides.gif | Bin 1892 -> 0 bytes
.../btn-default-toolbar-small-pressed-bg.gif | Bin 1816 -> 0 bytes
...-default-toolbar-small-pressed-corners.gif | Bin 1621 -> 0 bytes
...tn-default-toolbar-small-pressed-sides.gif | Bin 1894 -> 0 bytes
.../btn/btn-default-toolbar-small-sides.gif | Bin 1589 -> 0 bytes
.../gray/datepicker/datepicker-footer-bg.gif | Bin 1800 -> 0 bytes
.../gray/datepicker/datepicker-footer-bg.png | Bin 328 -> 0 bytes
.../gray/datepicker/datepicker-header-bg.gif | Bin 1836 -> 0 bytes
.../gray/datepicker/datepicker-header-bg.png | Bin 309 -> 0 bytes
.../form-invalid-tip-corners.gif | Bin 1690 -> 0 bytes
.../form-invalid-tip-default-corners.gif | Bin 1690 -> 0 bytes
.../form-invalid-tip-default-sides.gif | Bin 1647 -> 0 bytes
.../form-invalid-tip-sides.gif | Bin 1647 -> 0 bytes
.../lib/ext-4.1.1a/images/gray/form/radio.gif | Bin 1746 -> 0 bytes
.../images/gray/grid/column-header-bg.gif | Bin 1858 -> 0 bytes
.../images/gray/grid/column-header-bg.png | Bin 293 -> 0 bytes
.../gray/grid/column-header-over-bg.gif | Bin 1767 -> 0 bytes
.../gray/grid/column-header-over-bg.png | Bin 283 -> 0 bytes
.../images/gray/grid/group-collapse.gif | Bin 136 -> 0 bytes
.../images/gray/grid/group-expand.gif | Bin 138 -> 0 bytes
.../images/gray/menu/menu-item-active-bg.gif | Bin 1820 -> 0 bytes
.../gray/menu/menu-item-active-corners.gif | Bin 1620 -> 0 bytes
.../gray/menu/menu-item-active-sides.gif | Bin 1902 -> 0 bytes
.../panel-header-default-bottom-bg.gif | Bin 1842 -> 0 bytes
.../panel-header-default-framed-bottom-bg.gif | Bin 1829 -> 0 bytes
...l-header-default-framed-bottom-corners.gif | Bin 1641 -> 0 bytes
...nel-header-default-framed-bottom-sides.gif | Bin 2009 -> 0 bytes
...der-default-framed-collapsed-bottom-bg.gif | Bin 1819 -> 0 bytes
...efault-framed-collapsed-bottom-corners.gif | Bin 1652 -> 0 bytes
...-default-framed-collapsed-bottom-sides.gif | Bin 1995 -> 0 bytes
...eader-default-framed-collapsed-left-bg.gif | Bin 1633 -> 0 bytes
...-default-framed-collapsed-left-corners.gif | Bin 1676 -> 0 bytes
...er-default-framed-collapsed-left-sides.gif | Bin 1828 -> 0 bytes
...ader-default-framed-collapsed-right-bg.gif | Bin 1634 -> 0 bytes
...default-framed-collapsed-right-corners.gif | Bin 1677 -> 0 bytes
...r-default-framed-collapsed-right-sides.gif | Bin 1832 -> 0 bytes
...header-default-framed-collapsed-top-bg.gif | Bin 1819 -> 0 bytes
...r-default-framed-collapsed-top-corners.gif | Bin 1656 -> 0 bytes
...der-default-framed-collapsed-top-sides.gif | Bin 2003 -> 0 bytes
.../panel-header-default-framed-left-bg.gif | Bin 1637 -> 0 bytes
...nel-header-default-framed-left-corners.gif | Bin 1660 -> 0 bytes
...panel-header-default-framed-left-sides.gif | Bin 1841 -> 0 bytes
.../panel-header-default-framed-right-bg.gif | Bin 1638 -> 0 bytes
...el-header-default-framed-right-corners.gif | Bin 1659 -> 0 bytes
...anel-header-default-framed-right-sides.gif | Bin 1842 -> 0 bytes
.../panel-header-default-framed-top-bg.gif | Bin 1838 -> 0 bytes
...anel-header-default-framed-top-corners.gif | Bin 1641 -> 0 bytes
.../panel-header-default-framed-top-sides.gif | Bin 2018 -> 0 bytes
.../panel-header-default-left-bg.gif | Bin 1640 -> 0 bytes
.../panel-header-default-right-bg.gif | Bin 1641 -> 0 bytes
.../panel-header-default-top-bg.gif | Bin 1851 -> 0 bytes
.../panel/panel-default-framed-corners.gif | Bin 1631 -> 0 bytes
.../gray/panel/panel-default-framed-sides.gif | Bin 1727 -> 0 bytes
.../gray/progress/progress-default-bg.gif | Bin 1832 -> 0 bytes
.../images/gray/slider/slider-bg.gif | Bin 145 -> 0 bytes
.../images/gray/slider/slider-bg.png | Bin 1494 -> 0 bytes
.../images/gray/slider/slider-v-bg.gif | Bin 150 -> 0 bytes
.../images/gray/slider/slider-v-bg.png | Bin 288 -> 0 bytes
.../gray/tab-bar/tab-bar-default-bg.gif | Bin 314 -> 0 bytes
.../gray/tab/tab-default-bottom-active-bg.gif | Bin 1813 -> 0 bytes
.../tab/tab-default-bottom-active-corners.gif | Bin 1642 -> 0 bytes
.../tab/tab-default-bottom-active-sides.gif | Bin 1998 -> 0 bytes
.../images/gray/tab/tab-default-bottom-bg.gif | Bin 1796 -> 0 bytes
.../gray/tab/tab-default-bottom-corners.gif | Bin 1646 -> 0 bytes
.../tab/tab-default-bottom-disabled-bg.gif | Bin 1796 -> 0 bytes
.../tab-default-bottom-disabled-corners.gif | Bin 1632 -> 0 bytes
.../tab/tab-default-bottom-disabled-sides.gif | Bin 1989 -> 0 bytes
.../gray/tab/tab-default-bottom-over-bg.gif | Bin 1783 -> 0 bytes
.../tab/tab-default-bottom-over-corners.gif | Bin 1642 -> 0 bytes
.../tab/tab-default-bottom-over-sides.gif | Bin 1979 -> 0 bytes
.../gray/tab/tab-default-bottom-sides.gif | Bin 1985 -> 0 bytes
.../gray/tab/tab-default-top-active-bg.gif | Bin 1811 -> 0 bytes
.../tab/tab-default-top-active-corners.gif | Bin 1645 -> 0 bytes
.../gray/tab/tab-default-top-active-sides.gif | Bin 1997 -> 0 bytes
.../images/gray/tab/tab-default-top-bg.gif | Bin 1795 -> 0 bytes
.../gray/tab/tab-default-top-corners.gif | Bin 1647 -> 0 bytes
.../gray/tab/tab-default-top-disabled-bg.gif | Bin 1789 -> 0 bytes
.../tab/tab-default-top-disabled-corners.gif | Bin 1637 -> 0 bytes
.../tab/tab-default-top-disabled-sides.gif | Bin 1977 -> 0 bytes
.../gray/tab/tab-default-top-over-bg.gif | Bin 1773 -> 0 bytes
.../gray/tab/tab-default-top-over-corners.gif | Bin 1648 -> 0 bytes
.../gray/tab/tab-default-top-over-sides.gif | Bin 1960 -> 0 bytes
.../images/gray/tab/tab-default-top-sides.gif | Bin 1983 -> 0 bytes
.../images/gray/tip/tip-corners.gif | Bin 1620 -> 0 bytes
.../ext-4.1.1a/images/gray/tip/tip-sides.gif | Bin 1623 -> 0 bytes
.../gray/toolbar/toolbar-default-bg.gif | Bin 1801 -> 0 bytes
.../window-header-default-bottom-corners.gif | Bin 1652 -> 0 bytes
.../window-header-default-bottom-sides.gif | Bin 1620 -> 0 bytes
...eader-default-collapsed-bottom-corners.gif | Bin 203 -> 0 bytes
...-header-default-collapsed-bottom-sides.gif | Bin 1620 -> 0 bytes
...-header-default-collapsed-left-corners.gif | Bin 151 -> 0 bytes
...ow-header-default-collapsed-left-sides.gif | Bin 1607 -> 0 bytes
...header-default-collapsed-right-corners.gif | Bin 204 -> 0 bytes
...w-header-default-collapsed-right-sides.gif | Bin 1607 -> 0 bytes
...w-header-default-collapsed-top-corners.gif | Bin 202 -> 0 bytes
...dow-header-default-collapsed-top-sides.gif | Bin 1620 -> 0 bytes
.../window-header-default-left-corners.gif | Bin 1647 -> 0 bytes
.../window-header-default-left-sides.gif | Bin 1607 -> 0 bytes
.../window-header-default-right-corners.gif | Bin 1649 -> 0 bytes
.../window-header-default-right-sides.gif | Bin 1607 -> 0 bytes
.../window-header-default-top-corners.gif | Bin 191 -> 0 bytes
.../window-header-default-top-sides.gif | Bin 1620 -> 0 bytes
.../gray/window/window-default-corners.gif | Bin 1672 -> 0 bytes
.../gray/window/window-default-sides.gif | Bin 1776 -> 0 bytes
.../www/frontend/lib/ext-4.1.1a/license.txt | 35 -
.../lib/ext-4.2.0.663/ext-all-debug.js | 128082 +++++++++++++++
.../www/frontend/lib/ext-4.2.0.663/ext-all.js | 21 +
.../www/frontend/lib/ext-4.2.0.663/ext-dev.js | 33269 ++++
.../lib/ext-4.2.0.663/ext-theme-gray-all.css | 1 +
.../images}/boundlist/trigger-arrow.png | Bin
.../images}/box/corners-blue.gif | Bin
.../images}/box/corners.gif | Bin
.../images}/box/l-blue.gif | Bin
.../gray => ext-4.2.0.663/images}/box/l.gif | Bin
.../images}/box/r-blue.gif | Bin
.../gray => ext-4.2.0.663/images}/box/r.gif | Bin
.../images}/box/tb-blue.gif | Bin
.../gray => ext-4.2.0.663/images}/box/tb.gif | Bin
.../images}/button/arrow.gif | Bin
.../images}/button/btn-arrow.gif | Bin
.../images}/button/btn-sprite.gif | Bin
.../images}/button/btn.gif | Bin
.../images}/button/group-cs.gif | Bin
.../images}/button/group-lr.gif | Bin
.../images}/button/group-tb.gif | Bin
.../images}/button/s-arrow-b-noline.gif | Bin
.../images}/button/s-arrow-b.gif | Bin
.../images}/button/s-arrow-bo.gif | Bin
.../images/button/s-arrow-light-rtl.gif | Bin 0 -> 96 bytes
.../images}/button/s-arrow-light.gif | Bin
.../images/button/s-arrow-noline-rtl.gif | Bin 0 -> 76 bytes
.../images}/button/s-arrow-noline.gif | Bin
.../images/button/s-arrow-o-rtl.gif | Bin 0 -> 137 bytes
.../images}/button/s-arrow-o.gif | Bin
.../images/button/s-arrow-rtl.gif | Bin 0 -> 151 bytes
.../images}/button/s-arrow.gif | Bin
.../images}/dd/drop-add.gif | Bin
.../images}/dd/drop-no.gif | Bin
.../images}/dd/drop-yes.gif | Bin
.../images}/editor/tb-sprite.gif | Bin
.../images}/form/checkbox.gif | Bin
.../images/form/clear-trigger-rtl.gif | Bin 0 -> 1415 bytes
.../images}/form/clear-trigger.gif | Bin
.../images/form/date-trigger-rtl.gif | Bin 0 -> 945 bytes
.../images}/form/date-trigger.gif | Bin
.../images}/form/error-tip-corners.gif | Bin
.../images}/form/exclamation.gif | Bin
.../lib/ext-4.2.0.663/images/form/radio.gif | Bin 0 -> 1744 bytes
.../images/form/search-trigger-rtl.gif | Bin 0 -> 2226 bytes
.../images}/form/search-trigger.gif | Bin
.../ext-4.2.0.663/images/form/spinner-rtl.gif | Bin 0 -> 1975 bytes
.../images/form/spinner-small-rtl.gif | Bin 0 -> 747 bytes
.../images}/form/spinner-small.gif | Bin
.../images}/form/spinner.gif | Bin
.../images}/form/text-bg.gif | Bin
.../ext-4.2.0.663/images/form/trigger-rtl.gif | Bin 0 -> 1082 bytes
.../images/form/trigger-square-rtl.gif | Bin 0 -> 1053 bytes
.../images}/form/trigger-square.gif | Bin
.../images}/form/trigger-tpl.gif | Bin
.../images}/form/trigger.gif | Bin
.../images}/grid/arrow-left-white.gif | Bin
.../images}/grid/arrow-right-white.gif | Bin
.../images}/grid/cell-special-bg.gif | Bin
.../images}/grid/cell-special-bg.png | Bin
.../images}/grid/cell-special-selected-bg.gif | Bin
.../images}/grid/cell-special-selected-bg.png | Bin
.../images}/grid/col-move-bottom.gif | Bin
.../images}/grid/col-move-top.gif | Bin
.../images}/grid/columns.gif | Bin
.../images}/grid/dd-insert-arrow-left.gif | Bin
.../images}/grid/dd-insert-arrow-left.png | Bin
.../images}/grid/dd-insert-arrow-right.gif | Bin
.../images}/grid/dd-insert-arrow-right.png | Bin
.../ext-4.2.0.663/images/grid/dirty-rtl.gif | Bin 0 -> 56 bytes
.../images}/grid/dirty.gif | Bin
.../images}/grid/done.gif | Bin
.../images}/grid/drop-no.gif | Bin
.../images}/grid/drop-yes.gif | Bin
.../images}/grid/footer-bg.gif | Bin
.../images}/grid/grid-blue-hd.gif | Bin
.../images}/grid/grid-blue-split.gif | Bin
.../images}/grid/grid-hrow.gif | Bin
.../images}/grid/grid-loading.gif | Bin
.../images}/grid/grid-split.gif | Bin
.../images}/grid/grid-vista-hd.gif | Bin
.../images/grid/grid3-hd-btn-left.gif | Bin 0 -> 474 bytes
.../images}/grid/grid3-hd-btn.gif | Bin
.../images}/grid/grid3-hrow-over.gif | Bin
.../images}/grid/grid3-hrow.gif | Bin
.../images}/grid/grid3-rowheader.gif | Bin
.../images}/grid/group-by.gif | Bin
.../images/grid/group-collapse.gif} | Bin 1260 -> 861 bytes
.../images}/grid/group-expand-sprite.gif | Bin
.../images/grid/group-expand.gif} | Bin 1269 -> 864 bytes
.../images}/grid/hd-pop.gif | Bin
.../ext-4.2.0.663/images/grid/hmenu-asc.gif | Bin 0 -> 929 bytes
.../images}/grid/hmenu-desc.gif | Bin
.../images}/grid/hmenu-lock.gif | Bin
.../images}/grid/hmenu-lock.png | Bin
.../images}/grid/hmenu-unlock.gif | Bin
.../images}/grid/hmenu-unlock.png | Bin
.../images}/grid/invalid_line.gif | Bin
.../images}/grid/loading.gif | Bin
.../images}/grid/mso-hd.gif | Bin
.../images}/grid/nowait.gif | Bin
.../images}/grid/page-first-disabled.gif | Bin
.../images}/grid/page-first.gif | Bin
.../images}/grid/page-last-disabled.gif | Bin
.../images}/grid/page-last.gif | Bin
.../images}/grid/page-next-disabled.gif | Bin
.../images}/grid/page-next.gif | Bin
.../images}/grid/page-prev-disabled.gif | Bin
.../images}/grid/page-prev.gif | Bin
.../images}/grid/pick-button.gif | Bin
.../images}/grid/property-cell-bg.gif | Bin
.../grid/property-cell-selected-bg.gif | Bin
.../images}/grid/refresh-disabled.gif | Bin
.../images}/grid/refresh.gif | Bin
.../images}/grid/row-check-sprite.gif | Bin
.../images}/grid/row-expand-sprite.gif | Bin
.../images}/grid/row-over.gif | Bin
.../images}/grid/row-sel.gif | Bin
.../images}/grid/sort-hd.gif | Bin
.../images}/grid/sort_asc.gif | Bin
.../images}/grid/sort_desc.gif | Bin
.../images}/grid/wait.gif | Bin
.../images}/layout/mini-bottom.gif | Bin
.../images}/layout/mini-left.gif | Bin
.../images}/layout/mini-right.gif | Bin
.../images}/layout/mini-top.gif | Bin
.../images/menu}/checked.gif | Bin
.../images}/menu/group-checked.gif | Bin
.../images}/menu/item-over-disabled.gif | Bin
.../images}/menu/item-over.gif | Bin
.../images/menu/menu-parent-left.gif | Bin 0 -> 165 bytes
.../images}/menu/menu-parent.gif | Bin
.../images}/menu/menu.gif | Bin
.../images/menu}/unchecked.gif | Bin
.../images}/shared/blue-loading.gif | Bin
.../images}/shared/calendar.gif | Bin
.../images}/shared/glass-bg.gif | Bin
.../images}/shared/hd-sprite.gif | Bin
.../images}/shared/icon-error.gif | Bin
.../images}/shared/icon-info.gif | Bin
.../images}/shared/icon-question.gif | Bin
.../images}/shared/icon-warning.gif | Bin
.../images}/shared/large-loading.gif | Bin
.../images}/shared/left-btn.gif | Bin
.../images}/shared/loading-balls.gif | Bin
.../images}/shared/right-btn.gif | Bin
.../images}/shared/shadow-c.png | Bin
.../images}/shared/shadow-lr.png | Bin
.../images}/shared/shadow.png | Bin
.../images}/shared/warning.gif | Bin
.../images}/sizer/e-handle-dark.gif | Bin
.../images}/sizer/e-handle.gif | Bin
.../images}/sizer/ne-handle-dark.gif | Bin
.../images}/sizer/ne-handle.gif | Bin
.../images}/sizer/nw-handle-dark.gif | Bin
.../images}/sizer/nw-handle.gif | Bin
.../images}/sizer/s-handle-dark.gif | Bin
.../images}/sizer/s-handle.gif | Bin
.../images}/sizer/se-handle-dark.gif | Bin
.../images}/sizer/se-handle.gif | Bin
.../images}/sizer/square.gif | Bin
.../images}/sizer/sw-handle-dark.gif | Bin
.../images}/sizer/sw-handle.gif | Bin
.../images}/slider/slider-thumb.gif | Bin
.../images}/slider/slider-thumb.png | Bin
.../images}/slider/slider-v-thumb.gif | Bin
.../images}/slider/slider-v-thumb.png | Bin
.../tab-bar/default-scroll-bottom-left.gif | Bin 0 -> 463 bytes
.../tab-bar/default-scroll-bottom-right.gif | Bin 0 -> 470 bytes
.../tab-bar/default-scroll-left-bottom.gif | Bin 0 -> 499 bytes
.../tab-bar/default-scroll-left-top.gif | Bin 0 -> 497 bytes
.../tab-bar/default-scroll-right-bottom.gif | Bin 0 -> 510 bytes
.../tab-bar/default-scroll-right-top.gif | Bin 0 -> 511 bytes
.../tab-bar/default-scroll-top-left.gif | Bin 0 -> 461 bytes
.../tab-bar/default-scroll-top-right.gif | Bin 0 -> 463 bytes
.../images}/tab/tab-default-close.gif | Bin
.../images/toolbar/more-left.gif | Bin 0 -> 843 bytes
.../images}/toolbar/more.gif | Bin 845 -> 845 bytes
.../images}/toolbar/scroll-left.gif | Bin
.../images}/toolbar/scroll-right.gif | Bin
.../images}/tools/tool-sprite-tpl.gif | Bin
.../images}/tools/tool-sprites.gif | Bin
.../images}/tools/tools-sprites-trans.gif | Bin
.../images/tree/arrows-rtl.gif} | Bin 617 -> 618 bytes
.../lib/ext-4.2.0.663/images/tree/arrows.gif | Bin 0 -> 619 bytes
.../images}/tree/drop-above.gif | Bin
.../images}/tree/drop-add.gif | Bin
.../images}/tree/drop-append.gif | Bin
.../images}/tree/drop-below.gif | Bin
.../images}/tree/drop-between.gif | Bin
.../images}/tree/drop-no.gif | Bin
.../images}/tree/drop-over.gif | Bin
.../images}/tree/drop-under.gif | Bin
.../images}/tree/drop-yes.gif | Bin
.../images/tree/elbow-end-minus-rtl.gif | Bin 0 -> 151 bytes
.../images}/tree/elbow-end-minus.gif | Bin
.../images/tree/elbow-end-plus-rtl.gif | Bin 0 -> 153 bytes
.../images}/tree/elbow-end-plus.gif | Bin
.../images/tree/elbow-end-rtl.gif | Bin 0 -> 70 bytes
.../images}/tree/elbow-end.gif | Bin
.../images/tree/elbow-line-rtl.gif | Bin 0 -> 72 bytes
.../images}/tree/elbow-line.gif | Bin
.../images/tree/elbow-minus-nl-rtl.gif | Bin 0 -> 146 bytes
.../images}/tree/elbow-minus-nl.gif | Bin
.../images/tree/elbow-minus-rtl.gif | Bin 0 -> 152 bytes
.../images}/tree/elbow-minus.gif | Bin
.../images/tree/elbow-plus-nl-rtl.gif | Bin 0 -> 149 bytes
.../images}/tree/elbow-plus-nl.gif | Bin
.../images/tree/elbow-plus-rtl.gif | Bin 0 -> 155 bytes
.../images}/tree/elbow-plus.gif | Bin
.../ext-4.2.0.663/images/tree/elbow-rtl.gif | Bin 0 -> 73 bytes
.../images}/tree/elbow.gif | Bin
.../images/tree/folder-open-rtl.gif | Bin 0 -> 356 bytes
.../images}/tree/folder-open.gif | Bin
.../ext-4.2.0.663/images/tree/folder-rtl.gif | Bin 0 -> 350 bytes
.../images}/tree/folder.gif | Bin
.../ext-4.2.0.663/images/tree/leaf-rtl.gif | Bin 0 -> 346 bytes
.../images}/tree/leaf.gif | Bin
.../images}/tree/loading.gif | Bin
.../gray => ext-4.2.0.663/images}/tree/s.gif | Bin
.../images}/util/splitter/mini-bottom.gif | Bin
.../images}/util/splitter/mini-left.gif | Bin
.../images}/util/splitter/mini-right.gif | Bin
.../images}/util/splitter/mini-top.gif | Bin
.../images}/window/icon-error.gif | Bin
.../images}/window/icon-info.gif | Bin
.../images}/window/icon-question.gif | Bin
.../images}/window/icon-warning.gif | Bin
.../.sencha/package/build-impl.xml | 532 +
.../.sencha/package/codegen.json | 4 +
.../ext-theme-gray/.sencha/package/plugin.xml | 32 +
.../ext-theme-gray/.sencha/package/sencha.cfg | 19 +
.../packages/ext-theme-gray/Readme.md | 2 +
.../packages/ext-theme-gray/build.xml | 41 +
.../packages/ext-theme-gray/build/config.rb | 2 +
.../ext-theme-gray/build/example/custom.js | 32 +
.../ext-theme-gray/build/example/slicer.js | 126 +
.../ext-theme-gray/build/example/theme.html | 44 +
.../build/ext-theme-gray-all-debug.scss | 697 +
.../build/ext-theme-gray-all-rtl-debug.scss | 698 +
.../build/ext-theme-gray-debug.js | 20 +
.../build/ext-theme-gray-dev.js | 20 +
.../ext-theme-gray/build/ext-theme-gray.js | 20 +
.../ext-theme-gray/build/resources/Readme.md | 3 +
.../resources/ext-theme-gray-all-debug.css | 14556 ++
.../ext-theme-gray-all-rtl-debug.css | 15872 ++
.../resources/ext-theme-gray-all-rtl.css | 1 +
.../images/boundlist/trigger-arrow.png | Bin 0 -> 2869 bytes
.../resources/images/box/corners-blue.gif | Bin 0 -> 1010 bytes
.../build/resources/images/box/corners.gif | Bin 0 -> 1005 bytes
.../build/resources/images/box/l-blue.gif | Bin 0 -> 810 bytes
.../build/resources/images/box/l.gif | Bin 0 -> 810 bytes
.../build/resources/images/box/r-blue.gif | Bin 0 -> 810 bytes
.../build/resources/images/box/r.gif | Bin 0 -> 810 bytes
.../build/resources/images/box/tb-blue.gif | Bin 0 -> 851 bytes
.../build/resources/images/box/tb.gif | Bin 0 -> 839 bytes
.../btn-group-default-framed-corners.gif | Bin 0 -> 85 bytes
...n-group-default-framed-notitle-corners.gif | Bin 0 -> 85 bytes
...btn-group-default-framed-notitle-sides.gif | Bin 0 -> 99 bytes
.../btn-group-default-framed-sides.gif | Bin 0 -> 106 bytes
.../images/btn/btn-default-large-bg.gif | Bin 0 -> 219 bytes
.../images/btn/btn-default-large-corners.gif | Bin 0 -> 188 bytes
.../btn/btn-default-large-disabled-bg.gif | Bin 0 -> 220 bytes
.../btn-default-large-disabled-corners.gif | Bin 0 -> 135 bytes
.../btn/btn-default-large-disabled-fbg.gif | Bin 0 -> 216 bytes
.../btn/btn-default-large-disabled-sides.gif | Bin 0 -> 530 bytes
.../images/btn/btn-default-large-fbg.gif | Bin 0 -> 216 bytes
.../images/btn/btn-default-large-focus-bg.gif | Bin 0 -> 220 bytes
.../btn/btn-default-large-focus-corners.gif | Bin 0 -> 185 bytes
.../btn/btn-default-large-focus-fbg.gif | Bin 0 -> 216 bytes
.../btn/btn-default-large-focus-sides.gif | Bin 0 -> 530 bytes
.../images/btn/btn-default-large-over-bg.gif | Bin 0 -> 220 bytes
.../btn/btn-default-large-over-corners.gif | Bin 0 -> 185 bytes
.../images/btn/btn-default-large-over-fbg.gif | Bin 0 -> 216 bytes
.../btn/btn-default-large-over-sides.gif | Bin 0 -> 530 bytes
.../btn/btn-default-large-pressed-bg.gif | Bin 0 -> 218 bytes
.../btn/btn-default-large-pressed-corners.gif | Bin 0 -> 183 bytes
.../btn/btn-default-large-pressed-fbg.gif | Bin 0 -> 214 bytes
.../btn/btn-default-large-pressed-sides.gif | Bin 0 -> 524 bytes
.../images/btn/btn-default-large-sides.gif | Bin 0 -> 512 bytes
.../images/btn/btn-default-medium-bg.gif | Bin 0 -> 212 bytes
.../images/btn/btn-default-medium-corners.gif | Bin 0 -> 188 bytes
.../btn/btn-default-medium-disabled-bg.gif | Bin 0 -> 211 bytes
.../btn-default-medium-disabled-corners.gif | Bin 0 -> 135 bytes
.../btn/btn-default-medium-disabled-fbg.gif | Bin 0 -> 207 bytes
.../btn/btn-default-medium-disabled-sides.gif | Bin 0 -> 495 bytes
.../images/btn/btn-default-medium-fbg.gif | Bin 0 -> 207 bytes
.../btn/btn-default-medium-focus-bg.gif | Bin 0 -> 211 bytes
.../btn/btn-default-medium-focus-corners.gif | Bin 0 -> 185 bytes
.../btn/btn-default-medium-focus-fbg.gif | Bin 0 -> 207 bytes
.../btn/btn-default-medium-focus-sides.gif | Bin 0 -> 495 bytes
.../images/btn/btn-default-medium-over-bg.gif | Bin 0 -> 211 bytes
.../btn/btn-default-medium-over-corners.gif | Bin 0 -> 185 bytes
.../btn/btn-default-medium-over-fbg.gif | Bin 0 -> 207 bytes
.../btn/btn-default-medium-over-sides.gif | Bin 0 -> 495 bytes
.../btn/btn-default-medium-pressed-bg.gif | Bin 0 -> 212 bytes
.../btn-default-medium-pressed-corners.gif | Bin 0 -> 183 bytes
.../btn/btn-default-medium-pressed-fbg.gif | Bin 0 -> 208 bytes
.../btn/btn-default-medium-pressed-sides.gif | Bin 0 -> 507 bytes
.../images/btn/btn-default-medium-sides.gif | Bin 0 -> 499 bytes
.../images/btn/btn-default-small-bg.gif | Bin 0 -> 202 bytes
.../images/btn/btn-default-small-corners.gif | Bin 0 -> 185 bytes
.../btn/btn-default-small-disabled-bg.gif | Bin 0 -> 202 bytes
.../btn-default-small-disabled-corners.gif | Bin 0 -> 135 bytes
.../btn/btn-default-small-disabled-fbg.gif | Bin 0 -> 150 bytes
.../btn/btn-default-small-disabled-sides.gif | Bin 0 -> 467 bytes
.../images/btn/btn-default-small-fbg.gif | Bin 0 -> 150 bytes
.../images/btn/btn-default-small-focus-bg.gif | Bin 0 -> 202 bytes
.../btn/btn-default-small-focus-corners.gif | Bin 0 -> 185 bytes
.../btn/btn-default-small-focus-fbg.gif | Bin 0 -> 150 bytes
.../btn/btn-default-small-focus-sides.gif | Bin 0 -> 467 bytes
.../images/btn/btn-default-small-over-bg.gif | Bin 0 -> 202 bytes
.../btn/btn-default-small-over-corners.gif | Bin 0 -> 185 bytes
.../images/btn/btn-default-small-over-fbg.gif | Bin 0 -> 150 bytes
.../btn/btn-default-small-over-sides.gif | Bin 0 -> 467 bytes
.../btn/btn-default-small-pressed-bg.gif | Bin 0 -> 202 bytes
.../btn/btn-default-small-pressed-corners.gif | Bin 0 -> 184 bytes
.../btn/btn-default-small-pressed-fbg.gif | Bin 0 -> 198 bytes
.../btn/btn-default-small-pressed-sides.gif | Bin 0 -> 468 bytes
.../images/btn/btn-default-small-sides.gif | Bin 0 -> 415 bytes
...default-toolbar-large-disabled-corners.gif | Bin 0 -> 123 bytes
...n-default-toolbar-large-disabled-sides.gif | Bin 0 -> 315 bytes
.../btn-default-toolbar-large-focus-bg.gif | Bin 0 -> 166 bytes
...tn-default-toolbar-large-focus-corners.gif | Bin 0 -> 136 bytes
.../btn-default-toolbar-large-focus-fbg.gif | Bin 0 -> 162 bytes
.../btn-default-toolbar-large-focus-sides.gif | Bin 0 -> 457 bytes
.../btn/btn-default-toolbar-large-over-bg.gif | Bin 0 -> 166 bytes
...btn-default-toolbar-large-over-corners.gif | Bin 0 -> 136 bytes
.../btn-default-toolbar-large-over-fbg.gif | Bin 0 -> 162 bytes
.../btn-default-toolbar-large-over-sides.gif | Bin 0 -> 457 bytes
.../btn-default-toolbar-large-pressed-bg.gif | Bin 0 -> 218 bytes
...-default-toolbar-large-pressed-corners.gif | Bin 0 -> 187 bytes
.../btn-default-toolbar-large-pressed-fbg.gif | Bin 0 -> 211 bytes
...tn-default-toolbar-large-pressed-sides.gif | Bin 0 -> 513 bytes
...efault-toolbar-medium-disabled-corners.gif | Bin 0 -> 124 bytes
...-default-toolbar-medium-disabled-sides.gif | Bin 0 -> 315 bytes
.../btn-default-toolbar-medium-focus-bg.gif | Bin 0 -> 158 bytes
...n-default-toolbar-medium-focus-corners.gif | Bin 0 -> 135 bytes
.../btn-default-toolbar-medium-focus-fbg.gif | Bin 0 -> 158 bytes
...btn-default-toolbar-medium-focus-sides.gif | Bin 0 -> 435 bytes
.../btn-default-toolbar-medium-over-bg.gif | Bin 0 -> 158 bytes
...tn-default-toolbar-medium-over-corners.gif | Bin 0 -> 135 bytes
.../btn-default-toolbar-medium-over-fbg.gif | Bin 0 -> 158 bytes
.../btn-default-toolbar-medium-over-sides.gif | Bin 0 -> 435 bytes
.../btn-default-toolbar-medium-pressed-bg.gif | Bin 0 -> 210 bytes
...default-toolbar-medium-pressed-corners.gif | Bin 0 -> 185 bytes
...btn-default-toolbar-medium-pressed-fbg.gif | Bin 0 -> 159 bytes
...n-default-toolbar-medium-pressed-sides.gif | Bin 0 -> 489 bytes
...default-toolbar-small-disabled-corners.gif | Bin 0 -> 123 bytes
...n-default-toolbar-small-disabled-sides.gif | Bin 0 -> 315 bytes
.../btn-default-toolbar-small-focus-bg.gif | Bin 0 -> 152 bytes
...tn-default-toolbar-small-focus-corners.gif | Bin 0 -> 135 bytes
.../btn-default-toolbar-small-focus-fbg.gif | Bin 0 -> 149 bytes
.../btn-default-toolbar-small-focus-sides.gif | Bin 0 -> 405 bytes
.../btn/btn-default-toolbar-small-over-bg.gif | Bin 0 -> 152 bytes
...btn-default-toolbar-small-over-corners.gif | Bin 0 -> 135 bytes
.../btn-default-toolbar-small-over-fbg.gif | Bin 0 -> 149 bytes
.../btn-default-toolbar-small-over-sides.gif | Bin 0 -> 405 bytes
.../btn-default-toolbar-small-pressed-bg.gif | Bin 0 -> 154 bytes
...-default-toolbar-small-pressed-corners.gif | Bin 0 -> 185 bytes
.../btn-default-toolbar-small-pressed-fbg.gif | Bin 0 -> 150 bytes
...tn-default-toolbar-small-pressed-sides.gif | Bin 0 -> 412 bytes
.../build/resources/images/button/arrow.gif | Bin 0 -> 828 bytes
.../resources/images/button/btn-arrow.gif | Bin 0 -> 870 bytes
.../resources/images/button/btn-sprite.gif | Bin 0 -> 1222 bytes
.../build/resources/images/button/btn.gif | Bin 0 -> 3319 bytes
.../resources/images/button/group-cs.gif | Bin 0 -> 2459 bytes
.../resources/images/button/group-lr.gif | Bin 0 -> 861 bytes
.../resources/images/button/group-tb.gif | Bin 0 -> 846 bytes
.../images/button/s-arrow-b-noline.gif | Bin 0 -> 898 bytes
.../resources/images/button/s-arrow-b.gif | Bin 0 -> 937 bytes
.../resources/images/button/s-arrow-bo.gif | Bin 0 -> 937 bytes
.../images/button/s-arrow-light-rtl.gif | Bin 0 -> 96 bytes
.../resources/images/button/s-arrow-light.gif | Bin 0 -> 116 bytes
.../images/button/s-arrow-noline-rtl.gif | Bin 0 -> 76 bytes
.../images/button/s-arrow-noline.gif | Bin 0 -> 863 bytes
.../resources/images/button/s-arrow-o-rtl.gif | Bin 0 -> 137 bytes
.../resources/images/button/s-arrow-o.gif | Bin 0 -> 139 bytes
.../resources/images/button/s-arrow-rtl.gif | Bin 0 -> 151 bytes
.../build/resources/images/button/s-arrow.gif | Bin 0 -> 937 bytes
.../datepicker/datepicker-footer-bg.gif | Bin 0 -> 113 bytes
.../datepicker/datepicker-header-bg.gif | Bin 0 -> 162 bytes
.../build/resources/images/dd/drop-add.gif | Bin 0 -> 1001 bytes
.../build/resources/images/dd/drop-no.gif | Bin 0 -> 949 bytes
.../build/resources/images/dd/drop-yes.gif | Bin 0 -> 1016 bytes
.../resources/images/editor/tb-sprite.gif | Bin 0 -> 2072 bytes
.../build/resources/images/form/checkbox.gif | Bin 0 -> 2061 bytes
.../images/form/clear-trigger-rtl.gif | Bin 0 -> 1415 bytes
.../resources/images/form/clear-trigger.gif | Bin 0 -> 1425 bytes
.../images/form/date-trigger-rtl.gif | Bin 0 -> 945 bytes
.../resources/images/form/date-trigger.gif | Bin 0 -> 929 bytes
.../images/form/error-tip-corners.gif | Bin 0 -> 4183 bytes
.../resources/images/form/exclamation.gif | Bin 0 -> 996 bytes
.../build/resources/images/form/radio.gif | Bin 0 -> 1744 bytes
.../images/form/search-trigger-rtl.gif | Bin 0 -> 2226 bytes
.../resources/images/form/search-trigger.gif | Bin 0 -> 2220 bytes
.../resources/images/form/spinner-rtl.gif | Bin 0 -> 1975 bytes
.../images/form/spinner-small-rtl.gif | Bin 0 -> 747 bytes
.../resources/images/form/spinner-small.gif | Bin 0 -> 743 bytes
.../build/resources/images/form/spinner.gif | Bin 0 -> 1975 bytes
.../build/resources/images/form/text-bg.gif | Bin 0 -> 819 bytes
.../resources/images/form/trigger-rtl.gif | Bin 0 -> 1082 bytes
.../images/form/trigger-square-rtl.gif | Bin 0 -> 1053 bytes
.../resources/images/form/trigger-square.gif | Bin 0 -> 1071 bytes
.../resources/images/form/trigger-tpl-rtl.gif | Bin 0 -> 845 bytes
.../resources/images/form/trigger-tpl.gif | Bin 0 -> 1487 bytes
.../build/resources/images/form/trigger.gif | Bin 0 -> 1080 bytes
.../grid-row-editor-buttons/null-corners.gif | Bin 0 -> 158 bytes
.../grid-row-editor-buttons/null-sides.gif | Bin 0 -> 100 bytes
.../images/grid/arrow-left-white.gif | Bin 0 -> 825 bytes
.../images/grid/arrow-right-white.gif | Bin 0 -> 825 bytes
.../images/grid/cell-special-bg.gif} | Bin 1598 -> 1636 bytes
.../resources/images/grid/cell-special-bg.png | Bin 0 -> 121 bytes
.../images/grid/cell-special-selected-bg.gif} | Bin 1623 -> 1640 bytes
.../images/grid/cell-special-selected-bg.png | Bin 0 -> 136 bytes
.../resources/images/grid/col-move-bottom.gif | Bin 0 -> 177 bytes
.../resources/images/grid/col-move-top.gif | Bin 0 -> 178 bytes
.../images/grid/column-header-bg.gif | Bin 0 -> 160 bytes
.../images/grid/column-header-over-bg.gif | Bin 0 -> 157 bytes
.../build/resources/images/grid/columns.gif | Bin 0 -> 962 bytes
.../images/grid/dd-insert-arrow-left.gif | Bin 0 -> 299 bytes
.../images/grid/dd-insert-arrow-left.png | Bin 0 -> 345 bytes
.../images/grid/dd-insert-arrow-right.gif | Bin 0 -> 301 bytes
.../images/grid/dd-insert-arrow-right.png | Bin 0 -> 349 bytes
.../build/resources/images/grid/dirty-rtl.gif | Bin 0 -> 56 bytes
.../build/resources/images/grid/dirty.gif | Bin 0 -> 832 bytes
.../build/resources/images/grid/done.gif | Bin 0 -> 133 bytes
.../build/resources/images/grid/drop-no.gif | Bin 0 -> 947 bytes
.../build/resources/images/grid/drop-yes.gif | Bin 0 -> 860 bytes
.../build/resources/images/grid/footer-bg.gif | Bin 0 -> 834 bytes
.../resources/images/grid/grid-blue-hd.gif | Bin 0 -> 829 bytes
.../resources/images/grid/grid-blue-split.gif | Bin 0 -> 817 bytes
.../build/resources/images/grid/grid-hrow.gif | Bin 0 -> 855 bytes
.../resources/images/grid/grid-loading.gif | Bin 0 -> 701 bytes
.../resources/images/grid/grid-split.gif | Bin 0 -> 817 bytes
.../resources/images/grid/grid-vista-hd.gif | Bin 0 -> 829 bytes
.../images/grid/grid3-hd-btn-left.gif | Bin 0 -> 474 bytes
.../resources/images/grid/grid3-hd-btn.gif | Bin 0 -> 482 bytes
.../resources/images/grid/grid3-hrow-over.gif | Bin 0 -> 823 bytes
.../resources/images/grid/grid3-hrow.gif | Bin 0 -> 836 bytes
.../resources/images/grid/grid3-rowheader.gif | Bin 0 -> 43 bytes
.../build/resources/images/grid/group-by.gif | Bin 0 -> 917 bytes
.../resources/images/grid/group-collapse.gif | Bin 0 -> 861 bytes
.../images/grid/group-expand-sprite.gif | Bin 0 -> 196 bytes
.../resources/images/grid/group-expand.gif | Bin 0 -> 864 bytes
.../build/resources/images/grid/hd-pop.gif | Bin 0 -> 839 bytes
.../build/resources/images/grid/hmenu-asc.gif | Bin 0 -> 929 bytes
.../resources/images/grid/hmenu-desc.gif} | Bin 931 -> 930 bytes
.../resources/images/grid/hmenu-lock.gif | Bin 0 -> 955 bytes
.../resources/images/grid/hmenu-lock.png | Bin 0 -> 648 bytes
.../resources/images/grid/hmenu-unlock.gif | Bin 0 -> 971 bytes
.../resources/images/grid/hmenu-unlock.png | Bin 0 -> 697 bytes
.../resources/images/grid/invalid_line.gif | Bin 0 -> 815 bytes
.../build/resources/images/grid/loading.gif | Bin 0 -> 771 bytes
.../build/resources/images/grid/mso-hd.gif | Bin 0 -> 875 bytes
.../build/resources/images/grid/nowait.gif | Bin 0 -> 884 bytes
.../images/grid/page-first-disabled.gif | Bin 0 -> 925 bytes
.../resources/images/grid/page-first.gif | Bin 0 -> 327 bytes
.../images/grid/page-last-disabled.gif | Bin 0 -> 923 bytes
.../build/resources/images/grid/page-last.gif | Bin 0 -> 325 bytes
.../images/grid/page-next-disabled.gif | Bin 0 -> 875 bytes
.../build/resources/images/grid/page-next.gif | Bin 0 -> 183 bytes
.../images/grid/page-prev-disabled.gif | Bin 0 -> 879 bytes
.../build/resources/images/grid/page-prev.gif | Bin 0 -> 186 bytes
.../resources/images/grid/pick-button.gif | Bin 0 -> 1036 bytes
.../images/grid/property-cell-bg.gif | Bin 0 -> 155 bytes
.../images/grid/property-cell-selected-bg.gif | Bin 0 -> 843 bytes
.../images/grid/refresh-disabled.gif | Bin 0 -> 577 bytes
.../build/resources/images/grid/refresh.gif | Bin 0 -> 570 bytes
.../images/grid/row-check-sprite.gif | Bin 0 -> 1083 bytes
.../images/grid/row-expand-sprite.gif | Bin 0 -> 196 bytes
.../build/resources/images/grid/row-over.gif | Bin 0 -> 823 bytes
.../build/resources/images/grid/row-sel.gif | Bin 0 -> 823 bytes
.../build/resources/images/grid/sort-hd.gif | Bin 0 -> 2731 bytes
.../build/resources/images/grid/sort_asc.gif | Bin 0 -> 59 bytes
.../build/resources/images/grid/sort_desc.gif | Bin 0 -> 59 bytes
.../build/resources/images/grid/wait.gif | Bin 0 -> 1100 bytes
.../resources/images/layout/mini-bottom.gif | Bin 0 -> 856 bytes
.../resources/images/layout/mini-left.gif | Bin 0 -> 871 bytes
.../resources/images/layout/mini-right.gif | Bin 0 -> 872 bytes
.../resources/images/layout/mini-top.gif | Bin 0 -> 856 bytes
.../build/resources/images}/menu/checked.gif | Bin
.../resources/images/menu/group-checked.gif | Bin 0 -> 295 bytes
.../images/menu/item-over-disabled.gif | Bin 0 -> 49 bytes
.../build/resources/images/menu/item-over.gif | Bin 0 -> 850 bytes
.../images/menu/menu-item-active-bg.gif | Bin 0 -> 160 bytes
.../images/menu/menu-parent-left.gif | Bin 0 -> 165 bytes
.../resources/images/menu/menu-parent.gif | Bin 0 -> 165 bytes
.../build/resources/images/menu/menu.gif | Bin 0 -> 834 bytes
.../resources/images/menu/scroll-bottom.gif | Bin 0 -> 856 bytes
.../resources/images/menu/scroll-top.gif | Bin 0 -> 856 bytes
.../resources/images}/menu/unchecked.gif | Bin
.../panel-header-default-bottom-bg.gif | Bin 0 -> 206 bytes
.../panel-header-default-framed-bottom-bg.gif | Bin 0 -> 206 bytes
...l-header-default-framed-bottom-corners.gif | Bin 0 -> 209 bytes
...panel-header-default-framed-bottom-fbg.gif | Bin 0 -> 200 bytes
...nel-header-default-framed-bottom-sides.gif | Bin 0 -> 569 bytes
...der-default-framed-collapsed-bottom-bg.gif | Bin 0 -> 206 bytes
...efault-framed-collapsed-bottom-corners.gif | Bin 0 -> 223 bytes
...er-default-framed-collapsed-bottom-fbg.gif | Bin 0 -> 200 bytes
...-default-framed-collapsed-bottom-sides.gif | Bin 0 -> 569 bytes
...r-default-framed-collapsed-left-bg-rtl.gif | Bin 0 -> 203 bytes
...eader-default-framed-collapsed-left-bg.gif | Bin 0 -> 203 bytes
...ault-framed-collapsed-left-corners-rtl.gif | Bin 0 -> 244 bytes
...-default-framed-collapsed-left-corners.gif | Bin 0 -> 242 bytes
...-default-framed-collapsed-left-fbg-rtl.gif | Bin 0 -> 198 bytes
...ader-default-framed-collapsed-left-fbg.gif | Bin 0 -> 198 bytes
...efault-framed-collapsed-left-sides-rtl.gif | Bin 0 -> 396 bytes
...er-default-framed-collapsed-left-sides.gif | Bin 0 -> 355 bytes
...-default-framed-collapsed-right-bg-rtl.gif | Bin 0 -> 203 bytes
...ader-default-framed-collapsed-right-bg.gif | Bin 0 -> 203 bytes
...ult-framed-collapsed-right-corners-rtl.gif | Bin 0 -> 244 bytes
...default-framed-collapsed-right-corners.gif | Bin 0 -> 248 bytes
...default-framed-collapsed-right-fbg-rtl.gif | Bin 0 -> 198 bytes
...der-default-framed-collapsed-right-fbg.gif | Bin 0 -> 198 bytes
...fault-framed-collapsed-right-sides-rtl.gif | Bin 0 -> 399 bytes
...r-default-framed-collapsed-right-sides.gif | Bin 0 -> 396 bytes
...header-default-framed-collapsed-top-bg.gif | Bin 0 -> 205 bytes
...r-default-framed-collapsed-top-corners.gif | Bin 0 -> 220 bytes
...eader-default-framed-collapsed-top-fbg.gif | Bin 0 -> 200 bytes
...der-default-framed-collapsed-top-sides.gif | Bin 0 -> 573 bytes
...anel-header-default-framed-left-bg-rtl.gif | Bin 0 -> 203 bytes
.../panel-header-default-framed-left-bg.gif | Bin 0 -> 203 bytes
...header-default-framed-left-corners-rtl.gif | Bin 0 -> 227 bytes
...nel-header-default-framed-left-corners.gif | Bin 0 -> 230 bytes
...nel-header-default-framed-left-fbg-rtl.gif | Bin 0 -> 198 bytes
.../panel-header-default-framed-left-fbg.gif | Bin 0 -> 198 bytes
...l-header-default-framed-left-sides-rtl.gif | Bin 0 -> 396 bytes
...panel-header-default-framed-left-sides.gif | Bin 0 -> 355 bytes
...nel-header-default-framed-right-bg-rtl.gif | Bin 0 -> 203 bytes
.../panel-header-default-framed-right-bg.gif | Bin 0 -> 203 bytes
...eader-default-framed-right-corners-rtl.gif | Bin 0 -> 225 bytes
...el-header-default-framed-right-corners.gif | Bin 0 -> 220 bytes
...el-header-default-framed-right-fbg-rtl.gif | Bin 0 -> 198 bytes
.../panel-header-default-framed-right-fbg.gif | Bin 0 -> 198 bytes
...-header-default-framed-right-sides-rtl.gif | Bin 0 -> 399 bytes
...anel-header-default-framed-right-sides.gif | Bin 0 -> 396 bytes
.../panel-header-default-framed-top-bg.gif | Bin 0 -> 206 bytes
...anel-header-default-framed-top-corners.gif | Bin 0 -> 207 bytes
.../panel-header-default-framed-top-fbg.gif | Bin 0 -> 200 bytes
.../panel-header-default-framed-top-sides.gif | Bin 0 -> 573 bytes
.../panel-header-default-left-bg-rtl.gif | Bin 0 -> 203 bytes
.../panel-header-default-left-bg.gif | Bin 0 -> 203 bytes
.../panel-header-default-right-bg-rtl.gif | Bin 0 -> 161 bytes
.../panel-header-default-right-bg.gif | Bin 0 -> 161 bytes
.../panel-header-default-top-bg.gif | Bin 0 -> 161 bytes
.../panel/panel-default-framed-corners.gif | Bin 0 -> 158 bytes
.../panel/panel-default-framed-sides.gif | Bin 0 -> 88 bytes
.../images/progress/progress-default-bg.gif | Bin 0 -> 154 bytes
.../resources/images/shared/blue-loading.gif | Bin 0 -> 3236 bytes
.../resources/images/shared/calendar.gif | Bin 0 -> 979 bytes
.../resources/images/shared/glass-bg.gif | Bin 0 -> 873 bytes
.../resources/images/shared/hd-sprite.gif | Bin 0 -> 1099 bytes
.../resources/images/shared/icon-error.gif | Bin 0 -> 1669 bytes
.../resources/images/shared/icon-info.gif | Bin 0 -> 1586 bytes
.../resources/images/shared/icon-question.gif | Bin 0 -> 1607 bytes
.../resources/images/shared/icon-warning.gif | Bin 0 -> 1483 bytes
.../resources/images/shared/large-loading.gif | Bin 0 -> 3236 bytes
.../resources/images/shared/left-btn.gif | Bin 0 -> 106 bytes
.../resources/images/shared/loading-balls.gif | Bin 0 -> 2118 bytes
.../resources/images/shared/right-btn.gif | Bin 0 -> 107 bytes
.../resources/images/shared/shadow-c.png | Bin 0 -> 118 bytes
.../resources/images/shared/shadow-lr.png | Bin 0 -> 135 bytes
.../build/resources/images/shared/shadow.png | Bin 0 -> 311 bytes
.../build/resources/images/shared/warning.gif | Bin 0 -> 960 bytes
.../resources/images/sizer/e-handle-dark.gif | Bin 0 -> 1062 bytes
.../build/resources/images/sizer/e-handle.gif | Bin 0 -> 753 bytes
.../resources/images/sizer/ne-handle-dark.gif | Bin 0 -> 839 bytes
.../resources/images/sizer/ne-handle.gif | Bin 0 -> 128 bytes
.../resources/images/sizer/nw-handle-dark.gif | Bin 0 -> 839 bytes
.../resources/images/sizer/nw-handle.gif | Bin 0 -> 114 bytes
.../resources/images/sizer/s-handle-dark.gif | Bin 0 -> 1060 bytes
.../build/resources/images/sizer/s-handle.gif | Bin 0 -> 494 bytes
.../resources/images/sizer/se-handle-dark.gif | Bin 0 -> 838 bytes
.../resources/images/sizer/se-handle.gif | Bin 0 -> 114 bytes
.../build/resources/images/sizer/square.gif | Bin 0 -> 123 bytes
.../resources/images/sizer/sw-handle-dark.gif | Bin 0 -> 839 bytes
.../resources/images/sizer/sw-handle.gif | Bin 0 -> 116 bytes
.../resources/images/slider/slider-bg.gif | Bin 0 -> 139 bytes
.../resources/images/slider/slider-bg.png | Bin 0 -> 1068 bytes
.../resources/images/slider/slider-thumb.gif | Bin 0 -> 542 bytes
.../resources/images/slider/slider-thumb.png | Bin 0 -> 675 bytes
.../resources/images/slider/slider-v-bg.gif | Bin 0 -> 145 bytes
.../resources/images/slider/slider-v-bg.png | Bin 0 -> 220 bytes
.../images/slider/slider-v-thumb.gif | Bin 0 -> 533 bytes
.../images/slider/slider-v-thumb.png | Bin 0 -> 632 bytes
.../tab-bar/default-scroll-bottom-left.gif | Bin 0 -> 463 bytes
.../tab-bar/default-scroll-bottom-right.gif | Bin 0 -> 470 bytes
.../tab-bar/default-scroll-left-bottom.gif | Bin 0 -> 499 bytes
.../tab-bar/default-scroll-left-top.gif | Bin 0 -> 497 bytes
.../tab-bar/default-scroll-right-bottom.gif | Bin 0 -> 510 bytes
.../tab-bar/default-scroll-right-top.gif | Bin 0 -> 511 bytes
.../tab-bar/default-scroll-top-left.gif | Bin 0 -> 461 bytes
.../tab-bar/default-scroll-top-right.gif | Bin 0 -> 463 bytes
.../images/tab-bar/tab-bar-default-top-bg.gif | Bin 0 -> 161 bytes
.../tab/tab-default-bottom-active-bg.gif | Bin 0 -> 155 bytes
.../tab/tab-default-bottom-active-corners.gif | Bin 0 -> 212 bytes
.../tab/tab-default-bottom-active-fbg.gif | Bin 0 -> 100 bytes
.../tab/tab-default-bottom-active-sides.gif | Bin 0 -> 151 bytes
.../images/tab/tab-default-bottom-bg.gif | Bin 0 -> 153 bytes
.../images/tab/tab-default-bottom-corners.gif | Bin 0 -> 215 bytes
.../tab/tab-default-bottom-disabled-bg.gif | Bin 0 -> 104 bytes
.../tab-default-bottom-disabled-corners.gif | Bin 0 -> 208 bytes
.../tab/tab-default-bottom-disabled-fbg.gif | Bin 0 -> 74 bytes
.../tab/tab-default-bottom-disabled-sides.gif | Bin 0 -> 116 bytes
.../images/tab/tab-default-bottom-fbg.gif | Bin 0 -> 145 bytes
.../images/tab/tab-default-bottom-over-bg.gif | Bin 0 -> 155 bytes
.../tab/tab-default-bottom-over-corners.gif | Bin 0 -> 210 bytes
.../tab/tab-default-bottom-over-fbg.gif | Bin 0 -> 100 bytes
.../tab/tab-default-bottom-over-sides.gif | Bin 0 -> 144 bytes
.../images/tab/tab-default-bottom-sides.gif | Bin 0 -> 494 bytes
.../images/tab/tab-default-close.gif | Bin 0 -> 896 bytes
.../images/tab/tab-default-top-active-bg.gif | Bin 0 -> 155 bytes
.../tab/tab-default-top-active-corners.gif | Bin 0 -> 211 bytes
.../images/tab/tab-default-top-active-fbg.gif | Bin 0 -> 100 bytes
.../tab/tab-default-top-active-sides.gif | Bin 0 -> 151 bytes
.../images/tab/tab-default-top-bg.gif | Bin 0 -> 153 bytes
.../images/tab/tab-default-top-corners.gif | Bin 0 -> 216 bytes
.../tab/tab-default-top-disabled-bg.gif | Bin 0 -> 104 bytes
.../tab/tab-default-top-disabled-corners.gif | Bin 0 -> 209 bytes
.../tab/tab-default-top-disabled-fbg.gif | Bin 0 -> 74 bytes
.../tab/tab-default-top-disabled-sides.gif | Bin 0 -> 116 bytes
.../images/tab/tab-default-top-fbg.gif | Bin 0 -> 145 bytes
.../images/tab/tab-default-top-over-bg.gif | Bin 0 -> 155 bytes
.../tab/tab-default-top-over-corners.gif | Bin 0 -> 210 bytes
.../images/tab/tab-default-top-over-fbg.gif | Bin 0 -> 100 bytes
.../images/tab/tab-default-top-over-sides.gif | Bin 0 -> 144 bytes
.../images/tab/tab-default-top-sides.gif | Bin 0 -> 494 bytes
.../images/tip/tip-default-corners.gif | Bin 0 -> 133 bytes
.../images/tip/tip-default-sides.gif | Bin 0 -> 99 bytes
.../images/tip/tip-form-invalid-corners.gif | Bin 0 -> 347 bytes
.../images/tip/tip-form-invalid-sides.gif | Bin 0 -> 123 bytes
.../resources/images/toolbar/more-left.gif | Bin 0 -> 843 bytes
.../build/resources/images/toolbar/more.gif | Bin 0 -> 845 bytes
.../resources/images/toolbar/scroll-left.gif | Bin 0 -> 1861 bytes
.../resources/images/toolbar/scroll-right.gif | Bin 0 -> 1865 bytes
.../images/toolbar/toolbar-default-bg.gif | Bin 0 -> 110 bytes
.../images/tools/tool-sprite-tpl.gif | Bin 0 -> 971 bytes
.../resources/images/tools/tool-sprites.gif | Bin 0 -> 5835 bytes
.../images/tools/tools-sprites-trans.gif | Bin 0 -> 1981 bytes
.../resources/images/tree/arrows-rtl.gif | Bin 0 -> 618 bytes
.../build/resources/images/tree/arrows.gif | Bin 0 -> 619 bytes
.../resources/images/tree/drop-above.gif | Bin 0 -> 911 bytes
.../build/resources/images/tree/drop-add.gif | Bin 0 -> 1001 bytes
.../resources/images/tree/drop-append.gif | Bin 0 -> 1001 bytes
.../resources/images/tree/drop-below.gif | Bin 0 -> 911 bytes
.../resources/images/tree/drop-between.gif | Bin 0 -> 907 bytes
.../build/resources/images/tree/drop-no.gif | Bin 0 -> 949 bytes
.../build/resources/images/tree/drop-over.gif | Bin 0 -> 911 bytes
.../resources/images/tree/drop-under.gif | Bin 0 -> 911 bytes
.../build/resources/images/tree/drop-yes.gif | Bin 0 -> 1016 bytes
.../images/tree/elbow-end-minus-rtl.gif | Bin 0 -> 151 bytes
.../resources/images/tree/elbow-end-minus.gif | Bin 0 -> 157 bytes
.../images/tree/elbow-end-plus-rtl.gif | Bin 0 -> 153 bytes
.../resources/images/tree/elbow-end-plus.gif | Bin 0 -> 159 bytes
.../resources/images/tree/elbow-end-rtl.gif | Bin 0 -> 70 bytes
.../build/resources/images/tree/elbow-end.gif | Bin 0 -> 70 bytes
.../resources/images/tree/elbow-line-rtl.gif | Bin 0 -> 72 bytes
.../resources/images/tree/elbow-line.gif | Bin 0 -> 72 bytes
.../images/tree/elbow-minus-nl-rtl.gif | Bin 0 -> 146 bytes
.../resources/images/tree/elbow-minus-nl.gif} | Bin
.../resources/images/tree/elbow-minus-rtl.gif | Bin 0 -> 152 bytes
.../resources/images/tree/elbow-minus.gif | Bin 0 -> 159 bytes
.../images/tree/elbow-plus-nl-rtl.gif | Bin 0 -> 149 bytes
.../resources/images/tree/elbow-plus-nl.gif} | Bin
.../resources/images/tree/elbow-plus-rtl.gif | Bin 0 -> 155 bytes
.../resources/images/tree/elbow-plus.gif | Bin 0 -> 160 bytes
.../build/resources/images/tree/elbow-rtl.gif | Bin 0 -> 73 bytes
.../build/resources/images/tree/elbow.gif | Bin 0 -> 73 bytes
.../resources/images/tree/folder-open-rtl.gif | Bin 0 -> 356 bytes
.../resources/images/tree/folder-open.gif | Bin 0 -> 356 bytes
.../resources/images/tree/folder-rtl.gif | Bin 0 -> 350 bytes
.../build/resources/images/tree/folder.gif | Bin 0 -> 351 bytes
.../build/resources/images/tree/leaf-rtl.gif | Bin 0 -> 346 bytes
.../build/resources/images/tree/leaf.gif | Bin 0 -> 945 bytes
.../build/resources/images/tree/loading.gif | Bin 0 -> 771 bytes
.../build/resources/images/tree/s.gif | Bin 0 -> 43 bytes
.../images/util/splitter/mini-bottom.gif | Bin 0 -> 856 bytes
.../images/util/splitter/mini-left.gif | Bin 0 -> 871 bytes
.../images/util/splitter/mini-right.gif | Bin 0 -> 872 bytes
.../images/util/splitter/mini-top.gif | Bin 0 -> 856 bytes
.../window-header-default-bottom-corners.gif | Bin 0 -> 224 bytes
.../window-header-default-bottom-sides.gif | Bin 0 -> 87 bytes
...eader-default-collapsed-bottom-corners.gif | Bin 0 -> 238 bytes
...-header-default-collapsed-bottom-sides.gif | Bin 0 -> 99 bytes
...der-default-collapsed-left-corners-rtl.gif | Bin 0 -> 241 bytes
...-header-default-collapsed-left-corners.gif | Bin 0 -> 239 bytes
...ow-header-default-collapsed-left-sides.gif | Bin 0 -> 247 bytes
...er-default-collapsed-right-corners-rtl.gif | Bin 0 -> 238 bytes
...header-default-collapsed-right-corners.gif | Bin 0 -> 235 bytes
...w-header-default-collapsed-right-sides.gif | Bin 0 -> 247 bytes
...w-header-default-collapsed-top-corners.gif | Bin 0 -> 241 bytes
...dow-header-default-collapsed-top-sides.gif | Bin 0 -> 99 bytes
...window-header-default-left-corners-rtl.gif | Bin 0 -> 207 bytes
.../window-header-default-left-corners.gif | Bin 0 -> 208 bytes
.../window-header-default-left-sides.gif | Bin 0 -> 380 bytes
...indow-header-default-right-corners-rtl.gif | Bin 0 -> 211 bytes
.../window-header-default-right-corners.gif | Bin 0 -> 208 bytes
.../window-header-default-right-sides.gif | Bin 0 -> 551 bytes
.../window-header-default-top-corners.gif | Bin 0 -> 219 bytes
.../window-header-default-top-sides.gif | Bin 0 -> 87 bytes
.../resources/images/window/icon-error.gif | Bin 0 -> 1669 bytes
.../resources/images/window/icon-info.gif | Bin 0 -> 1586 bytes
.../resources/images/window/icon-question.gif | Bin 0 -> 1607 bytes
.../resources/images/window/icon-warning.gif | Bin 0 -> 1483 bytes
.../images/window/window-default-corners.gif | Bin 0 -> 239 bytes
.../images/window/window-default-sides.gif | Bin 0 -> 252 bytes
.../ext-theme-gray/build/theme-capture.json | 2045 +
.../ext-theme-gray/build/theme-capture.png | Bin 0 -> 141077 bytes
.../packages/ext-theme-gray/docs/package.png | Bin 0 -> 77363 bytes
.../docs/screenshots/screenshot-1.png | Bin 0 -> 77363 bytes
.../ext-theme-gray/licenses/Readme.md | 3 +
.../ext-theme-gray/overrides/Readme.md | 3 +
.../packages/ext-theme-gray/package.json | 11 +
.../ext-theme-gray/resources/Readme.md | 3 +
.../packages/ext-theme-gray/sass/Readme.md | 7 +
.../sass/all/ext-all-gray-rtl.scss | 2 +
.../ext-theme-gray/sass/all/ext-all-gray.scss | 3 +
.../packages/ext-theme-gray/sass/config.rb | 4 +
.../ext-theme-gray/sass/etc/Readme.md | 4 +
.../packages/ext-theme-gray/sass/etc/all.scss | 1 +
.../ext-theme-gray/sass/example/custom.js | 32 +
.../ext-theme-gray/sass/example/slicer.js | 126 +
.../ext-theme-gray/sass/example/theme.html | 44 +
.../ext-theme-gray/sass/src/Readme.md | 4 +
.../packages/ext-theme-gray/sass/src/all.scss | 1 +
.../ext-theme-gray/sass/var/Component.scss | 1 +
.../ext-theme-gray/sass/var/ProgressBar.scss | 3 +
.../ext-theme-gray/sass/var/Readme.md | 3 +
.../packages/ext-theme-gray/sass/var/all.scss | 16 +
.../sass/var/button/Button.scss | 32 +
.../sass/var/container/ButtonGroup.scss | 5 +
.../sass/var/form/FieldSet.scss | 1 +
.../sass/var/grid/column/Column.scss | 2 +
.../sass/var/layout/container/Accordion.scss | 1 +
.../ext-theme-gray/sass/var/menu/Menu.scss | 2 +
.../ext-theme-gray/sass/var/panel/Panel.scss | 4 +
.../ext-theme-gray/sass/var/picker/Date.scss | 5 +
.../ext-theme-gray/sass/var/tab/Panel.scss | 12 +
.../ext-theme-gray/sass/var/tip/Tip.scss | 1 +
.../sass/var/toolbar/Toolbar.scss | 3 +
.../sass/var/view/BoundList.scss | 1 +
.../sass/var/window/Window.scss | 2 +
.../packages/ext-theme-gray/src/Readme.md | 4 +
944 files changed, 197979 insertions(+), 11281 deletions(-)
delete mode 100644 fhem/www/frontend/www/frontend/app/view/LineChartView.js
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/ext-all-gray-debug.css
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/ext-all.js
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn-group/btn-group-default-framed-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn-group/btn-group-default-framed-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-disabled-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-disabled-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-disabled-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-focus-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-focus-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-focus-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-over-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-over-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-over-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-pressed-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-pressed-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-pressed-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-large-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-disabled-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-disabled-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-disabled-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-focus-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-focus-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-focus-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-over-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-over-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-over-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-pressed-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-pressed-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-pressed-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-medium-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-disabled-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-disabled-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-disabled-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-focus-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-focus-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-focus-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-over-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-over-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-over-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-pressed-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-pressed-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-pressed-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-small-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-disabled-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-disabled-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-focus-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-focus-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-focus-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-over-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-over-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-over-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-pressed-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-pressed-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-pressed-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-large-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-disabled-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-disabled-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-focus-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-focus-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-focus-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-over-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-over-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-over-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-pressed-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-pressed-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-pressed-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-medium-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-disabled-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-disabled-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-focus-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-focus-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-focus-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-over-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-over-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-over-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-pressed-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-pressed-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-pressed-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/btn/btn-default-toolbar-small-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/datepicker/datepicker-footer-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/datepicker/datepicker-footer-bg.png
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/datepicker/datepicker-header-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/datepicker/datepicker-header-bg.png
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/form-invalid-tip/form-invalid-tip-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/form-invalid-tip/form-invalid-tip-default-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/form-invalid-tip/form-invalid-tip-default-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/form-invalid-tip/form-invalid-tip-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/form/radio.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/grid/column-header-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/grid/column-header-bg.png
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/grid/column-header-over-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/grid/column-header-over-bg.png
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/grid/group-collapse.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/grid/group-expand.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/menu/menu-item-active-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/menu/menu-item-active-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/menu/menu-item-active-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-bottom-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-bottom-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-bottom-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-bottom-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-collapsed-left-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-collapsed-left-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-collapsed-left-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-collapsed-right-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-collapsed-right-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-collapsed-right-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-collapsed-top-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-collapsed-top-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-collapsed-top-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-left-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-left-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-left-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-right-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-right-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-right-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-top-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-top-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-framed-top-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-left-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-right-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel-header/panel-header-default-top-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel/panel-default-framed-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/panel/panel-default-framed-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/progress/progress-default-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/slider/slider-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/slider/slider-bg.png
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/slider/slider-v-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/slider/slider-v-bg.png
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tab-bar/tab-bar-default-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-bottom-active-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-bottom-active-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-bottom-active-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-bottom-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-bottom-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-bottom-disabled-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-bottom-disabled-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-bottom-disabled-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-bottom-over-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-bottom-over-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-bottom-over-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-bottom-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-top-active-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-top-active-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-top-active-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-top-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-top-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-top-disabled-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-top-disabled-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-top-disabled-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-top-over-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-top-over-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-top-over-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tab/tab-default-top-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tip/tip-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/tip/tip-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/toolbar/toolbar-default-bg.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-bottom-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-bottom-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-collapsed-bottom-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-collapsed-bottom-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-collapsed-left-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-collapsed-left-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-collapsed-right-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-collapsed-right-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-collapsed-top-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-collapsed-top-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-left-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-left-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-right-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-right-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-top-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/window-header/window-header-default-top-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/window/window-default-corners.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/images/gray/window/window-default-sides.gif
delete mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.1.1a/license.txt
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/ext-all-debug.js
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/ext-all.js
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/ext-dev.js
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/ext-theme-gray-all.css
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/boundlist/trigger-arrow.png (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/box/corners-blue.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/box/corners.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/box/l-blue.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/box/l.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/box/r-blue.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/box/r.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/box/tb-blue.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/box/tb.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/button/arrow.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/button/btn-arrow.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/button/btn-sprite.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/button/btn.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/button/group-cs.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/button/group-lr.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/button/group-tb.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/button/s-arrow-b-noline.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/button/s-arrow-b.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/button/s-arrow-bo.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/button/s-arrow-light-rtl.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/button/s-arrow-light.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/button/s-arrow-noline-rtl.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/button/s-arrow-noline.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/button/s-arrow-o-rtl.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/button/s-arrow-o.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/button/s-arrow-rtl.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/button/s-arrow.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/dd/drop-add.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/dd/drop-no.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/dd/drop-yes.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/editor/tb-sprite.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/form/checkbox.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/form/clear-trigger-rtl.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/form/clear-trigger.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/form/date-trigger-rtl.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/form/date-trigger.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/form/error-tip-corners.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/form/exclamation.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/form/radio.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/form/search-trigger-rtl.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/form/search-trigger.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/form/spinner-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/form/spinner-small-rtl.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/form/spinner-small.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/form/spinner.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/form/text-bg.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/form/trigger-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/form/trigger-square-rtl.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/form/trigger-square.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/form/trigger-tpl.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/form/trigger.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/arrow-left-white.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/arrow-right-white.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/cell-special-bg.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/cell-special-bg.png (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/cell-special-selected-bg.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/cell-special-selected-bg.png (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/col-move-bottom.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/col-move-top.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/columns.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/dd-insert-arrow-left.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/dd-insert-arrow-left.png (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/dd-insert-arrow-right.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/dd-insert-arrow-right.png (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/grid/dirty-rtl.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/dirty.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/done.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/drop-no.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/drop-yes.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/footer-bg.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/grid-blue-hd.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/grid-blue-split.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/grid-hrow.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/grid-loading.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/grid-split.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/grid-vista-hd.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/grid/grid3-hd-btn-left.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/grid3-hd-btn.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/grid3-hrow-over.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/grid3-hrow.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/grid3-rowheader.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/group-by.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray/tab-bar/scroll-left.gif => ext-4.2.0.663/images/grid/group-collapse.gif} (50%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/group-expand-sprite.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray/tab-bar/scroll-right.gif => ext-4.2.0.663/images/grid/group-expand.gif} (50%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/hd-pop.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/grid/hmenu-asc.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/hmenu-desc.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/hmenu-lock.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/hmenu-lock.png (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/hmenu-unlock.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/hmenu-unlock.png (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/invalid_line.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/loading.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/mso-hd.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/nowait.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/page-first-disabled.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/page-first.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/page-last-disabled.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/page-last.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/page-next-disabled.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/page-next.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/page-prev-disabled.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/page-prev.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/pick-button.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/property-cell-bg.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/property-cell-selected-bg.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/refresh-disabled.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/refresh.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/row-check-sprite.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/row-expand-sprite.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/row-over.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/row-sel.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/sort-hd.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/sort_asc.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/sort_desc.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/grid/wait.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/layout/mini-bottom.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/layout/mini-left.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/layout/mini-right.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/layout/mini-top.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray/grid => ext-4.2.0.663/images/menu}/checked.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/menu/group-checked.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/menu/item-over-disabled.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/menu/item-over.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/menu/menu-parent-left.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/menu/menu-parent.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/menu/menu.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray/grid => ext-4.2.0.663/images/menu}/unchecked.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/shared/blue-loading.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/shared/calendar.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/shared/glass-bg.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/shared/hd-sprite.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/shared/icon-error.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/shared/icon-info.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/shared/icon-question.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/shared/icon-warning.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/shared/large-loading.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/shared/left-btn.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/shared/loading-balls.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/shared/right-btn.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/shared/shadow-c.png (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/shared/shadow-lr.png (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/shared/shadow.png (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/shared/warning.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/sizer/e-handle-dark.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/sizer/e-handle.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/sizer/ne-handle-dark.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/sizer/ne-handle.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/sizer/nw-handle-dark.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/sizer/nw-handle.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/sizer/s-handle-dark.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/sizer/s-handle.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/sizer/se-handle-dark.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/sizer/se-handle.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/sizer/square.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/sizer/sw-handle-dark.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/sizer/sw-handle.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/slider/slider-thumb.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/slider/slider-thumb.png (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/slider/slider-v-thumb.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/slider/slider-v-thumb.png (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/tab-bar/default-scroll-bottom-left.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/tab-bar/default-scroll-bottom-right.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/tab-bar/default-scroll-left-bottom.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/tab-bar/default-scroll-left-top.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/tab-bar/default-scroll-right-bottom.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/tab-bar/default-scroll-right-top.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/tab-bar/default-scroll-top-left.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/tab-bar/default-scroll-top-right.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tab/tab-default-close.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/toolbar/more-left.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/toolbar/more.gif (84%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/toolbar/scroll-left.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/toolbar/scroll-right.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tools/tool-sprite-tpl.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tools/tool-sprites.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tools/tools-sprites-trans.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray/tree/arrows.gif => ext-4.2.0.663/images/tree/arrows-rtl.gif} (51%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/tree/arrows.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tree/drop-above.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tree/drop-add.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tree/drop-append.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tree/drop-below.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tree/drop-between.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tree/drop-no.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tree/drop-over.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tree/drop-under.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tree/drop-yes.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/tree/elbow-end-minus-rtl.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tree/elbow-end-minus.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/tree/elbow-end-plus-rtl.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tree/elbow-end-plus.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/tree/elbow-end-rtl.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tree/elbow-end.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/tree/elbow-line-rtl.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tree/elbow-line.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/tree/elbow-minus-nl-rtl.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tree/elbow-minus-nl.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/tree/elbow-minus-rtl.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tree/elbow-minus.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/tree/elbow-plus-nl-rtl.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tree/elbow-plus-nl.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/tree/elbow-plus-rtl.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tree/elbow-plus.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/tree/elbow-rtl.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tree/elbow.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/tree/folder-open-rtl.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tree/folder-open.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/tree/folder-rtl.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tree/folder.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/images/tree/leaf-rtl.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tree/leaf.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tree/loading.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/tree/s.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/util/splitter/mini-bottom.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/util/splitter/mini-left.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/util/splitter/mini-right.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/util/splitter/mini-top.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/window/icon-error.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/window/icon-info.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/window/icon-question.gif (100%)
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/images}/window/icon-warning.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/.sencha/package/build-impl.xml
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/.sencha/package/codegen.json
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/.sencha/package/plugin.xml
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/.sencha/package/sencha.cfg
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/Readme.md
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build.xml
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/config.rb
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/example/custom.js
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/example/slicer.js
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/example/theme.html
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/ext-theme-gray-all-debug.scss
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/ext-theme-gray-all-rtl-debug.scss
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/ext-theme-gray-debug.js
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/ext-theme-gray-dev.js
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/ext-theme-gray.js
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/Readme.md
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/ext-theme-gray-all-debug.css
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/ext-theme-gray-all-rtl-debug.css
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/ext-theme-gray-all-rtl.css
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/boundlist/trigger-arrow.png
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/box/corners-blue.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/box/corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/box/l-blue.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/box/l.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/box/r-blue.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/box/r.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/box/tb-blue.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/box/tb.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn-group/btn-group-default-framed-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn-group/btn-group-default-framed-notitle-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn-group/btn-group-default-framed-notitle-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn-group/btn-group-default-framed-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-large-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-large-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-large-disabled-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-large-disabled-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-large-disabled-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-large-disabled-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-large-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-large-focus-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-large-focus-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-large-focus-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-large-focus-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-large-over-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-large-over-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-large-over-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-large-over-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-large-pressed-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-large-pressed-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-large-pressed-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-large-pressed-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-large-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-medium-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-medium-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-medium-disabled-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-medium-disabled-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-medium-disabled-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-medium-disabled-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-medium-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-medium-focus-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-medium-focus-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-medium-focus-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-medium-focus-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-medium-over-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-medium-over-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-medium-over-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-medium-over-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-medium-pressed-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-medium-pressed-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-medium-pressed-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-medium-pressed-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-medium-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-small-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-small-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-small-disabled-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-small-disabled-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-small-disabled-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-small-disabled-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-small-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-small-focus-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-small-focus-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-small-focus-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-small-focus-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-small-over-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-small-over-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-small-over-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-small-over-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-small-pressed-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-small-pressed-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-small-pressed-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-small-pressed-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-small-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-large-disabled-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-large-disabled-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-large-focus-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-large-focus-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-large-focus-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-large-focus-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-large-over-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-large-over-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-large-over-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-large-over-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-large-pressed-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-large-pressed-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-large-pressed-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-large-pressed-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-medium-disabled-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-medium-disabled-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-medium-focus-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-medium-focus-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-medium-focus-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-medium-focus-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-medium-over-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-medium-over-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-medium-over-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-medium-over-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-medium-pressed-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-medium-pressed-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-medium-pressed-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-medium-pressed-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-small-disabled-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-small-disabled-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-small-focus-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-small-focus-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-small-focus-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-small-focus-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-small-over-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-small-over-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-small-over-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-small-over-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-small-pressed-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-small-pressed-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-small-pressed-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/btn/btn-default-toolbar-small-pressed-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/button/arrow.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/button/btn-arrow.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/button/btn-sprite.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/button/btn.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/button/group-cs.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/button/group-lr.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/button/group-tb.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/button/s-arrow-b-noline.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/button/s-arrow-b.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/button/s-arrow-bo.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/button/s-arrow-light-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/button/s-arrow-light.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/button/s-arrow-noline-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/button/s-arrow-noline.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/button/s-arrow-o-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/button/s-arrow-o.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/button/s-arrow-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/button/s-arrow.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/datepicker/datepicker-footer-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/datepicker/datepicker-header-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/dd/drop-add.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/dd/drop-no.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/dd/drop-yes.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/editor/tb-sprite.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/form/checkbox.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/form/clear-trigger-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/form/clear-trigger.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/form/date-trigger-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/form/date-trigger.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/form/error-tip-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/form/exclamation.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/form/radio.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/form/search-trigger-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/form/search-trigger.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/form/spinner-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/form/spinner-small-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/form/spinner-small.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/form/spinner.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/form/text-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/form/trigger-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/form/trigger-square-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/form/trigger-square.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/form/trigger-tpl-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/form/trigger-tpl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/form/trigger.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid-row-editor-buttons/null-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid-row-editor-buttons/null-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/arrow-left-white.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/arrow-right-white.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray/btn-group/btn-group-default-framed-notitle-corners.gif => ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/cell-special-bg.gif} (86%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/cell-special-bg.png
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray/btn-group/btn-group-default-framed-notitle-sides.gif => ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/cell-special-selected-bg.gif} (81%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/cell-special-selected-bg.png
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/col-move-bottom.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/col-move-top.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/column-header-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/column-header-over-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/columns.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/dd-insert-arrow-left.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/dd-insert-arrow-left.png
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/dd-insert-arrow-right.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/dd-insert-arrow-right.png
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/dirty-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/dirty.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/done.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/drop-no.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/drop-yes.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/footer-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/grid-blue-hd.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/grid-blue-split.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/grid-hrow.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/grid-loading.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/grid-split.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/grid-vista-hd.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/grid3-hd-btn-left.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/grid3-hd-btn.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/grid3-hrow-over.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/grid3-hrow.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/grid3-rowheader.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/group-by.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/group-collapse.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/group-expand-sprite.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/group-expand.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/hd-pop.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/hmenu-asc.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray/grid/hmenu-asc.gif => ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/hmenu-desc.gif} (54%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/hmenu-lock.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/hmenu-lock.png
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/hmenu-unlock.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/hmenu-unlock.png
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/invalid_line.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/loading.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/mso-hd.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/nowait.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/page-first-disabled.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/page-first.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/page-last-disabled.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/page-last.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/page-next-disabled.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/page-next.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/page-prev-disabled.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/page-prev.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/pick-button.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/property-cell-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/property-cell-selected-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/refresh-disabled.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/refresh.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/row-check-sprite.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/row-expand-sprite.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/row-over.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/row-sel.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/sort-hd.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/sort_asc.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/sort_desc.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/grid/wait.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/layout/mini-bottom.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/layout/mini-left.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/layout/mini-right.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/layout/mini-top.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/packages/ext-theme-gray/build/resources/images}/menu/checked.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/menu/group-checked.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/menu/item-over-disabled.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/menu/item-over.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/menu/menu-item-active-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/menu/menu-parent-left.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/menu/menu-parent.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/menu/menu.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/menu/scroll-bottom.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/menu/scroll-top.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray => ext-4.2.0.663/packages/ext-theme-gray/build/resources/images}/menu/unchecked.gif (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-bottom-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-bottom-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-bottom-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-bottom-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-bottom-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-collapsed-left-bg-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-collapsed-left-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-collapsed-left-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-collapsed-left-fbg-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-collapsed-left-sides-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-collapsed-left-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-collapsed-right-bg-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-collapsed-right-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-collapsed-right-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-collapsed-right-fbg-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-collapsed-right-sides-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-collapsed-right-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-collapsed-top-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-collapsed-top-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-collapsed-top-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-left-bg-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-left-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-left-corners-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-left-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-left-fbg-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-left-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-left-sides-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-left-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-right-bg-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-right-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-right-corners-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-right-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-right-fbg-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-right-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-right-sides-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-right-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-top-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-top-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-top-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-framed-top-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-left-bg-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-left-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-right-bg-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-right-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel-header/panel-header-default-top-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel/panel-default-framed-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/panel/panel-default-framed-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/progress/progress-default-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/shared/blue-loading.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/shared/calendar.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/shared/glass-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/shared/hd-sprite.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/shared/icon-error.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/shared/icon-info.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/shared/icon-question.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/shared/icon-warning.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/shared/large-loading.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/shared/left-btn.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/shared/loading-balls.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/shared/right-btn.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/shared/shadow-c.png
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/shared/shadow-lr.png
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/shared/shadow.png
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/shared/warning.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/sizer/e-handle-dark.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/sizer/e-handle.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/sizer/ne-handle-dark.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/sizer/ne-handle.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/sizer/nw-handle-dark.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/sizer/nw-handle.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/sizer/s-handle-dark.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/sizer/s-handle.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/sizer/se-handle-dark.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/sizer/se-handle.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/sizer/square.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/sizer/sw-handle-dark.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/sizer/sw-handle.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/slider/slider-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/slider/slider-bg.png
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/slider/slider-thumb.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/slider/slider-thumb.png
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/slider/slider-v-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/slider/slider-v-bg.png
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/slider/slider-v-thumb.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/slider/slider-v-thumb.png
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab-bar/default-scroll-bottom-left.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab-bar/default-scroll-bottom-right.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab-bar/default-scroll-left-bottom.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab-bar/default-scroll-left-top.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab-bar/default-scroll-right-bottom.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab-bar/default-scroll-right-top.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab-bar/default-scroll-top-left.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab-bar/default-scroll-top-right.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab-bar/tab-bar-default-top-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-bottom-active-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-bottom-active-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-bottom-active-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-bottom-active-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-bottom-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-bottom-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-bottom-disabled-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-bottom-disabled-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-bottom-disabled-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-bottom-disabled-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-bottom-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-bottom-over-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-bottom-over-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-bottom-over-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-bottom-over-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-bottom-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-close.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-top-active-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-top-active-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-top-active-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-top-active-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-top-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-top-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-top-disabled-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-top-disabled-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-top-disabled-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-top-disabled-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-top-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-top-over-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-top-over-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-top-over-fbg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-top-over-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tab/tab-default-top-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tip/tip-default-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tip/tip-default-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tip/tip-form-invalid-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tip/tip-form-invalid-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/toolbar/more-left.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/toolbar/more.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/toolbar/scroll-left.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/toolbar/scroll-right.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/toolbar/toolbar-default-bg.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tools/tool-sprite-tpl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tools/tool-sprites.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tools/tools-sprites-trans.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/arrows-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/arrows.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/drop-above.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/drop-add.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/drop-append.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/drop-below.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/drop-between.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/drop-no.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/drop-over.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/drop-under.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/drop-yes.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/elbow-end-minus-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/elbow-end-minus.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/elbow-end-plus-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/elbow-end-plus.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/elbow-end-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/elbow-end.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/elbow-line-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/elbow-line.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/elbow-minus-nl-rtl.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray/tree/elbow-end-minus-nl.gif => ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/elbow-minus-nl.gif} (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/elbow-minus-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/elbow-minus.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/elbow-plus-nl-rtl.gif
rename fhem/www/frontend/www/frontend/lib/{ext-4.1.1a/images/gray/tree/elbow-end-plus-nl.gif => ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/elbow-plus-nl.gif} (100%)
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/elbow-plus-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/elbow-plus.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/elbow-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/elbow.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/folder-open-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/folder-open.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/folder-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/folder.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/leaf-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/leaf.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/loading.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/tree/s.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/util/splitter/mini-bottom.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/util/splitter/mini-left.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/util/splitter/mini-right.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/util/splitter/mini-top.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window-header/window-header-default-bottom-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window-header/window-header-default-bottom-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window-header/window-header-default-collapsed-bottom-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window-header/window-header-default-collapsed-bottom-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window-header/window-header-default-collapsed-left-corners-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window-header/window-header-default-collapsed-left-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window-header/window-header-default-collapsed-left-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window-header/window-header-default-collapsed-right-corners-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window-header/window-header-default-collapsed-right-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window-header/window-header-default-collapsed-right-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window-header/window-header-default-collapsed-top-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window-header/window-header-default-collapsed-top-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window-header/window-header-default-left-corners-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window-header/window-header-default-left-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window-header/window-header-default-left-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window-header/window-header-default-right-corners-rtl.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window-header/window-header-default-right-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window-header/window-header-default-right-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window-header/window-header-default-top-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window-header/window-header-default-top-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window/icon-error.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window/icon-info.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window/icon-question.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window/icon-warning.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window/window-default-corners.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/resources/images/window/window-default-sides.gif
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/theme-capture.json
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/build/theme-capture.png
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/docs/package.png
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/docs/screenshots/screenshot-1.png
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/licenses/Readme.md
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/overrides/Readme.md
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/package.json
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/resources/Readme.md
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/Readme.md
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/all/ext-all-gray-rtl.scss
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/all/ext-all-gray.scss
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/config.rb
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/etc/Readme.md
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/etc/all.scss
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/example/custom.js
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/example/slicer.js
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/example/theme.html
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/src/Readme.md
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/src/all.scss
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/var/Component.scss
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/var/ProgressBar.scss
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/var/Readme.md
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/var/all.scss
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/var/button/Button.scss
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/var/container/ButtonGroup.scss
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/var/form/FieldSet.scss
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/var/grid/column/Column.scss
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/var/layout/container/Accordion.scss
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/var/menu/Menu.scss
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/var/panel/Panel.scss
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/var/picker/Date.scss
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/var/tab/Panel.scss
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/var/tip/Tip.scss
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/var/toolbar/Toolbar.scss
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/var/view/BoundList.scss
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/sass/var/window/Window.scss
create mode 100644 fhem/www/frontend/www/frontend/lib/ext-4.2.0.663/packages/ext-theme-gray/src/Readme.md
diff --git a/fhem/www/frontend/CHANGED b/fhem/www/frontend/CHANGED
index bb719a645..3023badb4 100644
--- a/fhem/www/frontend/CHANGED
+++ b/fhem/www/frontend/CHANGED
@@ -1,3 +1,10 @@
+Update vom 01.4.2013
+ * Zoomen in Charts nun möglich mit aufziehbarer Box
+ * Erweiterung der Anzahl der möglichen Y-Achsen von 3 auf 10
+ * Jede Achse kann nun mit Statistikfunktionen einzeln versehen werden
+ * Bibliotheksupdate auf ExtJS 4.2.0
+ * Kleine Verbesserungen in der Unterstützung mobiler Geräte
+ * Bugfixes
Update vom 23.3.2013
* Integration von Buttons und Dropdownlisten, um einzelene Geräte steuern zu können
* Aktualisierung aller Geräteinformationen über kontinuierliche AJAX Requests
diff --git a/fhem/www/frontend/www/frontend/app/app.js b/fhem/www/frontend/www/frontend/app/app.js
index 897582662..579a66ef3 100644
--- a/fhem/www/frontend/www/frontend/app/app.js
+++ b/fhem/www/frontend/www/frontend/app/app.js
@@ -26,7 +26,7 @@ Ext.application({
// Gather information from FHEM to display status, devices, etc.
var me = this,
url = '../../../fhem?cmd=jsonlist&XHR=1';
- Ext.getBody().mask("Please wait while the Frontend is starting...");
+
Ext.Ajax.request({
method: 'GET',
async: false,
@@ -35,6 +35,7 @@ Ext.application({
success: function(response){
Ext.getBody().unmask();
FHEM.info = Ext.decode(response.responseText);
+
FHEM.version = FHEM.info.Results[0].devices[0].ATTR.version;
Ext.each(FHEM.info.Results, function(result) {
@@ -43,10 +44,17 @@ Ext.application({
FHEM.dblogname = result.devices[0].NAME;
}
});
- if (!FHEM.dblogname && Ext.isEmpty(FHEM.dblogname)) {
+ if (!FHEM.dblogname && Ext.isEmpty(FHEM.dblogname) && FHEM.dblogname != "undefined") {
Ext.Msg.alert("Error", "Could not find a DbLog Configuration. Do you have DbLog already running?");
} else {
- Ext.create("FHEM.view.Viewport");
+ Ext.create("FHEM.view.Viewport", {
+ hidden: true
+ });
+
+ //removing the loadingimage
+ var p = Ext.DomQuery.select('p[class=loader]')[0],
+ img = Ext.DomQuery.select('#loading-overlay')[0];
+ p.removeChild(img);
// further configuration of viewport starts in maincontroller
}
},
diff --git a/fhem/www/frontend/www/frontend/app/controller/ChartController.js b/fhem/www/frontend/www/frontend/app/controller/ChartController.js
index 666a1bf45..4fb916b83 100644
--- a/fhem/www/frontend/www/frontend/app/controller/ChartController.js
+++ b/fhem/www/frontend/www/frontend/app/controller/ChartController.js
@@ -3,6 +3,15 @@
*/
Ext.define('FHEM.controller.ChartController', {
extend: 'Ext.app.Controller',
+ /**
+ * maxValue of Y Axis gets saved here as reference
+ */
+ maxYValue: 0,
+
+ /**
+ * minValue of Y Axis gets saved here as reference
+ */
+ minYValue: 9999999,
refs: [
{
@@ -26,72 +35,8 @@ Ext.define('FHEM.controller.ChartController', {
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()
- },
- {
- 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=yaxisstatisticscombo]',
- ref: 'yaxisstatisticscombo' //this.getYaxisstatisticscombo()
- },
- {
- 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()
+ selector: 'chart',
+ ref: 'chart' //this.getChart()
},
{
selector: 'linechartpanel',
@@ -104,54 +49,6 @@ 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()
}
],
@@ -161,15 +58,6 @@ Ext.define('FHEM.controller.ChartController', {
*/
init: function() {
this.control({
- 'combobox[name=devicecombo]': {
- select: this.deviceSelected
- },
- 'combobox[name=device2combo]': {
- select: this.deviceSelected
- },
- 'combobox[name=device3combo]': {
- select: this.deviceSelected
- },
'button[name=requestchartdata]': {
click: this.requestChartData
},
@@ -185,47 +73,16 @@ Ext.define('FHEM.controller.ChartController', {
'button[name=resetchartform]': {
click: this.resetFormFields
},
- 'linechartview': {
- afterrender: this.enableZoomInChart
- },
'grid[name=savedchartsgrid]': {
cellclick: this.loadsavedchart
},
'actioncolumn[name=savedchartsactioncolumn]': {
click: this.deletechart
}
-
});
},
- /**
- * loads data for the readingsstore after device has been selected
- */
- 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';
- store.load();
- }
-
- },
-
/**
* Triggers a request to FHEM Module to get the data from Database
*/
@@ -233,60 +90,72 @@ Ext.define('FHEM.controller.ChartController', {
var me = this;
//getting the necessary values
- var device = me.getDevicecombo().getValue(),
- xaxis = me.getXaxiscombo().getValue(),
- yaxis = me.getYaxiscombo().getValue(),
- yaxiscolorcombo = me.getYaxiscolorcombo().getValue(),
- yaxisfillcheck = me.getYaxisfillcheck().checked,
- yaxisstatistics = me.getYaxisstatisticscombo().getValue(),
- 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,
+ var devices = Ext.ComponentQuery.query('combobox[name=devicecombo]');
+ var xaxes = Ext.ComponentQuery.query('combobox[name=xaxiscombo]');
+ var yaxes = Ext.ComponentQuery.query('combobox[name=yaxiscombo]');
+ var yaxescolorcombos = Ext.ComponentQuery.query('combobox[name=yaxiscolorcombo]');
+ var yaxesfillchecks = Ext.ComponentQuery.query('checkbox[name=yaxisfillcheck]');
+ var yaxesstatistics = Ext.ComponentQuery.query('combobox[name=yaxisstatisticscombo]');
+
+ var basesstart = Ext.ComponentQuery.query('numberfield[name=basestart]');
+ var basesend = Ext.ComponentQuery.query('numberfield[name=baseend]');
+ var basescolors = Ext.ComponentQuery.query('combobox[name=baselinecolorcombo]');
+ var basesfills = Ext.ComponentQuery.query('checkboxfield[name=baselinefillcheck]');
+
+
- 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(),
+ var starttime = me.getStarttimepicker().getValue(),
dbstarttime = Ext.Date.format(starttime, 'Y-m-d_H:i:s'),
endtime = me.getEndtimepicker().getValue(),
dbendtime = Ext.Date.format(endtime, 'Y-m-d_H:i:s'),
dynamicradio = Ext.ComponentQuery.query('radiogroup[name=dynamictime]')[0],
- generalization = Ext.ComponentQuery.query('radio[boxLabel=active]')[0],
- generalizationfactor = Ext.ComponentQuery.query('combobox[name=genfactor]')[0].getValue(),
- view = me.getLinechartview(),
- store = me.getLinechartview().getStore(),
+ chartpanel = me.getLinechartpanel(),
+ chart = me.getChart(),
+ store = chart.getStore(),
proxy = store.getProxy();
//cleanup store
store.removeAll();
//cleanup chart
- for (var i = view.series.length -1; i >= 0; i--) {
- view.series.removeAt(i);
+ for (var i = chart.series.length -1; i >= 0; i--) {
+ chart.series.removeAt(i);
}
+ //reset zoomValues
+ chartpanel.setLastYmax(null);
+ chartpanel.setLastYmin(null);
+ chartpanel.setLastXmax(null);
+ chartpanel.setLastXmin(null);
+
+ me.maxYValue = 0;
+ me.minYValue = 9999999;
+
+ //adding baseline values to max and min values of y-axis
+ Ext.each(basesstart, function(basestart) {
+ if (me.maxYValue < basestart.getValue()) {
+ me.maxYValue = basestart.getValue();
+ }
+ if (me.minYValue > basestart.getValue()) {
+ me.minYValue = basestart.getValue();
+ }
+ });
+ Ext.each(basesend, function(baseend) {
+ if (me.maxYValue < baseend.getValue()) {
+ me.maxYValue = baseend.getValue();
+ }
+ if (me.minYValue > baseend.getValue()) {
+ me.minYValue = baseend.getValue();
+ }
+ });
+
//register store listeners
store.on("beforeload", function() {
- me.getLinechartview().setLoading(true);
+ me.getChart().setLoading(true);
});
//setting x-axis title
- view.axes.get(1).setTitle(xaxis);
+ chart.axes.get(1).setTitle(xaxes[0]);
//check if timerange or dynamic time should be used
dynamicradio.eachBox(function(box, idx){
@@ -349,387 +218,357 @@ Ext.define('FHEM.controller.ChartController', {
}
});
- // set the x axis range dependent on user given timerange
- view.axes.get(1).fromDate = starttime;
- view.axes.get(1).toDate = endtime;
- view.axes.get(1).processView();
+ var i = 0;
+ Ext.each(yaxes, function(yaxis) {
+ var device = devices[i].getValue(),
+ xaxis = xaxes[i].getValue(),
+ yaxis = yaxes[i].getValue(),
+ yaxiscolorcombo = yaxescolorcombos[i].getValue(),
+ yaxisfillcheck = yaxesfillchecks[i].checked,
+ yaxisstatistics = yaxesstatistics[i].getValue();
+ me.populateAxis(i, device, xaxis, yaxis, yaxiscolorcombo, yaxisfillcheck, yaxisstatistics, dbstarttime, dbendtime);
+ i++;
+ });
- //setup the first y series
- var y1series = {
- type : 'line',
- axis : 'left',
- xField : 'TIMESTAMP',
- yField : 'VALUE',
- title: yaxis,
- showInLegend: true,
- smooth: 0,
- 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') +
- '
Time: ' + storeItem.get('TIMESTAMP'));
+ //waiting for the first data arriving to add our baseline to it
+ store.on("load", function() {
+ var i = 0;
+ Ext.each(basesstart, function(base) {
+ var basestart = basesstart[i].getValue(),
+ baseend = basesend[i].getValue(),
+ basecolor = basescolors[i].getValue(),
+ basefill = basesfills[i].checked;
+
+ me.createBaseLine(i + 1, basestart, baseend, basefill, basecolor);
+ i++;
+ });
+ }, this, {single: true});
+ },
+
+ /**
+ * creating baselines
+ */
+ createBaseLine: function(index, basestart, baseend, basefill, basecolor) {
+
+ var me = this,
+ chart = me.getChart(),
+ store = chart.getStore(),
+ yfield = "VALUEBASE" + index;
+
+ if (!Ext.isEmpty(basestart) && basestart != "null") {
+ var baseline = {
+ type : 'line',
+ name: 'baseline',
+ axis : 'left',
+ xField : 'TIMESTAMP',
+ yField : yfield,
+ showInLegend: false,
+ highlight: true,
+ fill: basefill,
+ style: {
+ fill : basecolor,
+ 'stroke-width': 3,
+ stroke: basecolor
+ },
+ tips : {
+ trackMouse : true,
+ width : 140,
+ height : 100,
+ renderer : function(storeItem, item) {
+ this.setTitle(' Value: : ' + storeItem.get(yfield) +
+ '
Time: ' + storeItem.get('TIMESTAMP'));
+ }
}
- }
- };
-
- if (proxy) {
+ };
+ chart.series.add(baseline);
- var url;
- if (yaxisstatistics === "none") {
- url += '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+' + dbstarttime + '+' + dbendtime + '+';
- url +=device + '+timerange+' + xaxis + '+' + yaxis;
- url += '&XHR=1';
- } else { //setup url to get statistics
- url += '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+' + dbstarttime + '+' + dbendtime + '+';
- url +=device;
-
- if (yaxisstatistics.indexOf("hour") === 0) {
- url += '+hourstats+';
- } else if (yaxisstatistics.indexOf("day") === 0) {
- url += '+daystats+';
- } else if (yaxisstatistics.indexOf("week") === 0) {
- url += '+weekstats+';
- } else if (yaxisstatistics.indexOf("month") === 0) {
- url += '+monthstats+';
- } else if (yaxisstatistics.indexOf("year") === 0) {
- url += '+yearstats+';
- }
-
- url += xaxis + '+' + yaxis;
- url += '&XHR=1';
+ store.first().set(yfield, basestart);
+ store.last().set(yfield, baseend);
+ }
+ },
+
+ /**
+ * fill the axes with data
+ */
+ populateAxis: function(i, device, xaxis, yaxis, yaxiscolorcombo, yaxisfillcheck, yaxisstatistics, dbstarttime, dbendtime) {
+
+ var me = this,
+ chart = me.getChart(),
+ store = chart.getStore(),
+ proxy = store.getProxy(),
+ generalization = Ext.ComponentQuery.query('radio[boxLabel=active]')[0],
+ generalizationfactor = Ext.ComponentQuery.query('combobox[name=genfactor]')[0].getValue();
+
+ if (i > 0) {
+ var yseries = me.createSeries('VALUE' + (i + 1), yaxis, yaxisfillcheck, yaxiscolorcombo);
+ } else {
+ var yseries = me.createSeries('VALUE', yaxis, yaxisfillcheck, yaxiscolorcombo);
+ }
+
+ var url;
+ if (!Ext.isDefined(yaxisstatistics) || yaxisstatistics === "none" || Ext.isEmpty(yaxisstatistics)) {
+ url += '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+' + dbstarttime + '+' + dbendtime + '+';
+ url +=device + '+timerange+' + xaxis + '+' + yaxis;
+ url += '&XHR=1';
+ } else { //setup url to get statistics
+ url += '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+' + dbstarttime + '+' + dbendtime + '+';
+ url +=device;
+
+ if (yaxisstatistics.indexOf("hour") === 0) {
+ url += '+hourstats+';
+ } else if (yaxisstatistics.indexOf("day") === 0) {
+ url += '+daystats+';
+ } else if (yaxisstatistics.indexOf("week") === 0) {
+ url += '+weekstats+';
+ } else if (yaxisstatistics.indexOf("month") === 0) {
+ url += '+monthstats+';
+ } else if (yaxisstatistics.indexOf("year") === 0) {
+ url += '+yearstats+';
}
- 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: 0,
- 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') +
- '
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:
" + 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(
- {
- 'VALUE': '',
- 'TIMESTAMP': json.data[i].TIMESTAMP,
- "VALUE2": json.data[i].VALUE,
- "TIMESTAMP2": json.data[i].TIMESTAMP
- }
- );
- }
-
- }
-
- if (generalization.checked) {
- me.generalizeChartData(generalizationfactor, 2);
- }
-
- if (!Ext.isEmpty(y3axis)) {
-
- var y3series = {
- type: 'line',
- title: y3axis,
- highlight: true,
- style: {
- fill: y3axiscolorcombo,
- stroke: y3axiscolorcombo
- },
- axis: 'left',
- fill: y3axisfillcheck,
- smooth: 0,
- 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') +
- '
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:
" + 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(
- {
- "VALUE": "",
- "TIMESTAMP": json.data[i].TIMESTAMP,
- "VALUE2": "",
- "TIMESTAMP2": json.data[i].TIMESTAMP,
- "VALUE3": json.data[i].VALUE,
- "TIMESTAMP3": json.data[i].TIMESTAMP
- }
- );
- }
-
- }
-
- if (generalization.checked) {
- me.generalizeChartData(generalizationfactor, 3);
- }
- }
- },
- 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') +
- '
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') +
- '
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') +
- '
Time: ' + storeItem.get('TIMESTAMP'));
- }
- }
- };
- view.series.add(bl3);
- store.first().set('VALUEBASE3', base3start);
- store.last().set('VALUEBASE3', base3end);
-
- }
-
- if (generalization.checked) {
- me.generalizeChartData(generalizationfactor, 1);
- }
-
- //remove the old max values of y axis to get a dynamic range
- delete view.axes.get(0).maximum;
-
- if (yaxisstatistics.indexOf("none") > 0) {
- y1series.yField = 'VALUE';
- view.axes.get(0).maximum = store.max('VALUE');
- } else if (yaxisstatistics.indexOf("sum") > 0) {
- y1series.yField = 'SUM';
- y1series.tips.renderer = me.setSeriesRenderer('SUM');
- view.axes.get(0).maximum = store.max('SUM');
- view.axes.get(0).setTitle("SUM " + yaxis);
- } else if (yaxisstatistics.indexOf("average") > 0) {
- y1series.yField = 'AVG';
- y1series.tips.renderer = me.setSeriesRenderer('AVG');
- view.axes.get(0).maximum = store.max('AVG');
- view.axes.get(0).setTitle("AVG " + yaxis);
- } else if (yaxisstatistics.indexOf("min") > 0) {
- y1series.yField = 'MIN';
- y1series.tips.renderer = me.setSeriesRenderer('MIN');
- view.axes.get(0).maximum = store.max('MIN');
- view.axes.get(0).setTitle("MIN " + yaxis);
- } else if (yaxisstatistics.indexOf("max") > 0) {
- y1series.yField = 'MAX';
- y1series.tips.renderer = me.setSeriesRenderer('MAX');
- view.axes.get(0).maximum = store.max('MAX');
- view.axes.get(0).setTitle("MAX " + yaxis);
- } else if (yaxisstatistics.indexOf("count") > 0) {
- y1series.yField = 'COUNT';
- y1series.tips.renderer = me.setSeriesRenderer('COUNT');
- view.axes.get(0).maximum = store.max('COUNT');
- view.axes.get(0).setTitle("COUNT " + yaxis);
- }
- view.series.add(y1series);
- view.redraw();
-
- me.getLinechartview().setLoading(false);
-
- }, this, {single: true});
+ url += xaxis + '+' + yaxis;
+ url += '&XHR=1';
}
+ proxy.url = url;
+
+ if (i > 0) { //make async ajax when not on first axis
+ Ext.Ajax.request({
+ method: 'GET',
+ disableCaching: false,
+ url: url,
+ success: function(response){
+
+ var json = Ext.decode(response.responseText);
+
+ if (json.success && json.success === "false") {
+ Ext.Msg.alert("Error", "Error an adding Y-Axis number " + i + ", error was:
" + json.msg);
+ } else {
+
+ //get the current value descriptor
+ var valuetext;
+ if (yaxisstatistics.indexOf("none") >= 0) {
+ valuetext = 'VALUE' + (i + 1);
+ } else if (yaxisstatistics.indexOf("sum") > 0) {
+ valuetext = 'SUM' + (i + 1);
+ } else if (yaxisstatistics.indexOf("average") > 0) {
+ valuetext = 'AVG' + (i + 1);
+ } else if (yaxisstatistics.indexOf("min") > 0) {
+ valuetext = 'MIN' + (i + 1);
+ } else if (yaxisstatistics.indexOf("max") > 0) {
+ valuetext = 'MAX' + (i + 1);
+ } else if (yaxisstatistics.indexOf("count") > 0) {
+ valuetext = 'COUNT' + (i + 1);
+ }
+ var timestamptext = 'TIMESTAMP' + (i + 1);
+
+ //add records to store
+ for (var j = 0; j < json.data.length; j++) {
+ var item = Ext.create('FHEM.model.ChartModel');
+
+ Ext.iterate(item.data, function(key, value) {
+ if (key.indexOf("TIMESTAMP") >= 0) {
+ item.set(key, json.data[j].TIMESTAMP);
+ }
+ });
+ var valuestring = parseFloat(eval('json.data[j].' + valuetext.replace(/[0-9]/g, ''), 10));
+ item.set(valuetext, valuestring);
+ item.set(timestamptext, json.data[j].TIMESTAMP);
+ store.add(item);
+
+ // recheck if our min and max values are still valid
+ if (me.minYValue > valuestring) {
+ me.minYValue = valuestring;
+ }
+ if (me.maxYValue < valuestring) {
+ me.maxYValue = valuestring;
+ }
+ }
+
+ if (generalization.checked) {
+ me.generalizeChartData(generalizationfactor, i);
+ }
+
+ delete chart.axes.get(0).maximum;
+ delete chart.axes.get(0).minimum;
+
+ chart.axes.get(0).maximum = me.maxYValue;
+ chart.axes.get(0).minimum = me.minYValue;
+ chart.redraw();
+
+ }
+ },
+ failure: function() {
+ Ext.Msg.alert("Error", "Error an adding Y-Axis number " + i);
+ }
+ });
+ } else {
+ store.load();
+ }
+
+ var order = function(updatedstore) {
+
+ if (generalization.checked) {
+ me.generalizeChartData(generalizationfactor, i);
+ }
+
+ if (yaxisstatistics.indexOf("none") >= 0) {
+ if (i === 0) {
+ yseries.yField = 'VALUE';
+ if (me.maxYValue < updatedstore.max('VALUE')) {
+ me.maxYValue = updatedstore.max('VALUE');
+ }
+ if (me.minYValue > updatedstore.min('VALUE')) {
+ me.minYValue = updatedstore.min('VALUE');
+ }
+ } else {
+ yseries.yField = 'VALUE' + (i + 1);
+ if (me.maxYValue < updatedstore.max(yseries.yField)) {
+ me.maxYValue = updatedstore.max(yseries.yField);
+ }
+ }
+ } else if (yaxisstatistics.indexOf("sum") > 0) {
+ if (i === 0) {
+ yseries.yField = 'SUM';
+ yseries.tips.renderer = me.setSeriesRenderer('SUM');
+ if (me.maxYValue < updatedstore.max('SUM')) {
+ me.maxYValue = updatedstore.max('SUM');
+ }
+ if (me.minYValue > updatedstore.min('SUM')) {
+ me.minYValue = updatedstore.min('SUM');
+ }
+ } else {
+ yseries.yField = 'SUM' + (i + 1);
+ yseries.tips.renderer = me.setSeriesRenderer('SUM' + (i + 1));
+ }
+ chart.axes.get(0).setTitle("SUM " + yaxis);
+ } else if (yaxisstatistics.indexOf("average") > 0) {
+ if (i === 0) {
+ yseries.yField = 'AVG';
+ yseries.tips.renderer = me.setSeriesRenderer('AVG');
+ if (me.maxYValue < updatedstore.max('AVG')) {
+ me.maxYValue = updatedstore.max('AVG');
+ }
+ if (me.minYValue > updatedstore.min('AVG')) {
+ me.minYValue = updatedstore.min('AVG');
+ }
+ } else {
+ yseries.yField = 'AVG' + (i + 1);
+ yseries.tips.renderer = me.setSeriesRenderer('AVG' + (i + 1));
+ }
+ chart.axes.get(0).setTitle("AVG " + yaxis);
+ } else if (yaxisstatistics.indexOf("min") > 0) {
+ if (i === 0) {
+ yseries.yField = 'MIN';
+ yseries.tips.renderer = me.setSeriesRenderer('MIN');
+ if (me.maxYValue < updatedstore.max('MIN')) {
+ me.maxYValue = updatedstore.max('MIN');
+ }
+ if (me.minYValue > updatedstore.min('MIN')) {
+ me.minYValue = updatedstore.min('MIN');
+ }
+ } else {
+ yseries.yField = 'MIN' + (i + 1);
+ yseries.tips.renderer = me.setSeriesRenderer('MIN' + (i + 1));
+ }
+ chart.axes.get(0).setTitle("MIN " + yaxis);
+ } else if (yaxisstatistics.indexOf("max") > 0) {
+ if (i === 0) {
+ yseries.yField = 'MAX';
+ yseries.tips.renderer = me.setSeriesRenderer('MAX');
+ if (me.maxYValue < updatedstore.max('MAX')) {
+ me.maxYValue = updatedstore.max('MAX');
+ }
+ if (me.minYValue > updatedstore.min('MAX')) {
+ me.minYValue = updatedstore.min('MAX');
+ }
+ } else {
+ yseries.yField = 'MAX' + (i + 1);
+ yseries.tips.renderer = me.setSeriesRenderer('MAX' + (i + 1));
+ }
+ chart.axes.get(0).setTitle("MAX " + yaxis);
+ } else if (yaxisstatistics.indexOf("count") > 0) {
+ if (i === 0) {
+ yseries.yField = 'COUNT';
+ yseries.tips.renderer = me.setSeriesRenderer('COUNT');
+ if (me.maxYValue < updatedstore.max('COUNT')) {
+ me.maxYValue = updatedstore.max('COUNT');
+ }
+ if (me.minYValue > updatedstore.min('COUNT')) {
+ me.minYValue = updatedstore.min('COUNT');
+ }
+ } else {
+ yseries.yField = 'COUNT' + (i + 1);
+ yseries.tips.renderer = me.setSeriesRenderer('COUNT' + (i + 1));
+ }
+ chart.axes.get(0).setTitle("COUNT " + yaxis);
+ }
+
+ //remove the old max values of y axis to get a dynamic range
+ delete chart.axes.get(0).maximum;
+ delete chart.axes.get(0).minimum;
+
+ chart.axes.get(0).maximum = me.maxYValue;
+ if (me.minYValue === 9999999) {
+ chart.axes.get(0).minimum = 0;
+ } else {
+ chart.axes.get(0).minimum = me.minYValue;
+ }
+
+ chart.series.add(yseries);
+
+ // set the x axis range dependent on user given timerange
+ var starttime = me.getStarttimepicker().getValue(),
+ endtime = me.getEndtimepicker().getValue();
+ chart.axes.get(1).fromDate = starttime;
+ chart.axes.get(1).toDate = endtime;
+ chart.axes.get(1).processView();
+ chart.redraw();
+
+ me.getChart().setLoading(false);
+
+ };
+ store.on("load", order, this, {single: true});
+ },
+
+ /**
+ * create a single series for the chart
+ */
+ createSeries: function(yfield, title, fill, color) {
+ var series = {
+ type : 'line',
+ axis : 'left',
+ xField : 'TIMESTAMP',
+ yField : yfield,
+ title: title,
+ showInLegend: true,
+ smooth: 0,
+ highlight: true,
+ fill: fill,
+ style: {
+ fill: color,
+ stroke: color
+ },
+ markerConfig: {
+ type: 'circle',
+ size: 3,
+ radius: 3,
+ stroke: color
+ },
+ tips : {
+ trackMouse : true,
+ mouseOffset: [1,1],
+ showDelay: 1000,
+ width : 280,
+ height : 50,
+ renderer : function(storeItem, item) {
+ this.setTitle(' Value: : ' + storeItem.get(yfield) +
+ '
Time: ' + storeItem.get('TIMESTAMP'));
+ }
+ }
+ };
+ return series;
},
/**
@@ -750,7 +589,7 @@ Ext.define('FHEM.controller.ChartController', {
*/
generalizeChartData: function(generalizationfactor, index) {
- var store = this.getLinechartview().getStore();
+ var store = this.getChart().getStore();
this.factorpositive = 1 + (generalizationfactor / 100),
this.factornegative = 1 - (generalizationfactor / 100),
@@ -761,51 +600,35 @@ Ext.define('FHEM.controller.ChartController', {
Ext.each(store.data.items, function(item) {
var value;
-
- if (index === 1) {
+ if (index === 0) {
value = item.get('VALUE');
- } else if (index === 2) {
- value = item.get('VALUE2');
- } else if (index === 3) {
- value = item.get('VALUE3');
+ } else {
+ value = item.get('VALUE' + index);
}
-
var one = this.lastValue / 100;
var diff = value / one / 100;
-
if (diff > this.factorpositive || diff < this.factornegative) {
-
if (this.lastItem) {
- if (index === 1) {
+ if (index === 0) {
this.lastItem.set('VALUE', this.lastValue);
- } else if (index === 2) {
- this.lastItem.set('VALUE2', this.lastValue);
- } else if (index === 3) {
- this.lastItem.set('VALUE3', this.lastValue);
+ } else {
+ this.lastItem.set('VALUE' + index, this.lastValue);
}
}
-
this.lastValue = value;
this.lastItem = item;
-
} else {
-
//keep last record
if (store.last() !== item) {
- if (index === 1) {
+ if (index === 0) {
item.set('VALUE', '');
- } else if (index === 2) {
- item.set('VALUE2', '');
- } else if (index === 3) {
- item.set('VALUE3', '');
+ } else {
+ item.set('VALUE' + index, '');
}
}
-
-
this.lastValue = value;
this.lastItem = item;
}
-
}, this);
},
@@ -814,61 +637,15 @@ Ext.define('FHEM.controller.ChartController', {
* 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);
- },
-
- /**
- * perpare zooming
- */
- enableZoomInChart: function() {
- var view = this.getLinechartview();
- view.mon(view.getEl(), 'mousewheel', this.zoomInChart, this);
- },
-
- /**
- * zoom in chart with mousewheel
- */
- zoomInChart: function(e) {
- var wheeldelta = e.getWheelDelta(),
- view = this.getLinechartview(),
- currentmax = view.axes.get(0).prevMax,
- newmax;
-
- if (wheeldelta == 1) { //zoomin case:
- if (currentmax > 1) {
- newmax = currentmax - 1;
- view.axes.get(0).maximum = newmax;
- view.redraw();
- }
- } else if (wheeldelta == -1) { //zoomout case
- newmax = currentmax + 1;
- view.axes.get(0).maximum = newmax;
- view.redraw();
- }
+ var fieldset = this.getChartformpanel().down('fieldset[name=axesfieldset]');
+ fieldset.removeAll();
+ this.getLinechartpanel().createNewYAxis();
+ Ext.ComponentQuery.query('radiofield[name=rb]')[0].setValue(true);
+ Ext.ComponentQuery.query('datefield[name=starttimepicker]')[0].reset();
+ Ext.ComponentQuery.query('datefield[name=endtimepicker]')[0].reset();
+ Ext.ComponentQuery.query('radiofield[name=generalization]')[1].setValue(true);
},
/**
@@ -877,6 +654,10 @@ Ext.define('FHEM.controller.ChartController', {
stepchange: function(btn) {
var me = this;
+ //reset y-axis max
+ me.maxYValue = 0;
+ me.minYValue = 9999999;
+
var starttime = me.getStarttimepicker().getValue(),
dbstarttime = Ext.Date.format(starttime, 'Y-m-d H:i:s'),
endtime = me.getEndtimepicker().getValue(),
@@ -908,49 +689,33 @@ Ext.define('FHEM.controller.ChartController', {
var me = this;
Ext.Msg.prompt("Select a name", "Enter a name to save the Chart", function(action, savename) {
if (action === "ok" && !Ext.isEmpty(savename)) {
-
//replacing spaces in name
savename = savename.replace(/ /g, "_");
-
//replacing + in name
savename = savename.replace(/\+/g, "_");
- var device = this.getDevicecombo().getValue(),
- xaxis = this.getXaxiscombo().getValue(),
- yaxis = this.getYaxiscombo().getValue(),
+ //getting the necessary values
+ var devices = Ext.ComponentQuery.query('combobox[name=devicecombo]');
+ var xaxes = Ext.ComponentQuery.query('combobox[name=xaxiscombo]');
+ var yaxes = Ext.ComponentQuery.query('combobox[name=yaxiscombo]');
+ var yaxescolorcombos = Ext.ComponentQuery.query('combobox[name=yaxiscolorcombo]');
+ var yaxesfillchecks = Ext.ComponentQuery.query('checkbox[name=yaxisfillcheck]');
+ var yaxesstatistics = Ext.ComponentQuery.query('combobox[name=yaxisstatisticscombo]');
+
+ var basesstart = Ext.ComponentQuery.query('numberfield[name=basestart]');
+ var basesend = Ext.ComponentQuery.query('numberfield[name=baseend]');
+ var basescolors = Ext.ComponentQuery.query('combobox[name=baselinecolorcombo]');
+ var basesfills = Ext.ComponentQuery.query('checkboxfield[name=baselinefillcheck]');
- yaxiscolorcombo = me.getYaxiscolorcombo().getDisplayValue(),
- yaxisfillcheck = me.getYaxisfillcheck().checked,
- yaxisstatistics = me.getYaxisstatisticscombo().getValue(),
- 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(),
+ var starttime = me.getStarttimepicker().getValue(),
dbstarttime = Ext.Date.format(starttime, 'Y-m-d_H:i:s'),
- endtime = this.getEndtimepicker().getValue(),
+ endtime = me.getEndtimepicker().getValue(),
dbendtime = Ext.Date.format(endtime, 'Y-m-d_H:i:s'),
dynamicradio = Ext.ComponentQuery.query('radiogroup[name=dynamictime]')[0],
generalization = Ext.ComponentQuery.query('radio[boxLabel=active]')[0],
generalizationfactor = Ext.ComponentQuery.query('combobox[name=genfactor]')[0].getValue(),
- view = this.getLinechartview();
+ chart = me.getChart(),
+ store = chart.getStore();
//setting the start / endtime parameter in the chartconfig to the string of the radiofield, gets parsed on load
if (this.getStarttimepicker().isDisabled()) {
@@ -962,44 +727,71 @@ Ext.define('FHEM.controller.ChartController', {
});
}
- var jsonConfig = '{"x":"' + xaxis + '","y":"' + yaxis + '","device":"' + device + '",';
- jsonConfig += '"yaxiscolorcombo":"' + yaxiscolorcombo + '","yaxisfillcheck":"' + yaxisfillcheck + '",';
+ var jsonConfig = '{';
+ var i = 0;
+ Ext.each(devices, function(dev) {
- if(generalization.checked) {
- jsonConfig += '"generalization":"true",';
- jsonConfig += '"generalizationfactor":"' + generalizationfactor + '",';
+ var device = dev.getValue(),
+ xaxis = xaxes[i].getValue(),
+ yaxis = yaxes[i].getValue(),
+ yaxiscolorcombo = yaxescolorcombos[i].getDisplayValue(),
+ yaxisfillcheck = yaxesfillchecks[i].checked,
+ yaxisstatistics = yaxesstatistics[i].getValue();
+
+ if (i === 0) {
+ jsonConfig += '"x":"' + xaxis + '","y":"' + yaxis + '","device":"' + device + '",';
+ jsonConfig += '"yaxiscolorcombo":"' + yaxiscolorcombo + '","yaxisfillcheck":"' + yaxisfillcheck + '",';
+ if (yaxisstatistics !== "none") {
+ jsonConfig += '"yaxisstatistics":"' + yaxisstatistics + '",';
+ }
+ } else {
+ var axisname = "y" + (i + 1) + "axis",
+ devicename = "y" + (i + 1) + "device",
+ colorname = "y" + (i + 1) + "axiscolorcombo",
+ fillname = "y" + (i + 1) + "axisfillcheck",
+ statsname = "y" + (i + 1) + "axisstatistics";
+
+ jsonConfig += '"' + axisname + '":"' + yaxis + '","' + devicename + '":"' + device + '",';
+ jsonConfig += '"' + colorname + '":"' + yaxiscolorcombo + '","' + fillname + '":"' + yaxisfillcheck + '",';
+ if (yaxisstatistics !== "none") {
+ jsonConfig += '"' + statsname + '":"' + yaxisstatistics + '",';
+ }
}
+ i++;
+ });
+
+ if(generalization.checked) {
+ jsonConfig += '"generalization":"true",';
+ jsonConfig += '"generalizationfactor":"' + generalizationfactor + '",';
+ }
+
+ var i = 0;
+ Ext.each(basesstart, function(base) {
+ var basestart = basesstart[i].getValue(),
+ baseend = basesend[i].getValue(),
+ basecolor = basescolors[i].getDisplayValue(),
+ basefill = basesfills[i].checked;
- if (yaxisstatistics !== "none") {
- jsonConfig += '"yaxisstatistics":"' + yaxisstatistics + '",';
- }
-
- 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 + '"}';
+ i++;
+ jsonConfig += '"base' + i + 'start":"' + basestart + '","base' + i + 'end":"' + baseend + '",';
+ jsonConfig += '"base' + i + 'color":"' + basecolor + '","base' + i + 'fill":"' + basefill + '",';
+ });
+
+ jsonConfig += '"starttime":"' + dbstarttime + '","endtime":"' + dbendtime + '"}';
var url = '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+' + dbstarttime + '+' + dbendtime + '+';
- url +=device + '+savechart+""+""+' + savename + '+' + jsonConfig + '&XHR=1';
+ url +=devices[0].getValue() + '+savechart+""+""+' + savename + '+' + jsonConfig + '&XHR=1';
- view.setLoading(true);
+ chart.setLoading(true);
Ext.Ajax.request({
method: 'POST',
disableCaching: false,
url: url,
success: function(response){
- view.setLoading(false);
+ chart.setLoading(false);
var json = Ext.decode(response.responseText);
- if (json.success === "true") {
+ if (json.success === "true" || json.data && json.data.length === 0) {
me.getSavedchartsgrid().getStore().load();
Ext.Msg.alert("Success", "Chart successfully saved!");
} else if (json.msg) {
@@ -1009,7 +801,7 @@ Ext.define('FHEM.controller.ChartController', {
}
},
failure: function() {
- view.setLoading(false);
+ chart.setLoading(false);
if (json && json.msg) {
Ext.Msg.alert("Error", "The Chart could not be saved, error Message is:
" + json.msg);
} else {
@@ -1027,6 +819,8 @@ Ext.define('FHEM.controller.ChartController', {
*/
loadsavedchart: function(grid, td, cellIndex, record) {
+ var me = this;
+
if (cellIndex === 0) {
var name = record.get('NAME'),
chartdata = record.get('VALUE');
@@ -1045,69 +839,107 @@ Ext.define('FHEM.controller.ChartController', {
if (chartdata && !Ext.isEmpty(chartdata)) {
- this.getDevicecombo().setValue(chartdata.device);
- // load storedata for readings after device has been selected
- this.deviceSelected(this.getDevicecombo());
+ //reset y-axis max
+ me.maxYValue = 0;
+ me.minYValue = 9999999;
- this.getXaxiscombo().setValue(chartdata.x);
- this.getYaxiscombo().setValue(chartdata.y);
- this.getYaxiscolorcombo().setValue(chartdata.yaxiscolorcombo);
- this.getYaxisfillcheck().setValue(chartdata.yaxisfillcheck);
+ //count axes
+ var axescount = 0;
+ Ext.iterate(chartdata, function(key, value) {
+ if (key.indexOf("device") >= 0 && value != "null") {
+ axescount++;
+ }
+ });
-
- 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();
+ var yaxeslength = Ext.ComponentQuery.query('combobox[name=yaxiscombo]').length;
+ while (yaxeslength < axescount) {
+ Ext.ComponentQuery.query('linechartpanel')[0].createNewYAxis();
+ yaxeslength++;
}
- 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();
+ var xaxes = Ext.ComponentQuery.query('combobox[name=xaxiscombo]');
+ var devices = Ext.ComponentQuery.query('combobox[name=devicecombo]');
+ var yaxes = Ext.ComponentQuery.query('combobox[name=yaxiscombo]');
+ var yaxescolorcombos = Ext.ComponentQuery.query('combobox[name=yaxiscolorcombo]');
+ var yaxesfillchecks = Ext.ComponentQuery.query('checkbox[name=yaxisfillcheck]');
+ var yaxesstatistics = Ext.ComponentQuery.query('combobox[name=yaxisstatisticscombo]');
+
+ var i = 0;
+ Ext.each(yaxes, function(yaxis) {
+ if (i === 0) {
+ devices[i].setValue(chartdata.device);
+ yaxes[i].getStore().getProxy().url = url = '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+""+""+' + chartdata.device + '+getreadings&XHR=1';
+ yaxes[i].setDisabled(false);
+ yaxes[i].setValue(chartdata.y);
+ xaxes[i].setValue(chartdata.x);
+ yaxescolorcombos[i].setValue(chartdata.yaxiscolorcombo);
+ yaxesfillchecks[i].setValue(chartdata.yaxisfillcheck);
+
+ if (chartdata.yaxisstatistics && chartdata.yaxisstatistics !== "") {
+ yaxesstatistics[i].setValue(chartdata.yaxisstatistics);
+ } else {
+ yaxesstatistics[i].setValue("none");
+ }
+ i++;
+ } else {
+ var axisdevice = "y" + (i + 1) + "device",
+ axisname = "y" + (i + 1) + "axis",
+ axiscolorcombo = axisname + "colorcombo",
+ axisfillcheck = axisname + "fillcheck",
+ axisstatistics = axisname + "statistics";
+
+ eval('devices[i].setValue(chartdata.' + axisdevice + ')');
+ yaxes[i].getStore().getProxy().url = '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+""+""+' + eval('chartdata.' + axisdevice) + '+getreadings&XHR=1';
+ yaxes[i].setDisabled(false);
+ xaxes[i].setValue(chartdata.x);
+ eval('yaxes[i].setValue(chartdata.' + axisname + ')');
+ eval('yaxescolorcombos[i].setValue(chartdata.' + axiscolorcombo + ')');
+ eval('yaxesfillchecks[i].setValue(chartdata.' + axisfillcheck + ')');
+
+ if (eval('chartdata.' + axisstatistics) && eval('chartdata.' + axisstatistics) !== "") {
+ eval('yaxesstatistics[i].setValue(chartdata.' + axisstatistics + ')');
+ } else {
+ yaxesstatistics[i].setValue("none");
+ }
+ i++;
+ }
+ });
+
+ //handling baselines
+ var basesstart = Ext.ComponentQuery.query('numberfield[name=basestart]'),
+ baselinecount = 0,
+ i = 1;
+
+ Ext.iterate(chartdata, function(key, value) {
+ if (key.indexOf("base") >= 0 && key.indexOf("start") >= 0 && value != "null") {
+ baselinecount++;
+ }
+ });
+
+ var renderedbaselines = basesstart.length;
+ while (renderedbaselines < baselinecount) {
+ Ext.ComponentQuery.query('linechartpanel')[0].createNewBaseLineFields();
+ renderedbaselines++;
}
- 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();
- }
+ var i = 0,
+ j = 1;
+ basesstart = Ext.ComponentQuery.query('numberfield[name=basestart]'),
+ basesend = Ext.ComponentQuery.query('numberfield[name=baseend]'),
+ basescolors = Ext.ComponentQuery.query('combobox[name=baselinecolorcombo]'),
+ basesfills = Ext.ComponentQuery.query('checkboxfield[name=baselinefillcheck]');
+
+ Ext.each(basesstart, function(base) {
+ var start = parseFloat(eval('chartdata.base' + j + 'start'), 10);
+ var end = parseFloat(eval('chartdata.base' + j + 'end'), 10);
+
+ basesstart[i].setValue(start);
+ basesend[i].setValue(end);
+ basescolors[i].setValue(eval('chartdata.base' + j + 'color'));
+ basesfills[i].setValue(eval('chartdata.base' + j + 'fill'));
+ i++;
+ j++;
+ });
//convert time
var dynamicradio = Ext.ComponentQuery.query('radiogroup[name=dynamictime]')[0],
@@ -1136,12 +968,6 @@ Ext.define('FHEM.controller.ChartController', {
genbox.setValue(false);
}
- if (chartdata.yaxisstatistics && chartdata.yaxisstatistics !== "") {
- this.getYaxisstatisticscombo().setValue(chartdata.yaxisstatistics);
- } else {
- this.getYaxisstatisticscombo().setValue("none");
- }
-
this.requestChartData();
this.getLinechartpanel().setTitle(name);
} else {
@@ -1152,13 +978,13 @@ Ext.define('FHEM.controller.ChartController', {
},
/**
- * Delete a chart by its name from the database
+ * Delete a chart by its id from the database
*/
deletechart: function(grid, td, cellIndex, par, evt, record) {
var me = this,
chartid = record.get('ID'),
- view = this.getLinechartview();
+ chart = this.getChart();
if (Ext.isDefined(chartid) && chartid !== "") {
@@ -1179,16 +1005,16 @@ Ext.define('FHEM.controller.ChartController', {
var url = '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+""+""+""+deletechart+""+""+' + chartid + '&XHR=1';
- view.setLoading(true);
+ chart.setLoading(true);
Ext.Ajax.request({
method: 'GET',
disableCaching: false,
url: url,
success: function(response){
- view.setLoading(false);
+ chart.setLoading(false);
var json = Ext.decode(response.responseText);
- if (json && json.success === "true") {
+ if (json && json.success === "true" || json.data && json.data.length === 0) {
me.getSavedchartsgrid().getStore().load();
Ext.Msg.alert("Success", "Chart successfully deleted!");
} else if (json && json.msg) {
@@ -1199,7 +1025,7 @@ Ext.define('FHEM.controller.ChartController', {
btn.up().up().destroy();
},
failure: function() {
- view.setLoading(false);
+ chart.setLoading(false);
if (json && json.msg) {
Ext.Msg.alert("Error", "The Chart could not be deleted, error Message is:
" + json.msg);
} else {
diff --git a/fhem/www/frontend/www/frontend/app/controller/MainController.js b/fhem/www/frontend/www/frontend/app/controller/MainController.js
index f50037e8e..253a3e860 100644
--- a/fhem/www/frontend/www/frontend/app/controller/MainController.js
+++ b/fhem/www/frontend/www/frontend/app/controller/MainController.js
@@ -27,8 +27,11 @@ Ext.define('FHEM.controller.MainController', {
{
selector: 'textfield[name=commandfield]',
ref: 'commandfield' //this.getCommandfield()
+ },
+ {
+ selector: 'grid[name=savedchartsgrid]',
+ ref: 'savedchartsgrid' //this.getSavedchartsgrid()
}
-
],
/**
@@ -68,12 +71,26 @@ Ext.define('FHEM.controller.MainController', {
},
/**
- * load the FHEM devices and state on viewport render completion
+ * fade-in viewport, load the FHEM devices and state on viewport render completion
*/
viewportRendered: function() {
var me = this;
+ me.getMainviewport().show();
+ me.getMainviewport().getEl().setOpacity(0);
+ me.getMainviewport().getEl().animate({
+ opacity: 1,
+ easing: 'easeIn',
+ duration: 500,
+ remove: false
+ });
+
+ //load the saved charts store with configured dblog name
+ var store = this.getSavedchartsgrid().getStore();
+ store.getProxy().url = '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+""+""+""+getcharts&XHR=1';
+ store.load();
+
if (Ext.isDefined(FHEM.version)) {
var sp = this.getStatustextfield();
sp.setText(FHEM.version + "; Frontend Version: 0.4 - 2013-03-23");
@@ -335,24 +352,53 @@ Ext.define('FHEM.controller.MainController', {
title: title,
region: 'center',
layout: 'fit',
- record: record
+ record: record,
+ hidden: true
};
this.destroyCenterPanels();
this.getMainviewport().add(panel);
+
+ var createdpanel = this.getMainviewport().down('devicepanel');
+
+ createdpanel.getEl().setOpacity(0);
+ createdpanel.show();
+
+ createdpanel.getEl().animate({
+ opacity: 1,
+ easing: 'easeIn',
+ duration: 500,
+ remove: false
+ });
+
},
/**
*
*/
showLineChartPanel: function() {
+
var panel = {
xtype: 'linechartpanel',
name: 'linechartpanel',
region: 'center',
- layout: 'fit'
+ layout: 'fit',
+ hidden: true
};
this.destroyCenterPanels();
this.getMainviewport().add(panel);
+
+ var createdpanel = this.getMainviewport().down('linechartpanel');
+
+ createdpanel.getEl().setOpacity(0);
+ createdpanel.show();
+
+ createdpanel.getEl().animate({
+ opacity: 1,
+ easing: 'easeIn',
+ duration: 500,
+ remove: false
+ });
+
},
/**
@@ -363,10 +409,23 @@ Ext.define('FHEM.controller.MainController', {
xtype: 'tabledatagridpanel',
name: 'tabledatagridpanel',
region: 'center',
- layout: 'fit'
+ layout: 'fit',
+ hidden: true
};
this.destroyCenterPanels();
this.getMainviewport().add(panel);
+
+ var createdpanel = this.getMainviewport().down('tabledatagridpanel');
+
+ createdpanel.getEl().setOpacity(0);
+ createdpanel.show();
+
+ createdpanel.getEl().animate({
+ opacity: 1,
+ easing: 'easeIn',
+ duration: 500,
+ remove: false
+ });
}
});
\ No newline at end of file
diff --git a/fhem/www/frontend/www/frontend/app/model/ChartModel.js b/fhem/www/frontend/www/frontend/app/model/ChartModel.js
index f0f322cda..bfdf36811 100644
--- a/fhem/www/frontend/www/frontend/app/model/ChartModel.js
+++ b/fhem/www/frontend/www/frontend/app/model/ChartModel.js
@@ -20,47 +20,408 @@ Ext.define('FHEM.model.ChartModel', {
type: 'date',
dateFormat: "Y-m-d H:i:s"
},
+ {
+ name: 'TIMESTAMP4',
+ type: 'date',
+ dateFormat: "Y-m-d H:i:s"
+ },
+ {
+ name: 'TIMESTAMP5',
+ type: 'date',
+ dateFormat: "Y-m-d H:i:s"
+ },
+ {
+ name: 'TIMESTAMP6',
+ type: 'date',
+ dateFormat: "Y-m-d H:i:s"
+ },
+ {
+ name: 'TIMESTAMP7',
+ type: 'date',
+ dateFormat: "Y-m-d H:i:s"
+ },
+ {
+ name: 'TIMESTAMP8',
+ type: 'date',
+ dateFormat: "Y-m-d H:i:s"
+ },
+ {
+ name: 'TIMESTAMP9',
+ type: 'date',
+ dateFormat: "Y-m-d H:i:s"
+ },
{
name: 'VALUE',
type: 'float',
convert: function(v,record) {
- return record.parseToNumber(v, 1, record);
+ return record.parseToNumber(v);
}
},{
name: 'VALUE2',
type: 'float',
convert: function(v,record) {
- return record.parseToNumber(v, 2, record);
+ return record.parseToNumber(v);
}
},{
name: 'VALUE3',
type: 'float',
convert: function(v,record) {
- return record.parseToNumber(v, 3, record);
+ return record.parseToNumber(v);
+ }
+ },{
+ name: 'VALUE4',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },{
+ name: 'VALUE5',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },{
+ name: 'VALUE6',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },{
+ name: 'VALUE7',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },{
+ name: 'VALUE8',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },{
+ name: 'VALUE9',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
}
},
{
name: 'SUM',
- type: 'float'
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'SUM2',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'SUM3',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'SUM4',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'SUM5',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'SUM6',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'SUM7',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'SUM8',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'SUM9',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
},
{
name: 'AVG',
- type: 'float'
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'AVG2',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'AVG3',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'AVG4',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'AVG5',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'AVG6',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'AVG7',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'AVG8',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'AVG9',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
},
{
name: 'MIN',
- type: 'float'
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'MIN2',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'MIN3',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'MIN4',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'MIN5',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'MIN6',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'MIN7',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'MIN8',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'MIN9',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
},
{
name: 'MAX',
- type: 'float'
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'MAX2',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'MAX3',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'MAX4',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'MAX5',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'MAX6',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'MAX7',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'MAX8',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'MAX9',
+ type: 'float',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
},
{
name: 'COUNT',
- type: 'integer'
+ type: 'integer',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'COUNT2',
+ type: 'integer',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'COUNT3',
+ type: 'integer',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'COUNT4',
+ type: 'integer',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'COUNT5',
+ type: 'integer',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'COUNT6',
+ type: 'integer',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'COUNT7',
+ type: 'integer',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'COUNT8',
+ type: 'integer',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
+ },
+ {
+ name: 'COUNT9',
+ type: 'integer',
+ convert: function(v,record) {
+ return record.parseToNumber(v);
+ }
}
],
- parseToNumber: function(value, idx, rec) {
+ parseToNumber: function(value) {
if (value === "") {
//we will return nothing
diff --git a/fhem/www/frontend/www/frontend/app/store/DeviceStore.js b/fhem/www/frontend/www/frontend/app/store/DeviceStore.js
index 41b223d7d..9c8b9b583 100644
--- a/fhem/www/frontend/www/frontend/app/store/DeviceStore.js
+++ b/fhem/www/frontend/www/frontend/app/store/DeviceStore.js
@@ -4,10 +4,11 @@
Ext.define('FHEM.store.DeviceStore', {
extend: 'Ext.data.Store',
model: 'FHEM.model.DeviceModel',
+ id: 'devicestore',
proxy: {
type: 'ajax',
method: 'POST',
- url: '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+""+""+""+getdevices&XHR=1',
+ url: '', //gets set by controller
reader: {
type: 'json',
root: 'data',
diff --git a/fhem/www/frontend/www/frontend/app/store/SavedChartsStore.js b/fhem/www/frontend/www/frontend/app/store/SavedChartsStore.js
index df0936bf7..11b4f8c76 100644
--- a/fhem/www/frontend/www/frontend/app/store/SavedChartsStore.js
+++ b/fhem/www/frontend/www/frontend/app/store/SavedChartsStore.js
@@ -7,12 +7,12 @@ Ext.define('FHEM.store.SavedChartsStore', {
proxy: {
type: 'ajax',
method: 'POST',
- url: '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+""+""+""+getcharts&XHR=1',
+ url: '', //gets set by controller
reader: {
type: 'json',
root: 'data',
totalProperty: 'totalCount'
}
},
- autoLoad: true
+ autoLoad: false
});
diff --git a/fhem/www/frontend/www/frontend/app/view/DevicePanel.js b/fhem/www/frontend/www/frontend/app/view/DevicePanel.js
index ad3106a51..690667433 100644
--- a/fhem/www/frontend/www/frontend/app/view/DevicePanel.js
+++ b/fhem/www/frontend/www/frontend/app/view/DevicePanel.js
@@ -5,6 +5,12 @@ Ext.define('FHEM.view.DevicePanel', {
extend: 'Ext.panel.Panel',
alias : 'widget.devicepanel',
+ requires: [
+ 'Ext.form.FieldSet',
+ 'Ext.layout.container.Column',
+ 'Ext.form.field.ComboBox'
+ ],
+
/**
*
*/
diff --git a/fhem/www/frontend/www/frontend/app/view/LineChartPanel.js b/fhem/www/frontend/www/frontend/app/view/LineChartPanel.js
index 8ce896ac3..1d330cec5 100644
--- a/fhem/www/frontend/www/frontend/app/view/LineChartPanel.js
+++ b/fhem/www/frontend/www/frontend/app/view/LineChartPanel.js
@@ -5,95 +5,62 @@ Ext.define('FHEM.view.LineChartPanel', {
extend: 'Ext.panel.Panel',
alias : 'widget.linechartpanel',
requires: [
- 'FHEM.view.LineChartView',
- 'FHEM.store.ChartStore'
+ 'FHEM.store.ChartStore',
+ 'FHEM.store.DeviceStore',
+ 'FHEM.store.ReadingsStore',
+ 'Ext.form.Panel',
+ 'Ext.form.field.Radio',
+ 'Ext.form.field.Date',
+ 'Ext.form.RadioGroup',
+ 'Ext.chart.Chart',
+ 'Ext.chart.axis.Numeric',
+ 'Ext.chart.axis.Time',
+ 'Ext.chart.series.Line'
],
+ /**
+ * generating getters and setters
+ */
+ config: {
+ /**
+ * last max value of Y axis before zoom was applied
+ */
+ lastYmax: null,
+
+ /**
+ * last min value of Y axis before zoom was applied
+ */
+ lastYmin: null,
+
+ /**
+ * last max value of Y axis before zoom was applied
+ */
+ lastXmax: null,
+
+ /**
+ * last min value of Y axis before zoom was applied
+ */
+ lastXmin: null
+ },
+
+ artifactSeries: [],
+
+ /**
+ * the title
+ */
title: 'Line Chart',
/**
* init function
*/
- initComponent: function() {
+ initComponent: function(cfg) {
var me = this;
- // set up the local db columnname store
- // as these columns are fixed, we dont have to request them
- me.comboAxesStore = Ext.create('Ext.data.Store', {
- fields: ['name'],
- data : [
- {'name':'TIMESTAMP'},
- {'name':'DEVICE'},
- {'name':'TYPE'},
- {'name':'EVENT'},
- {'name':'READING'},
- {'name':'VALUE'},
- {'name':'UNIT'}
- ]
- });
-
- 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, recs, success, operation) {
- if(!success) {
- Ext.Msg.alert("Error", "Something went wrong. Store Items: " + store.getCount() + ", loaded Items: " + recs.length + ", Reader rawrecords: " + store.getProxy().getReader().rawData.data.length + ", proxyURL: " + store.getProxy().url);
- }
- });
-
- me.comboReadingsStore = Ext.create('FHEM.store.ReadingsStore');
- me.comboReadings2Store = Ext.create('FHEM.store.ReadingsStore');
- me.comboReadings3Store = Ext.create('FHEM.store.ReadingsStore');
-
- me.comboStatisticsStore = Ext.create('Ext.data.Store', {
- fields: ['name', 'value'],
- data : [
- {'name':'None','value':'none'},
- {'name':'Hour Sum', 'value':'hoursum'},
- {'name':'Hour Average', 'value':'houraverage'},
- {'name':'Hour Min','value':'hourmin'},
- {'name':'Hour Max','value':'hourmax'},
- {'name':'Hour Count','value':'hourcount'},
- {'name':'Day Sum', 'value':'daysum'},
- {'name':'Day Average', 'value':'dayaverage'},
- {'name':'Day Min','value':'daymin'},
- {'name':'Day Max','value':'daymax'},
- {'name':'Day Count','value':'daycount'},
- {'name':'Week Sum', 'value':'weeksum'},
- {'name':'Week Average', 'value':'weekaverage'},
- {'name':'Week Min','value':'weekmin'},
- {'name':'Week Max','value':'weekmax'},
- {'name':'Week Count','value':'weekcount'},
- {'name':'Month Sum', 'value':'monthsum'},
- {'name':'Month Average', 'value':'monthaverage'},
- {'name':'Month Min','value':'monthmin'},
- {'name':'Month Max','value':'monthmax'},
- {'name':'Month Count','value':'monthcount'},
- {'name':'Year Sum', 'value':'yearsum'},
- {'name':'Year Average', 'value':'yearaverage'},
- {'name':'Year Min','value':'yearmin'},
- {'name':'Year Max','value':'yearmax'},
- {'name':'Year Count','value':'yearcount'}
- ]
- });
-
var chartSettingPanel = Ext.create('Ext.form.Panel', {
title: 'Chart Settings - Click me to edit',
name: 'chartformpanel',
- maxHeight: 285,
+ maxHeight: 230,
autoScroll: true,
collapsible: true,
titleCollapse: true,
@@ -106,320 +73,11 @@ Ext.define('FHEM.view.LineChartPanel', {
xtype: 'fieldset',
layout: 'column',
title: 'Select data',
+ name: 'axesfieldset',
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: 'yaxisstatisticscombo',
- fieldLabel: 'Statistics',
- labelWidth: 70,
- inputWidth: 120,
- store: me.comboStatisticsStore,
- displayField: 'name',
- valueField: 'value',
- value: me.comboStatisticsStore.getAt(0)
- },
- {
- 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);
- }
-
- }
- }
- ]
+ items: [] //get filled in own function
},
{
xtype: 'fieldset',
@@ -487,7 +145,7 @@ Ext.define('FHEM.view.LineChartPanel', {
xtype: 'fieldset',
layout: 'column',
defaults: {
- margin: '0 0 0 10'
+ margin: '10 10 10 10'
},
items: [
{
@@ -508,18 +166,6 @@ Ext.define('FHEM.view.LineChartPanel', {
text: 'Reset Fields',
name: 'resetchartform'
},
- {
- xtype: 'button',
- width: 100,
- text: 'Step back',
- name: 'stepback'
- },
- {
- xtype: 'button',
- width: 100,
- text: 'Step forward',
- name: 'stepforward'
- },
{
xtype: 'radio',
width: 160,
@@ -574,6 +220,11 @@ Ext.define('FHEM.view.LineChartPanel', {
]
});
+ //add the first yaxis line
+ me.createNewYAxis();
+
+ //creating the chart
+ var chartstore = Ext.create('FHEM.store.ChartStore');
var linechartview = Ext.create('Ext.panel.Panel', {
title: 'Chart',
autoScroll: true,
@@ -581,14 +232,128 @@ Ext.define('FHEM.view.LineChartPanel', {
titleCollapse: true,
items: [
{
- xtype: 'linechartview'
+ xtype: 'toolbar',
+ items: [
+ {
+ xtype: 'button',
+ width: 100,
+ text: 'Step back',
+ name: 'stepback'
+ },
+ {
+ xtype: 'button',
+ width: 100,
+ text: 'Step forward',
+ name: 'stepforward'
+ },
+ {
+ xtype: 'button',
+ width: 100,
+ text: 'Reset Zoom',
+ name: 'resetzoom',
+ scope: me,
+ handler: function(btn) {
+ var chart = me.down('chart');
+ chart.restoreZoom();
+ chart.axes.get(0).minimum = me.getLastYmin();
+ chart.axes.get(0).maximum = me.getLastYmax();
+ chart.axes.get(1).minimum = me.getLastXmin();
+ chart.axes.get(1).maximum = me.getLastXmax();
+
+ chart.redraw();
+ //helper to reshow the hidden items after zooming back out
+ if (me.artifactSeries && me.artifactSeries.length > 0) {
+ Ext.each(me.artifactSeries, function(serie) {
+ serie.showAll();
+ Ext.each(serie.group.items, function(item) {
+ if (item.type === "circle") {
+ item.show();
+ item.redraw();
+ }
+ });
+ });
+ me.artifactSeries = [];
+ }
+ }
+ }
+ ]
+ },
+ {
+ xtype: 'chart',
+ legend: {
+ position: 'right'
+ },
+ axes: [
+ {
+ type : 'Numeric',
+ name : 'yaxe',
+ position : 'left',
+ fields : [ 'VALUE', 'VALUE2' ],
+ 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",
+ title : 'Time'
+ }
+ ],
+ animate: true,
+ store: chartstore,
+ enableMask: true,
+ mask: true,//'vertical',//true, //'horizontal',
+ listeners: {
+ mousedown: function(evt) {
+ // fix for firefox, not dragging images
+ evt.preventDefault();
+ },
+ select: {
+ fn: function(chart, selection, evt) {
+ delete chart.axes.get(1).fromDate;
+ delete chart.axes.get(1).toDate;
+ if (Ext.isEmpty(me.getLastYmax())) {
+ me.setLastYmax(chart.axes.get(0).maximum);
+ me.setLastYmin(chart.axes.get(0).minimum);
+ }
+ if (Ext.isEmpty(me.getLastXmax())) {
+ me.setLastXmax(chart.axes.get(1).maximum);
+ me.setLastXmin(chart.axes.get(1).minimum);
+ }
+ chart.axes.get(1).processView();
+ chart.redraw();
+ chart.setZoom(selection);
+ chart.mask.hide();
+ //helper hiding series and items which are out of scope
+ Ext.each(chart.series.items, function(serie) {
+ if (serie.items.length === 0) {
+ me.artifactSeries.push(serie);
+ Ext.each(serie.group.items, function(item) {
+ item.hide();
+ item.redraw();
+ });
+ serie.hideAll();
+ }
+ });
+ }
+ }
+ }
}
]
});
me.items = [
- chartSettingPanel,
- linechartview
+ chartSettingPanel,
+ linechartview
];
me.callParent(arguments);
@@ -602,12 +367,251 @@ Ext.define('FHEM.view.LineChartPanel', {
*/
layoutChart: function() {
var lcp = Ext.ComponentQuery.query('linechartpanel')[0];
- var lcv = Ext.ComponentQuery.query('linechartview')[0];
+ var lcv = Ext.ComponentQuery.query('chart')[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);
- }
+ },
+ /**
+ * create a new fieldset for a new chart y axis
+ */
+ createNewYAxis: function() {
+
+ var me = this;
+
+ var components =
+ {
+ xtype: 'fieldset',
+ name: 'singlerowfieldset',
+ layout: 'column',
+ defaults: {
+ margin: '5 5 5 5'
+ },
+ items:
+ [
+ {
+ xtype: 'combobox',
+ name: 'devicecombo',
+ fieldLabel: 'Select Device',
+ labelWidth: 90,
+ store: Ext.create('FHEM.store.DeviceStore', {
+ proxy: {
+ type: 'ajax',
+ method: 'POST',
+ url: '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+""+""+""+getdevices&XHR=1',
+ reader: {
+ type: 'json',
+ root: 'data',
+ totalProperty: 'totalCount'
+ }
+ },
+ autoLoad: true
+ }),
+ displayField: 'DEVICE',
+ valueField: 'DEVICE',
+ listeners: {
+ select: function(combo) {
+ var device = combo.getValue(),
+ readingscombo = combo.up().down('combobox[name=yaxiscombo]'),
+ readingsstore = readingscombo.getStore(),
+ readingsproxy = readingsstore.getProxy();
+
+ readingsproxy.url = '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+""+""+' + device + '+getreadings&XHR=1';
+ readingsstore.load();
+ readingscombo.setDisabled(false);
+ }
+ }
+ },
+ {
+ xtype: 'combobox',
+ name: 'xaxiscombo',
+ fieldLabel: 'Select X Axis',
+ labelWidth: 90,
+ inputWidth: 100,
+ store: Ext.create('Ext.data.Store', {
+ fields: ['name'],
+ data : [
+ {'name':'TIMESTAMP'},
+ {'name':'DEVICE'},
+ {'name':'TYPE'},
+ {'name':'EVENT'},
+ {'name':'READING'},
+ {'name':'VALUE'},
+ {'name':'UNIT'}
+ ]
+ }),
+ displayField: 'name',
+ valueField: 'name'
+ },
+ {
+ xtype: 'combobox',
+ name: 'yaxiscombo',
+ fieldLabel: 'Select Y-Axis',
+ disabled: true,
+ labelWidth: 90,
+ inputWidth: 110,
+ store: Ext.create('FHEM.store.ReadingsStore', {
+ proxy: {
+ type: 'ajax',
+ method: 'POST',
+ url: '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+""+""+-+getreadings&XHR=1',
+ reader: {
+ type: 'json',
+ root: 'data',
+ totalProperty: 'totalCount'
+ }
+ },
+ autoLoad: false
+ }),
+ displayField: 'READING',
+ valueField: 'READING'
+ },
+ {
+ xtype: 'combobox',
+ name: 'yaxiscolorcombo',
+ fieldLabel: 'Y-Color',
+ labelWidth: 50,
+ inputWidth: 70,
+ store: 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'}
+ ]
+ }),
+ displayField: 'name',
+ valueField: 'value',
+ value: '#2F40FA'
+ },
+ {
+ xtype: 'checkboxfield',
+ name: 'yaxisfillcheck',
+ boxLabel: 'Fill'
+ },
+ {
+ xtype: 'combobox',
+ name: 'yaxisstatisticscombo',
+ fieldLabel: 'Statistics',
+ labelWidth: 70,
+ inputWidth: 120,
+ store: Ext.create('Ext.data.Store', {
+ fields: ['name', 'value'],
+ data : [
+ {'name':'None','value':'none'},
+ {'name':'Hour Sum', 'value':'hoursum'},
+ {'name':'Hour Average', 'value':'houraverage'},
+ {'name':'Hour Min','value':'hourmin'},
+ {'name':'Hour Max','value':'hourmax'},
+ {'name':'Hour Count','value':'hourcount'},
+ {'name':'Day Sum', 'value':'daysum'},
+ {'name':'Day Average', 'value':'dayaverage'},
+ {'name':'Day Min','value':'daymin'},
+ {'name':'Day Max','value':'daymax'},
+ {'name':'Day Count','value':'daycount'},
+ {'name':'Week Sum', 'value':'weeksum'},
+ {'name':'Week Average', 'value':'weekaverage'},
+ {'name':'Week Min','value':'weekmin'},
+ {'name':'Week Max','value':'weekmax'},
+ {'name':'Week Count','value':'weekcount'},
+ {'name':'Month Sum', 'value':'monthsum'},
+ {'name':'Month Average', 'value':'monthaverage'},
+ {'name':'Month Min','value':'monthmin'},
+ {'name':'Month Max','value':'monthmax'},
+ {'name':'Month Count','value':'monthcount'},
+ {'name':'Year Sum', 'value':'yearsum'},
+ {'name':'Year Average', 'value':'yearaverage'},
+ {'name':'Year Min','value':'yearmin'},
+ {'name':'Year Max','value':'yearmax'},
+ {'name':'Year Count','value':'yearcount'}
+ ]
+ }),
+ displayField: 'name',
+ valueField: 'value',
+ value: 'none'
+ },
+ {
+ xtype: 'button',
+ width: 110,
+ text: 'Add another Y-Axis',
+ name: 'addyaxisbtn',
+ handler: function(btn) {
+ me.createNewYAxis();
+ }
+ },
+ {
+ xtype: 'button',
+ width: 110,
+ text: 'Add Baseline',
+ name: 'addbaselinebtn',
+ handler: function(btn) {
+ me.createNewBaseLineFields(btn);
+ }
+ }
+ ]
+ };
+
+ Ext.ComponentQuery.query('fieldset[name=axesfieldset]')[0].add(components);
+
+ },
+
+ /**
+ *
+ */
+ createNewBaseLineFields: function(btn) {
+ var itemsToAdd = [
+ {
+ xtype: 'numberfield',
+ fieldLabel: 'Startvalue',
+ name: 'basestart',
+ allowBlank: false,
+ labelWidth: 60,
+ width: 120
+ },
+ {
+ xtype: 'numberfield',
+ fieldLabel: 'Endvalue',
+ name: 'baseend',
+ allowBlank: false,
+ labelWidth: 60,
+ width: 120
+ },
+ {
+ xtype: 'combobox',
+ name: 'baselinecolorcombo',
+ fieldLabel: 'Baseline Color',
+ labelWidth: 100,
+ inputWidth: 70,
+ store: 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'}
+ ]
+ }),
+ displayField: 'name',
+ valueField: 'value',
+ value: '#46E01B'
+ },
+ {
+ xtype: 'checkboxfield',
+ name: 'baselinefillcheck',
+ boxLabel: 'Fill'
+ }
+ ];
+ if (Ext.isDefined(btn)) {
+ btn.up().add(itemsToAdd);
+ } else {
+ this.down('fieldset[name=singlerowfieldset]').add(itemsToAdd);
+ }
+
+ }
});
diff --git a/fhem/www/frontend/www/frontend/app/view/LineChartView.js b/fhem/www/frontend/www/frontend/app/view/LineChartView.js
deleted file mode 100644
index 06d2ca2b1..000000000
--- a/fhem/www/frontend/www/frontend/app/view/LineChartView.js
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * The View for the Line Charts
- */
-Ext.define('FHEM.view.LineChartView', {
- extend : 'Ext.chart.Chart',
- alias : 'widget.linechartview',
- xtype : 'chart',
- requires : [ 'FHEM.store.ChartStore' ],
- animate : true,
- 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', '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'
- } ];
-
- me.series = null;
-
- me.callParent(arguments);
-
- }
-
-});
\ No newline at end of file
diff --git a/fhem/www/frontend/www/frontend/app/view/TableDataGridPanel.js b/fhem/www/frontend/www/frontend/app/view/TableDataGridPanel.js
index 90538b1ac..5acbce5a7 100644
--- a/fhem/www/frontend/www/frontend/app/view/TableDataGridPanel.js
+++ b/fhem/www/frontend/www/frontend/app/view/TableDataGridPanel.js
@@ -4,7 +4,6 @@
Ext.define('FHEM.view.TableDataGridPanel', {
extend: 'Ext.panel.Panel',
alias : 'widget.tabledatagridpanel',
- //xtype : 'gridpanel',
requires: [
'FHEM.store.TableDataStore'
],
diff --git a/fhem/www/frontend/www/frontend/app/view/Viewport.js b/fhem/www/frontend/www/frontend/app/view/Viewport.js
index 4c72d50db..03efba4f5 100644
--- a/fhem/www/frontend/www/frontend/app/view/Viewport.js
+++ b/fhem/www/frontend/www/frontend/app/view/Viewport.js
@@ -9,7 +9,16 @@ Ext.define('FHEM.view.Viewport', {
requires: [
'FHEM.view.LineChartPanel',
'FHEM.view.TableDataGridPanel',
- 'FHEM.controller.ChartController'
+ 'FHEM.controller.ChartController',
+ 'FHEM.store.SavedChartsStore',
+ 'Ext.layout.container.Border',
+ 'Ext.form.field.Text',
+ 'Ext.layout.container.Accordion',
+ 'Ext.tree.Panel',
+ 'Ext.grid.Panel',
+ 'Ext.grid.Column',
+ 'Ext.grid.column.Action',
+ 'Ext.draw.Text'
],
initComponent: function() {
@@ -133,7 +142,7 @@ Ext.define('FHEM.view.Viewport', {
name: 'savedchartsactioncolumn',
width:'15%',
items: [{
- icon: 'lib/ext-4.1.1a/images/gray/dd/drop-no.gif',
+ icon: 'lib/ext-4.2.0.663/images/dd/drop-no.gif',
tooltip: 'Delete'
}]
}
diff --git a/fhem/www/frontend/www/frontend/index.html b/fhem/www/frontend/www/frontend/index.html
index f7a212d87..9d6f14922 100644
--- a/fhem/www/frontend/www/frontend/index.html
+++ b/fhem/www/frontend/www/frontend/index.html
@@ -5,11 +5,25 @@
+
+