From 8997d5b1ff1c3ec21da052be6134b50dc3ea8636 Mon Sep 17 00:00:00 2001 From: Mark Schouten Date: Fri, 5 Aug 2016 13:20:31 +0200 Subject: [PATCH] Squashed 'jtable/' content from commit 1a6e6ab git-subtree-dir: jtable git-subtree-split: 1a6e6ab44e57f1cea35a1b7168a8c8ef319d5a81 --- README.md | 35 + bower.json | 35 + dev/build/JTableBuilder-source.zip | Bin 0 -> 2552 bytes dev/build/README.md | 6 + dev/build/jTableBuilder-build.bat | 1 + dev/build/jTableBuilder.exe | Bin 0 -> 5632 bytes dev/jquery.jtable.build.txt | 13 + dev/jquery.jtable.core.js | 1290 +++++ dev/jquery.jtable.creation.js | 348 ++ dev/jquery.jtable.deletion.js | 432 ++ dev/jquery.jtable.dynamiccolumns.js | 461 ++ dev/jquery.jtable.editing.js | 452 ++ dev/jquery.jtable.forms.js | 483 ++ dev/jquery.jtable.header.txt | 28 + dev/jquery.jtable.masterchild.js | 171 + dev/jquery.jtable.paging.js | 595 ++ dev/jquery.jtable.selecting.js | 382 ++ dev/jquery.jtable.sorting.js | 202 + dev/jquery.jtable.utils.js | 159 + jTable.jquery.json | 41 + .../jquery.jtable.aspnetpagemethods.js | 150 + .../jquery.jtable.aspnetpagemethods.min.js | 27 + lib/external/json2.js | 486 ++ lib/external/json2.min.js | 8 + lib/jquery.jtable.js | 5021 +++++++++++++++++ lib/jquery.jtable.min.js | 157 + lib/localization/jquery.jtable.ar.js | 30 + lib/localization/jquery.jtable.bd.js | 30 + lib/localization/jquery.jtable.ca.js | 30 + lib/localization/jquery.jtable.cz.js | 30 + lib/localization/jquery.jtable.de.js | 30 + lib/localization/jquery.jtable.el.js | 29 + lib/localization/jquery.jtable.es.js | 30 + lib/localization/jquery.jtable.fa.js | 30 + lib/localization/jquery.jtable.fr.js | 30 + lib/localization/jquery.jtable.hr.js | 30 + lib/localization/jquery.jtable.hu.js | 30 + lib/localization/jquery.jtable.id.js | 31 + lib/localization/jquery.jtable.it.js | 30 + lib/localization/jquery.jtable.kr.js | 30 + lib/localization/jquery.jtable.lt.js | 30 + lib/localization/jquery.jtable.nl-NL.js | 30 + lib/localization/jquery.jtable.no.js | 30 + lib/localization/jquery.jtable.pl.js | 30 + lib/localization/jquery.jtable.pt-BR.js | 30 + lib/localization/jquery.jtable.pt-PT.js | 29 + lib/localization/jquery.jtable.ro.js | 30 + lib/localization/jquery.jtable.ru.js | 31 + lib/localization/jquery.jtable.se.js | 30 + lib/localization/jquery.jtable.tr.js | 30 + lib/localization/jquery.jtable.ua.js | 30 + lib/localization/jquery.jtable.vi.js | 28 + lib/localization/jquery.jtable.zh-CN.js | 30 + lib/themes/basic/close.png | Bin 0 -> 3350 bytes lib/themes/basic/column-asc.png | Bin 0 -> 362 bytes lib/themes/basic/column-desc.png | Bin 0 -> 349 bytes lib/themes/basic/column-sortable.png | Bin 0 -> 347 bytes lib/themes/basic/delete.png | Bin 0 -> 150 bytes lib/themes/basic/edit.png | Bin 0 -> 590 bytes lib/themes/basic/jtable_basic.css | 282 + lib/themes/basic/jtable_basic.less | 83 + lib/themes/basic/jtable_basic.min.css | 1 + lib/themes/jqueryui/add.png | Bin 0 -> 482 bytes lib/themes/jqueryui/bg-thead.png | Bin 0 -> 2811 bytes lib/themes/jqueryui/close.png | Bin 0 -> 1217 bytes lib/themes/jqueryui/column-asc.png | Bin 0 -> 362 bytes lib/themes/jqueryui/column-desc.png | Bin 0 -> 349 bytes lib/themes/jqueryui/column-sortable.png | Bin 0 -> 347 bytes lib/themes/jqueryui/delete.png | Bin 0 -> 150 bytes lib/themes/jqueryui/edit.png | Bin 0 -> 590 bytes lib/themes/jqueryui/jtable_jqueryui.css | 398 ++ lib/themes/jqueryui/jtable_jqueryui.less | 296 + lib/themes/jqueryui/jtable_jqueryui.min.css | 1 + lib/themes/jqueryui/loading.gif | Bin 0 -> 723 bytes lib/themes/jtable_theme_base.less | 524 ++ lib/themes/lightcolor/add.png | Bin 0 -> 482 bytes lib/themes/lightcolor/bg-thead.png | Bin 0 -> 2811 bytes lib/themes/lightcolor/blue/jtable.css | 521 ++ lib/themes/lightcolor/blue/jtable.less | 90 + lib/themes/lightcolor/blue/jtable.min.css | 1 + lib/themes/lightcolor/blue/loading.gif | Bin 0 -> 723 bytes lib/themes/lightcolor/close.png | Bin 0 -> 1217 bytes lib/themes/lightcolor/column-asc.png | Bin 0 -> 362 bytes lib/themes/lightcolor/column-desc.png | Bin 0 -> 349 bytes lib/themes/lightcolor/column-sortable.png | Bin 0 -> 347 bytes lib/themes/lightcolor/delete.png | Bin 0 -> 150 bytes lib/themes/lightcolor/edit.png | Bin 0 -> 590 bytes lib/themes/lightcolor/gray/jtable.css | 521 ++ lib/themes/lightcolor/gray/jtable.less | 90 + lib/themes/lightcolor/gray/jtable.min.css | 1 + lib/themes/lightcolor/gray/loading.gif | Bin 0 -> 723 bytes lib/themes/lightcolor/green/jtable.css | 521 ++ lib/themes/lightcolor/green/jtable.less | 90 + lib/themes/lightcolor/green/jtable.min.css | 1 + lib/themes/lightcolor/green/loading.gif | Bin 0 -> 723 bytes .../lightcolor/jtable_lightcolor_base.less | 329 ++ lib/themes/lightcolor/orange/jtable.css | 521 ++ lib/themes/lightcolor/orange/jtable.less | 90 + lib/themes/lightcolor/orange/jtable.min.css | 1 + lib/themes/lightcolor/orange/loading.gif | Bin 0 -> 723 bytes lib/themes/lightcolor/red/jtable.css | 521 ++ lib/themes/lightcolor/red/jtable.less | 90 + lib/themes/lightcolor/red/jtable.min.css | 1 + lib/themes/lightcolor/red/loading.gif | Bin 0 -> 723 bytes lib/themes/metro/add.png | Bin 0 -> 482 bytes lib/themes/metro/blue/jtable.css | 495 ++ lib/themes/metro/blue/jtable.less | 11 + lib/themes/metro/blue/jtable.min.css | 1 + lib/themes/metro/blue/loading.gif | Bin 0 -> 404 bytes lib/themes/metro/brown/jtable.css | 495 ++ lib/themes/metro/brown/jtable.less | 11 + lib/themes/metro/brown/jtable.min.css | 1 + lib/themes/metro/brown/loading.gif | Bin 0 -> 404 bytes lib/themes/metro/close.png | Bin 0 -> 3350 bytes lib/themes/metro/column-asc.png | Bin 0 -> 320 bytes lib/themes/metro/column-desc.png | Bin 0 -> 311 bytes lib/themes/metro/column-sortable.png | Bin 0 -> 314 bytes lib/themes/metro/crimson/jtable.css | 495 ++ lib/themes/metro/crimson/jtable.less | 11 + lib/themes/metro/crimson/jtable.min.css | 1 + lib/themes/metro/crimson/loading.gif | Bin 0 -> 404 bytes lib/themes/metro/darkgray/jtable.css | 495 ++ lib/themes/metro/darkgray/jtable.less | 11 + lib/themes/metro/darkgray/jtable.min.css | 1 + lib/themes/metro/darkgray/loading.gif | Bin 0 -> 404 bytes lib/themes/metro/darkorange/jtable.css | 495 ++ lib/themes/metro/darkorange/jtable.less | 11 + lib/themes/metro/darkorange/jtable.min.css | 1 + lib/themes/metro/darkorange/loading.gif | Bin 0 -> 404 bytes lib/themes/metro/delete.png | Bin 0 -> 3167 bytes lib/themes/metro/edit.png | Bin 0 -> 3359 bytes lib/themes/metro/green/jtable.css | 495 ++ lib/themes/metro/green/jtable.less | 11 + lib/themes/metro/green/jtable.min.css | 1 + lib/themes/metro/green/loading.gif | Bin 0 -> 404 bytes lib/themes/metro/jtable_metro_base.css | 48 + lib/themes/metro/jtable_metro_base.less | 439 ++ lib/themes/metro/jtable_metro_base.min.css | 1 + lib/themes/metro/lightgray/jtable.css | 495 ++ lib/themes/metro/lightgray/jtable.less | 11 + lib/themes/metro/lightgray/jtable.min.css | 1 + lib/themes/metro/lightgray/loading.gif | Bin 0 -> 404 bytes lib/themes/metro/pink/jtable.css | 495 ++ lib/themes/metro/pink/jtable.less | 11 + lib/themes/metro/pink/jtable.min.css | 1 + lib/themes/metro/pink/loading.gif | Bin 0 -> 404 bytes lib/themes/metro/purple/jtable.css | 495 ++ lib/themes/metro/purple/jtable.less | 11 + lib/themes/metro/purple/jtable.min.css | 1 + lib/themes/metro/purple/loading.gif | Bin 0 -> 404 bytes lib/themes/metro/red/jtable.css | 495 ++ lib/themes/metro/red/jtable.less | 11 + lib/themes/metro/red/jtable.min.css | 1 + lib/themes/metro/red/loading.gif | Bin 0 -> 404 bytes screenshot.png | Bin 0 -> 42358 bytes 155 files changed, 22323 insertions(+) create mode 100644 README.md create mode 100644 bower.json create mode 100644 dev/build/JTableBuilder-source.zip create mode 100644 dev/build/README.md create mode 100644 dev/build/jTableBuilder-build.bat create mode 100644 dev/build/jTableBuilder.exe create mode 100644 dev/jquery.jtable.build.txt create mode 100644 dev/jquery.jtable.core.js create mode 100644 dev/jquery.jtable.creation.js create mode 100644 dev/jquery.jtable.deletion.js create mode 100644 dev/jquery.jtable.dynamiccolumns.js create mode 100644 dev/jquery.jtable.editing.js create mode 100644 dev/jquery.jtable.forms.js create mode 100644 dev/jquery.jtable.header.txt create mode 100644 dev/jquery.jtable.masterchild.js create mode 100644 dev/jquery.jtable.paging.js create mode 100644 dev/jquery.jtable.selecting.js create mode 100644 dev/jquery.jtable.sorting.js create mode 100644 dev/jquery.jtable.utils.js create mode 100644 jTable.jquery.json create mode 100644 lib/extensions/jquery.jtable.aspnetpagemethods.js create mode 100644 lib/extensions/jquery.jtable.aspnetpagemethods.min.js create mode 100644 lib/external/json2.js create mode 100644 lib/external/json2.min.js create mode 100644 lib/jquery.jtable.js create mode 100644 lib/jquery.jtable.min.js create mode 100644 lib/localization/jquery.jtable.ar.js create mode 100644 lib/localization/jquery.jtable.bd.js create mode 100644 lib/localization/jquery.jtable.ca.js create mode 100644 lib/localization/jquery.jtable.cz.js create mode 100644 lib/localization/jquery.jtable.de.js create mode 100644 lib/localization/jquery.jtable.el.js create mode 100644 lib/localization/jquery.jtable.es.js create mode 100644 lib/localization/jquery.jtable.fa.js create mode 100644 lib/localization/jquery.jtable.fr.js create mode 100644 lib/localization/jquery.jtable.hr.js create mode 100644 lib/localization/jquery.jtable.hu.js create mode 100644 lib/localization/jquery.jtable.id.js create mode 100644 lib/localization/jquery.jtable.it.js create mode 100644 lib/localization/jquery.jtable.kr.js create mode 100644 lib/localization/jquery.jtable.lt.js create mode 100644 lib/localization/jquery.jtable.nl-NL.js create mode 100644 lib/localization/jquery.jtable.no.js create mode 100644 lib/localization/jquery.jtable.pl.js create mode 100644 lib/localization/jquery.jtable.pt-BR.js create mode 100644 lib/localization/jquery.jtable.pt-PT.js create mode 100644 lib/localization/jquery.jtable.ro.js create mode 100644 lib/localization/jquery.jtable.ru.js create mode 100644 lib/localization/jquery.jtable.se.js create mode 100644 lib/localization/jquery.jtable.tr.js create mode 100644 lib/localization/jquery.jtable.ua.js create mode 100644 lib/localization/jquery.jtable.vi.js create mode 100644 lib/localization/jquery.jtable.zh-CN.js create mode 100644 lib/themes/basic/close.png create mode 100644 lib/themes/basic/column-asc.png create mode 100644 lib/themes/basic/column-desc.png create mode 100644 lib/themes/basic/column-sortable.png create mode 100644 lib/themes/basic/delete.png create mode 100644 lib/themes/basic/edit.png create mode 100644 lib/themes/basic/jtable_basic.css create mode 100644 lib/themes/basic/jtable_basic.less create mode 100644 lib/themes/basic/jtable_basic.min.css create mode 100644 lib/themes/jqueryui/add.png create mode 100644 lib/themes/jqueryui/bg-thead.png create mode 100644 lib/themes/jqueryui/close.png create mode 100644 lib/themes/jqueryui/column-asc.png create mode 100644 lib/themes/jqueryui/column-desc.png create mode 100644 lib/themes/jqueryui/column-sortable.png create mode 100644 lib/themes/jqueryui/delete.png create mode 100644 lib/themes/jqueryui/edit.png create mode 100644 lib/themes/jqueryui/jtable_jqueryui.css create mode 100644 lib/themes/jqueryui/jtable_jqueryui.less create mode 100644 lib/themes/jqueryui/jtable_jqueryui.min.css create mode 100644 lib/themes/jqueryui/loading.gif create mode 100644 lib/themes/jtable_theme_base.less create mode 100644 lib/themes/lightcolor/add.png create mode 100644 lib/themes/lightcolor/bg-thead.png create mode 100644 lib/themes/lightcolor/blue/jtable.css create mode 100644 lib/themes/lightcolor/blue/jtable.less create mode 100644 lib/themes/lightcolor/blue/jtable.min.css create mode 100644 lib/themes/lightcolor/blue/loading.gif create mode 100644 lib/themes/lightcolor/close.png create mode 100644 lib/themes/lightcolor/column-asc.png create mode 100644 lib/themes/lightcolor/column-desc.png create mode 100644 lib/themes/lightcolor/column-sortable.png create mode 100644 lib/themes/lightcolor/delete.png create mode 100644 lib/themes/lightcolor/edit.png create mode 100644 lib/themes/lightcolor/gray/jtable.css create mode 100644 lib/themes/lightcolor/gray/jtable.less create mode 100644 lib/themes/lightcolor/gray/jtable.min.css create mode 100644 lib/themes/lightcolor/gray/loading.gif create mode 100644 lib/themes/lightcolor/green/jtable.css create mode 100644 lib/themes/lightcolor/green/jtable.less create mode 100644 lib/themes/lightcolor/green/jtable.min.css create mode 100644 lib/themes/lightcolor/green/loading.gif create mode 100644 lib/themes/lightcolor/jtable_lightcolor_base.less create mode 100644 lib/themes/lightcolor/orange/jtable.css create mode 100644 lib/themes/lightcolor/orange/jtable.less create mode 100644 lib/themes/lightcolor/orange/jtable.min.css create mode 100644 lib/themes/lightcolor/orange/loading.gif create mode 100644 lib/themes/lightcolor/red/jtable.css create mode 100644 lib/themes/lightcolor/red/jtable.less create mode 100644 lib/themes/lightcolor/red/jtable.min.css create mode 100644 lib/themes/lightcolor/red/loading.gif create mode 100644 lib/themes/metro/add.png create mode 100644 lib/themes/metro/blue/jtable.css create mode 100644 lib/themes/metro/blue/jtable.less create mode 100644 lib/themes/metro/blue/jtable.min.css create mode 100644 lib/themes/metro/blue/loading.gif create mode 100644 lib/themes/metro/brown/jtable.css create mode 100644 lib/themes/metro/brown/jtable.less create mode 100644 lib/themes/metro/brown/jtable.min.css create mode 100644 lib/themes/metro/brown/loading.gif create mode 100644 lib/themes/metro/close.png create mode 100644 lib/themes/metro/column-asc.png create mode 100644 lib/themes/metro/column-desc.png create mode 100644 lib/themes/metro/column-sortable.png create mode 100644 lib/themes/metro/crimson/jtable.css create mode 100644 lib/themes/metro/crimson/jtable.less create mode 100644 lib/themes/metro/crimson/jtable.min.css create mode 100644 lib/themes/metro/crimson/loading.gif create mode 100644 lib/themes/metro/darkgray/jtable.css create mode 100644 lib/themes/metro/darkgray/jtable.less create mode 100644 lib/themes/metro/darkgray/jtable.min.css create mode 100644 lib/themes/metro/darkgray/loading.gif create mode 100644 lib/themes/metro/darkorange/jtable.css create mode 100644 lib/themes/metro/darkorange/jtable.less create mode 100644 lib/themes/metro/darkorange/jtable.min.css create mode 100644 lib/themes/metro/darkorange/loading.gif create mode 100644 lib/themes/metro/delete.png create mode 100644 lib/themes/metro/edit.png create mode 100644 lib/themes/metro/green/jtable.css create mode 100644 lib/themes/metro/green/jtable.less create mode 100644 lib/themes/metro/green/jtable.min.css create mode 100644 lib/themes/metro/green/loading.gif create mode 100644 lib/themes/metro/jtable_metro_base.css create mode 100644 lib/themes/metro/jtable_metro_base.less create mode 100644 lib/themes/metro/jtable_metro_base.min.css create mode 100644 lib/themes/metro/lightgray/jtable.css create mode 100644 lib/themes/metro/lightgray/jtable.less create mode 100644 lib/themes/metro/lightgray/jtable.min.css create mode 100644 lib/themes/metro/lightgray/loading.gif create mode 100644 lib/themes/metro/pink/jtable.css create mode 100644 lib/themes/metro/pink/jtable.less create mode 100644 lib/themes/metro/pink/jtable.min.css create mode 100644 lib/themes/metro/pink/loading.gif create mode 100644 lib/themes/metro/purple/jtable.css create mode 100644 lib/themes/metro/purple/jtable.less create mode 100644 lib/themes/metro/purple/jtable.min.css create mode 100644 lib/themes/metro/purple/loading.gif create mode 100644 lib/themes/metro/red/jtable.css create mode 100644 lib/themes/metro/red/jtable.less create mode 100644 lib/themes/metro/red/jtable.min.css create mode 100644 lib/themes/metro/red/loading.gif create mode 100644 screenshot.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..9b236f5 --- /dev/null +++ b/README.md @@ -0,0 +1,35 @@ +What is jTable +====== + +http://www.jtable.org + +[![A screenshot of jTable](https://raw.githubusercontent.com/hikalkan/jtable/master/screenshot.png)](http://jtable.org/) + +jTable is a jQuery plugin used to create AJAX based CRUD tables without coding HTML or Javascript. It has several features including: + +* Automatically creates HTML table and loads records from server using AJAX. +* Creates 'create new record' jQueryUI dialog form. When user creates a record, it sends data to server using AJAX and adds the same record to the table in the page. +* Creates 'edit record' jQueryUI dialog form. When user edits a record, it updates server using AJAX and updates all cells on the table in the page. +* Allow user to 'delete a record' by jQueryUI dialog based confirmation. When user deletes a record, it deletes the record from server using AJAX and deletes the record from the table in the page. +* Shows animations for create/delete/edit operations on the table. +* Supports server side paging using AJAX. +* Supports server side sorting using AJAX. +* Supports master/child tables. +* Allows user to select rows. +* Allows user to resize columns. +* Allows user to show/hide columns. +* Exposes some events to enable validation with forms. +* It can be localized easily. +* All styling of table and forms are defined in a CSS file, so you can easily change style of everything to use plugin in your pages. CSS file is well defined and commented. +* It comes with pre-defined color themes. +* It is not depended on any server side technology. +* It is platform independed and works on all common browsers. + +Notes +====== + +lib folder contains files necessary to use jTable. + +dev folder contains parts of library helpful for development of jTable. + +See http://www.jtable.org for documentation, demos, themes and more... diff --git a/bower.json b/bower.json new file mode 100644 index 0000000..a83ea15 --- /dev/null +++ b/bower.json @@ -0,0 +1,35 @@ +{ + "name": "jtable", + "main": [ + "lib/jquery.jtable.min.js" + ], + "version": "2.4.0", + "authors": [ + "Halil ibrahim Kalkan " + ], + "description": "A JQuery plugin to create AJAX based CRUD tables (grids). It supports paging, sorting, selecting, master/child tables, show/hide/resize columns, localization, themes and more.A JQuery plugin to create AJAX based CRUD tables (grids). It supports paging, sorting, selecting, master/child tables, show/hide/resize columns, localization, themes and more.", + "keywords": [ + "ajax", + "table", + "grid", + "crud", + "jtable", + "paging", + "sorting" + ], + "license": "MIT", + "homepage": "http://www.jtable.org", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "./components", + "dev", + "test", + "tests" + ], + "dependencies": { + "jquery": ">=1.9.1", + "jqueryui": ">=1.9.2" + } +} diff --git a/dev/build/JTableBuilder-source.zip b/dev/build/JTableBuilder-source.zip new file mode 100644 index 0000000000000000000000000000000000000000..c109d9f72b4047e684535f4ae5a84f1a4744275a GIT binary patch literal 2552 zcmZ`*dpHwpAKq+)A~A|GrzmGy4vUGYUguN8yNG7yP-cud_eweRIa3ZHg}f<;shm=1 zw&rZ1)KZSi7CB6;aZ`QyHS*X>{p0z&`*fFM8wly$s{ zjCvUc0su0E0D$kO=R+}G0XQVdKfoJD)WU`Y5ees?yNsj{>4;tYZBouAzD_=?C(znW zUSy`>Y&^|&ju`o7ufdHvfez6Ikeik#9dwJPtz$WBi)5CIBdhB0h!7uoF}#?YK^UVZ zv84~mnfj|de*s_SOS*Iw*G?mHAS$FC{Z!7k`o)B7f`UE^WmV&ej%lRX%a`*T+(l_p zI3*$OI>m-y*`4mysa*?et?90rj&nE-7pI<=5f6IT!6tw__~GM2DTBSog)gUH0SZwv z%js2es%Tb@U;Vzh^+%j^kTYarh>zbne$n_H-?Zsne$2sy3%O8A=%n?*KUb_5(d{VDpW!;gI z&H4PkZ0Zj(%rN-MC}wPKbav%EB{+75*If1_>Dsv?^Sh6E>U!a^?~S!>Jo1M~q65nZ zkZm4rw8M-;x0z0tj%67GCGipr)1=Mx;ex(9M;U$s$L{K$Ac&j|de)tn`GTM}YkJ1K zVf+H>)4rpjd%ud5*g=v_tXBG`+2)PC%!Qo1{K+^cx`IrIKzl%H_^aWs;Mfd9DBL_K z^vmMmWw%lhqYZsTxOB80yzP@tmEy;}tbI;%uEaoncZu3uv^Ngn>AUl3ah4;0ZnNrn z%Ke$U{A@RyYa)yg>JgsM%JmDOUa#>cEw_CnHS-NCKQY9@6l#>pZ2-_S`_)p@RfeYW zGN48Mr>0aB@#@umDAjvDnbx>c_b!c&GkV@qyaKhjjgOX0`09FoeK|h6BJ*4I%LthuddbHFFSyhI1?U^fs4yKjmKK`3U>}Gp~t5t zlu8s85}vV7FpGp>P>N1r8~duui7CV+YENys@?-A^pu@Ae$L2=?{-0!IEivJ9CE7;z z7Vw*k7eNti24y|WKmDVb;Sb7QUTWSo)BKgBTVHm|;lDa9eXNY^jnLgd@&N$GI{*OT zZJjz03BE)Oep{i{*BuFOb;LTxvc8HMcobMT*R|SWEoN`u%=|sY>Mr8CNj^(({(w=v z?3tHKUA)?iI&v+nB=Zi$%0OM5wbW)b#t7g1JR9!Ql#0=TNnP`4afuOmYbCf#({&K+ z=~z0AaUPsnYB>Ld7VTC~Vstr?Epu;MqOS&FnHJ-DsVRb_7M=qcSnZ&Ly-jwmLT4Ag z%lmL77Y%JkaRpm-wGddn4^7Pie`2TD?KzAnu5N_go@EDm7~idNL8zR<7t!Wv4T(wj zTLgc=I!*;h+XrzScE+8w4ZPV1W|7sLvk67@W{fTt!!K6?5* zvc*N;=0;)yRdp{X%(~FiWhBNdvgEpQj>Kt&S>b-pz7{8qt#UC$`-Bc06BMU$Ov(!r zJ@1*WQ!9gBG7m|SX+KbM+K3hEkrRVGITOU^p{g5%e)D`@iPWzm`R+{bhTDZN=f+JU zb_6Y=X6aG)K;kM&OBw=-^pT=;k~_)pE$iHT6X~QBOtbQ>Bh#xX-^?!_-0d}mMW2?< zQ(O#(bCIR4Dlumg&Y2|@qNJDai`}Z9SHJvW$aMxnKAKpmV&WeBCv!gxvnXcgU7;8b zjA=98sKpy832!}moTi#mdht@jrgTMiZqKeQ5cM3Tn(Zg~+spS8Ptf1~2pKy_03ybM z9?gx_(v~&TK4z1*v|>4{JHIpSJEs7E^`N_^e=Ytq?cBy~rUl`Mq5ilK?Vpr9lpJz= zoi9-$beodJ`~ZN=-viA;LU4GmfJntKvqFvgpM zp_LPoQo`kj$~+h5s}{g>_u40DC_UA>*M97S19+-!{cjg$B;U;UQ-JQbPpLy}NSFX+ zFBP#HLQt@F5moK9NG8a?uJM#=FC}j{9^GXhf7yImVcI%W6p_yt|0Va~_<#t;Nf<#D z410rr=3a40^l4l-3w88gX~!h9w1joCs=mE|o}yw?nUu*!R#DAd*p zI*?AE!Y2h*bv_X1ZOR?FvPALPY2g}^Hrl}p=5J(Ot$$t&K?XOf11mh5nLbDQ;`?NGdxNJM z-x~Ig6uchv0C%soa0i5n$GLusldpc?m40f{TmB$a)T7&`7@9Kh(V{3Ut?A_K8*C*^ zY^5s7M6^VSeYUcu@{%j10Y;MgD31GfHrdF>pXu6u=ZQ`zmt_+ncYhatZ%aEIQEWfJ zc<0zP=$>}Oj_i;uso7C*uTUxrtMDc)INYpX@`H7|{x!G5oiY}3Wbo+7*i<(qXWGm> z(Vc_l!!MHD1Uy%Rj=r-G{{~juY@8V7ehF3L?RKyR@fy#EyT~PU1BFX?Ei#bWt+9d%d1y zc4jj_t``If0*Z>#s_h$rMt}rTBp#>;qAEfayZ{mv0U-neq&^@dN~8!xC4>;+yLa}_ zacJ|v14Z2ReD~gS&OP_sbMKsc#!DZ0nF2&qhv(isqBl_UG9&Q);VRhSeQ$>8R@2)( zZ%C)#?n!Rwj#99#oUP@RjAojatE8D?d#0kB%KS<~$y-^bwzh`$msGDV5S^9+^tZXc zu9jzehh(W)Y9?v{rO~GzJBV7rGlPeNf=c%7MoZYwYr2XDbY229^I4)c@mH-&U0;Om zJWjO2+cQKL>r2Gi>Y{JPt$w0Cwe$~aD;3j)WFz_~YsRQ9+j7yL$1=rQ_*zSLm&FvA zq}q<10YTU{gGLZf7*9=^f%U4*3=4u>4PC^;b#>sWDKkWKHC@qExL;AYZ8FtUs)y(t ze9q5=(RPMUDu0UTupPNxpSZLTBO

p6I|X&~5SJpxukq(NBG z*|!@#=TSiG!97g_yPL|KzQ;hbu>YYZs~Z>zb)Aa>BTX;q)0uns?p1U>zE|$s3ke)6 znoFFTlei~P_`Yn8tHbKp@Yu*fSlSN~6yUR7fXw$<)LSKu*$=LNnZ*;0_cCh%K=@)Lpokp3u5 zQyWYO(zLu!4$=jIpOE=nUy@%1MOIG@RZNodcAD-mB zRfTh3p+&Khr+aws`A3%FHGkbniqJA%iQNKw1ojIY5qMbOtiVNqPYXN`+)bKj>jJL` zECTn^3&8!DmCy49`i$I9U!kwdD&3^FA9?gi2BRHSjUI1MC%eP~e!LAEm#59v75^z-K8W zsdSmffey_AKTfBBpQeQLQL4LI_9L7m3XjKir8ci58m;ywm#nO3uw!(|)zSu=^K>K2 zY?W;>TJ?kdb`Is8jAa{oni56FWqDdjUt$@TmNeZYHRD<~X*SNd&sEQOrmN?fy2flr zw@e&=N`lYaimC-CJUv_Ol{J@Kx|4BSH`oqlY1(;R%bAwr>KTXT zS=!6x_^wxV_%v)2js>i_&sZ2&fO5OmS`dVb&oD#V5-q2yuC)Dp99U`H(A^rB`|*$# zon_B3R_uj*!7Y}jTwI}f-Nrev>>{0DZrrnNX1Z0{s^)HRZ>4pUae)eF83&8F59kcj zva^P98WM2qhGtWu01L<}Tv)i`Y1|k};;w$i*0Bkg&nZ|=k`(43*8?K6 zyxCYsk{reb7p^Bc91f!!MiV2#K?T?y038g(pmx@v1f;Os&UQ7lhQr4$}uJ{9# z()f0XTDOHe+}QlGq%MitE3diogPV#nIy^E$)GyKgk?}+95PM>HaBN~k8yp|j4h?D< zHahrZCY?F_gf@J5Si{}lB2mK#QUUysBue6b5)D7s-OF#Yq}=(8treCnb73pPMEFW> z*w%B7uz@Q1GQZpQfOZ@C>22haXA<*?Pu;loxu1SMGW&Wyy&UWx8s|f@M^Yzon2pqu zc3CqR-cLQBisSvoa(Qf4GgdxzDal{-)I8fnGFiyOeW|$ZWmgR^w`i8AsclY4S?Nou zt%)a7c(a-2uG9z058z74uQ^8jh@?x6szou%I=4V~_P`g?~MAN5lJb=#Su5#E`{6qXQXkVVe zx#fqrR0?sTcYU^?+?K~tuOZ}J04~rOv=;Hjwv0Z{(vJIIZ}h#oyZ`ian(|=3o-XM{ zT!EF_%e#sTlHy!HJmS zxSE;O49jFwu_AL~)5lsvlUga&RiMChredCL9&s`o$SR$|yq>Ww$69v>5y_8ePF~#{ zi79!_)YqBgmTyQg8&oMuMcHB&aUNODHjDV(6jMyxlT)#!;%osaQAXr#s#Yk(hI|dK z?K$qExo$nAJ) (jQuery object) + _$tableBody: null, //Reference to in the table (jQuery object) + _$tableRows: null, //Array of all in the table (except "no data" row) (jQuery object array) + + _$busyDiv: null, //Reference to the div that is used to block UI while busy (jQuery object) + _$busyMessageDiv: null, //Reference to the div that is used to show some message when UI is blocked (jQuery object) + _$errorDialogDiv: null, //Reference to the error dialog div (jQuery object) + + _columnList: null, //Name of all data columns in the table (select column and command columns are not included) (string array) + _fieldList: null, //Name of all fields of a record (defined in fields option) (string array) + _keyField: null, //Name of the key field of a record (that is defined as 'key: true' in the fields option) (string) + + _firstDataColumnOffset: 0, //Start index of first record field in table columns (some columns can be placed before first data column, such as select checkbox column) (integer) + _lastPostData: null, //Last posted data on load method (object) + + _cache: null, //General purpose cache dictionary (object) + + /************************************************************************ + * CONSTRUCTOR AND INITIALIZATION METHODS * + *************************************************************************/ + + /* Contructor. + *************************************************************************/ + _create: function () { + + //Initialization + this._normalizeFieldsOptions(); + this._initializeFields(); + this._createFieldAndColumnList(); + + //Creating DOM elements + this._createMainContainer(); + this._createTableTitle(); + this._createToolBar(); + this._createTable(); + this._createBusyPanel(); + this._createErrorDialogDiv(); + this._addNoDataRow(); + + this._cookieKeyPrefix = this._generateCookieKeyPrefix(); + }, + + /* Normalizes some options for all fields (sets default values). + *************************************************************************/ + _normalizeFieldsOptions: function () { + var self = this; + $.each(self.options.fields, function (fieldName, props) { + self._normalizeFieldOptions(fieldName, props); + }); + }, + + /* Normalizes some options for a field (sets default values). + *************************************************************************/ + _normalizeFieldOptions: function (fieldName, props) { + if (props.listClass == undefined) { + props.listClass = ''; + } + if (props.inputClass == undefined) { + props.inputClass = ''; + } + if (props.placeholder == undefined) { + props.placeholder = ''; + } + + //Convert dependsOn to array if it's a comma seperated lists + if (props.dependsOn && $.type(props.dependsOn) === 'string') { + var dependsOnArray = props.dependsOn.split(','); + props.dependsOn = []; + for (var i = 0; i < dependsOnArray.length; i++) { + props.dependsOn.push($.trim(dependsOnArray[i])); + } + } + }, + + /* Intializes some private variables. + *************************************************************************/ + _initializeFields: function () { + this._lastPostData = {}; + this._$tableRows = []; + this._columnList = []; + this._fieldList = []; + this._cache = []; + }, + + /* Fills _fieldList, _columnList arrays and sets _keyField variable. + *************************************************************************/ + _createFieldAndColumnList: function () { + var self = this; + + $.each(self.options.fields, function (name, props) { + + //Add field to the field list + self._fieldList.push(name); + + //Check if this field is the key field + if (props.key == true) { + self._keyField = name; + } + + //Add field to column list if it is shown in the table + if (props.list != false && props.type != 'hidden') { + self._columnList.push(name); + } + }); + }, + + /* Creates the main container div. + *************************************************************************/ + _createMainContainer: function () { + this._$mainContainer = $('

') + .addClass('jtable-main-container') + .appendTo(this.element); + + this._jqueryuiThemeAddClass(this._$mainContainer, 'ui-widget'); + }, + + /* Creates title of the table if a title supplied in options. + *************************************************************************/ + _createTableTitle: function () { + var self = this; + + if (!self.options.title) { + return; + } + + var $titleDiv = $('
') + .addClass('jtable-title') + .appendTo(self._$mainContainer); + + self._jqueryuiThemeAddClass($titleDiv, 'ui-widget-header'); + + $('
') + .addClass('jtable-title-text') + .appendTo($titleDiv) + .append(self.options.title); + + if (self.options.showCloseButton) { + + var $textSpan = $('') + .html(self.options.messages.close); + + $('') + .addClass('jtable-command-button jtable-close-button') + .attr('title', self.options.messages.close) + .append($textSpan) + .appendTo($titleDiv) + .click(function (e) { + e.preventDefault(); + e.stopPropagation(); + self._onCloseRequested(); + }); + } + + self._$titleDiv = $titleDiv; + }, + + /* Creates the table. + *************************************************************************/ + _createTable: function () { + this._$table = $('
') + .addClass('jtable') + .appendTo(this._$mainContainer); + + if (this.options.tableId) { + this._$table.attr('id', this.options.tableId); + } + + this._jqueryuiThemeAddClass(this._$table, 'ui-widget-content'); + + this._createTableHead(); + this._createTableBody(); + }, + + /* Creates header (all column headers) of the table. + *************************************************************************/ + _createTableHead: function () { + var $thead = $('') + .appendTo(this._$table); + + this._addRowToTableHead($thead); + }, + + /* Adds tr element to given thead element + *************************************************************************/ + _addRowToTableHead: function ($thead) { + var $tr = $('') + .appendTo($thead); + + this._addColumnsToHeaderRow($tr); + }, + + /* Adds column header cells to given tr element. + *************************************************************************/ + _addColumnsToHeaderRow: function ($tr) { + for (var i = 0; i < this._columnList.length; i++) { + var fieldName = this._columnList[i]; + var $headerCell = this._createHeaderCellForField(fieldName, this.options.fields[fieldName]); + $headerCell.appendTo($tr); + } + }, + + /* Creates a header cell for given field. + * Returns th jQuery object. + *************************************************************************/ + _createHeaderCellForField: function (fieldName, field) { + field.width = field.width || '10%'; //default column width: 10%. + + var $headerTextSpan = $('') + .addClass('jtable-column-header-text') + .html(field.title); + + var $headerContainerDiv = $('
') + .addClass('jtable-column-header-container') + .append($headerTextSpan); + + var $th = $('') + .addClass('jtable-column-header') + .addClass(field.listClass) + .css('width', field.width) + .data('fieldName', fieldName) + .append($headerContainerDiv); + + this._jqueryuiThemeAddClass($th, 'ui-state-default'); + + return $th; + }, + + /* Creates an empty header cell that can be used as command column headers. + *************************************************************************/ + _createEmptyCommandHeader: function () { + var $th = $('') + .addClass('jtable-command-column-header') + .css('width', '1%'); + + this._jqueryuiThemeAddClass($th, 'ui-state-default'); + + return $th; + }, + + /* Creates tbody tag and adds to the table. + *************************************************************************/ + _createTableBody: function () { + this._$tableBody = $('').appendTo(this._$table); + }, + + /* Creates a div to block UI while jTable is busy. + *************************************************************************/ + _createBusyPanel: function () { + this._$busyMessageDiv = $('
').addClass('jtable-busy-message').prependTo(this._$mainContainer); + this._$busyDiv = $('
').addClass('jtable-busy-panel-background').prependTo(this._$mainContainer); + this._jqueryuiThemeAddClass(this._$busyMessageDiv, 'ui-widget-header'); + this._hideBusy(); + }, + + /* Creates and prepares error dialog div. + *************************************************************************/ + _createErrorDialogDiv: function () { + var self = this; + + self._$errorDialogDiv = $('
').appendTo(self._$mainContainer); + self._$errorDialogDiv.dialog({ + autoOpen: false, + show: self.options.dialogShowEffect, + hide: self.options.dialogHideEffect, + modal: true, + title: self.options.messages.error, + buttons: [{ + text: self.options.messages.close, + click: function () { + self._$errorDialogDiv.dialog('close'); + } + }] + }); + }, + + /************************************************************************ + * PUBLIC METHODS * + *************************************************************************/ + + /* Loads data using AJAX call, clears table and fills with new data. + *************************************************************************/ + load: function (postData, completeCallback) { + this._lastPostData = postData; + this._reloadTable(completeCallback); + }, + + /* Refreshes (re-loads) table data with last postData. + *************************************************************************/ + reload: function (completeCallback) { + this._reloadTable(completeCallback); + }, + + /* Gets a jQuery row object according to given record key + *************************************************************************/ + getRowByKey: function (key) { + for (var i = 0; i < this._$tableRows.length; i++) { + if (key == this._getKeyValueOfRecord(this._$tableRows[i].data('record'))) { + return this._$tableRows[i]; + } + } + + return null; + }, + + /* Completely removes the table from it's container. + *************************************************************************/ + destroy: function () { + this.element.empty(); + $.Widget.prototype.destroy.call(this); + }, + + /************************************************************************ + * PRIVATE METHODS * + *************************************************************************/ + + /* Used to change options dynamically after initialization. + *************************************************************************/ + _setOption: function (key, value) { + + }, + + /* LOADING RECORDS *****************************************************/ + + /* Performs an AJAX call to reload data of the table. + *************************************************************************/ + _reloadTable: function (completeCallback) { + var self = this; + + var completeReload = function(data) { + self._hideBusy(); + + //Show the error message if server returns error + if (data.Result != 'OK') { + self._showError(data.Message); + return; + } + + //Re-generate table rows + self._removeAllRows('reloading'); + self._addRecordsToTable(data.Records); + + self._onRecordsLoaded(data); + + //Call complete callback + if (completeCallback) { + completeCallback(); + } + }; + + self._showBusy(self.options.messages.loadingMessage, self.options.loadingAnimationDelay); //Disable table since it's busy + self._onLoadingRecords(); + + //listAction may be a function, check if it is + if ($.isFunction(self.options.actions.listAction)) { + + //Execute the function + var funcResult = self.options.actions.listAction(self._lastPostData, self._createJtParamsForLoading()); + + //Check if result is a jQuery Deferred object + if (self._isDeferredObject(funcResult)) { + funcResult.done(function(data) { + completeReload(data); + }).fail(function() { + self._showError(self.options.messages.serverCommunicationError); + }).always(function() { + self._hideBusy(); + }); + } else { //assume it's the data we're loading + completeReload(funcResult); + } + + } else { //assume listAction as URL string. + + //Generate URL (with query string parameters) to load records + var loadUrl = self._createRecordLoadUrl(); + + //Load data from server using AJAX + self._ajax({ + url: loadUrl, + data: self._lastPostData, + success: function (data) { + completeReload(data); + }, + error: function () { + self._hideBusy(); + self._showError(self.options.messages.serverCommunicationError); + } + }); + + } + }, + + /* Creates URL to load records. + *************************************************************************/ + _createRecordLoadUrl: function () { + return this.options.actions.listAction; + }, + + _createJtParamsForLoading: function() { + return { + //Empty as default, paging, sorting or other extensions can override this method to add additional params to load request + }; + }, + + /* TABLE MANIPULATION METHODS *******************************************/ + + /* Creates a row from given record + *************************************************************************/ + _createRowFromRecord: function (record) { + var $tr = $('') + .addClass('jtable-data-row') + .attr('data-record-key', this._getKeyValueOfRecord(record)) + .data('record', record); + + this._addCellsToRowUsingRecord($tr); + return $tr; + }, + + /* Adds all cells to given row. + *************************************************************************/ + _addCellsToRowUsingRecord: function ($row) { + var record = $row.data('record'); + for (var i = 0; i < this._columnList.length; i++) { + this._createCellForRecordField(record, this._columnList[i]) + .appendTo($row); + } + }, + + /* Create a cell for given field. + *************************************************************************/ + _createCellForRecordField: function (record, fieldName) { + return $('') + .addClass(this.options.fields[fieldName].listClass) + .append((this._getDisplayTextForRecordField(record, fieldName))); + }, + + /* Adds a list of records to the table. + *************************************************************************/ + _addRecordsToTable: function (records) { + var self = this; + + $.each(records, function (index, record) { + self._addRow(self._createRowFromRecord(record)); + }); + + self._refreshRowStyles(); + }, + + /* Adds a single row to the table. + * NOTE: THIS METHOD IS DEPRECATED AND WILL BE REMOVED FROM FEATURE RELEASES. + * USE _addRow METHOD. + *************************************************************************/ + _addRowToTable: function ($tableRow, index, isNewRow, animationsEnabled) { + var options = { + index: this._normalizeNumber(index, 0, this._$tableRows.length, this._$tableRows.length) + }; + + if (isNewRow == true) { + options.isNewRow = true; + } + + if (animationsEnabled == false) { + options.animationsEnabled = false; + } + + this._addRow($tableRow, options); + }, + + /* Adds a single row to the table. + *************************************************************************/ + _addRow: function ($row, options) { + //Set defaults + options = $.extend({ + index: this._$tableRows.length, + isNewRow: false, + animationsEnabled: true + }, options); + + //Remove 'no data' row if this is first row + if (this._$tableRows.length <= 0) { + this._removeNoDataRow(); + } + + //Add new row to the table according to it's index + options.index = this._normalizeNumber(options.index, 0, this._$tableRows.length, this._$tableRows.length); + if (options.index == this._$tableRows.length) { + //add as last row + this._$tableBody.append($row); + this._$tableRows.push($row); + } else if (options.index == 0) { + //add as first row + this._$tableBody.prepend($row); + this._$tableRows.unshift($row); + } else { + //insert to specified index + this._$tableRows[options.index - 1].after($row); + this._$tableRows.splice(options.index, 0, $row); + } + + this._onRowInserted($row, options.isNewRow); + + //Show animation if needed + if (options.isNewRow) { + this._refreshRowStyles(); + if (this.options.animationsEnabled && options.animationsEnabled) { + this._showNewRowAnimation($row); + } + } + }, + + /* Shows created animation for a table row + * TODO: Make this animation cofigurable and changable + *************************************************************************/ + _showNewRowAnimation: function ($tableRow) { + var className = 'jtable-row-created'; + if (this.options.jqueryuiTheme) { + className = className + ' ui-state-highlight'; + } + + $tableRow.addClass(className, 'slow', '', function () { + $tableRow.removeClass(className, 5000); + }); + }, + + /* Removes a row or rows (jQuery selection) from table. + *************************************************************************/ + _removeRowsFromTable: function ($rows, reason) { + var self = this; + + //Check if any row specified + if ($rows.length <= 0) { + return; + } + + //remove from DOM + $rows.addClass('jtable-row-removed').remove(); + + //remove from _$tableRows array + $rows.each(function () { + var index = self._findRowIndex($(this)); + if (index >= 0) { + self._$tableRows.splice(index, 1); + } + }); + + self._onRowsRemoved($rows, reason); + + //Add 'no data' row if all rows removed from table + if (self._$tableRows.length == 0) { + self._addNoDataRow(); + } + + self._refreshRowStyles(); + }, + + /* Finds index of a row in table. + *************************************************************************/ + _findRowIndex: function ($row) { + return this._findIndexInArray($row, this._$tableRows, function ($row1, $row2) { + return $row1.data('record') == $row2.data('record'); + }); + }, + + /* Removes all rows in the table and adds 'no data' row. + *************************************************************************/ + _removeAllRows: function (reason) { + //If no rows does exists, do nothing + if (this._$tableRows.length <= 0) { + return; + } + + //Select all rows (to pass it on raising _onRowsRemoved event) + var $rows = this._$tableBody.find('tr.jtable-data-row'); + + //Remove all rows from DOM and the _$tableRows array + this._$tableBody.empty(); + this._$tableRows = []; + + this._onRowsRemoved($rows, reason); + + //Add 'no data' row since we removed all rows + this._addNoDataRow(); + }, + + /* Adds "no data available" row to the table. + *************************************************************************/ + _addNoDataRow: function () { + if (this._$tableBody.find('>tr.jtable-no-data-row').length > 0) { + return; + } + + var $tr = $('') + .addClass('jtable-no-data-row') + .appendTo(this._$tableBody); + + var totalColumnCount = this._$table.find('thead th').length; + $('') + .attr('colspan', totalColumnCount) + .html(this.options.messages.noDataAvailable) + .appendTo($tr); + }, + + /* Removes "no data available" row from the table. + *************************************************************************/ + _removeNoDataRow: function () { + this._$tableBody.find('.jtable-no-data-row').remove(); + }, + + /* Refreshes styles of all rows in the table + *************************************************************************/ + _refreshRowStyles: function () { + for (var i = 0; i < this._$tableRows.length; i++) { + if (i % 2 == 0) { + this._$tableRows[i].addClass('jtable-row-even'); + } else { + this._$tableRows[i].removeClass('jtable-row-even'); + } + } + }, + + /* RENDERING FIELD VALUES ***********************************************/ + + /* Gets text for a field of a record according to it's type. + *************************************************************************/ + _getDisplayTextForRecordField: function (record, fieldName) { + var field = this.options.fields[fieldName]; + var fieldValue = record[fieldName]; + + //if this is a custom field, call display function + if (field.display) { + return field.display({ record: record }); + } + + if (field.type == 'date') { + return this._getDisplayTextForDateRecordField(field, fieldValue); + } else if (field.type == 'checkbox') { + return this._getCheckBoxTextForFieldByValue(fieldName, fieldValue); + } else if (field.options) { //combobox or radio button list since there are options. + var options = this._getOptionsForField(fieldName, { + record: record, + value: fieldValue, + source: 'list', + dependedValues: this._createDependedValuesUsingRecord(record, field.dependsOn) + }); + return this._findOptionByValue(options, fieldValue).DisplayText; + } else { //other types + return fieldValue; + } + }, + + /* Creates and returns an object that's properties are depended values of a record. + *************************************************************************/ + _createDependedValuesUsingRecord: function (record, dependsOn) { + if (!dependsOn) { + return {}; + } + + var dependedValues = {}; + for (var i = 0; i < dependsOn.length; i++) { + dependedValues[dependsOn[i]] = record[dependsOn[i]]; + } + + return dependedValues; + }, + + /* Finds an option object by given value. + *************************************************************************/ + _findOptionByValue: function (options, value) { + for (var i = 0; i < options.length; i++) { + if (options[i].Value == value) { + return options[i]; + } + } + + return {}; //no option found + }, + + /* Gets text for a date field. + *************************************************************************/ + _getDisplayTextForDateRecordField: function (field, fieldValue) { + if (!fieldValue) { + return ''; + } + + var displayFormat = field.displayFormat || this.options.defaultDateFormat; + var date = this._parseDate(fieldValue); + return $.datepicker.formatDate(displayFormat, date); + }, + + /* Gets options for a field according to user preferences. + *************************************************************************/ + _getOptionsForField: function (fieldName, funcParams) { + var field = this.options.fields[fieldName]; + var optionsSource = field.options; + + if ($.isFunction(optionsSource)) { + //prepare parameter to the function + funcParams = $.extend(true, { + _cacheCleared: false, + dependedValues: {}, + clearCache: function () { + this._cacheCleared = true; + } + }, funcParams); + + //call function and get actual options source + optionsSource = optionsSource(funcParams); + } + + var options; + + //Build options according to it's source type + if (typeof optionsSource == 'string') { //It is an Url to download options + var cacheKey = 'options_' + fieldName + '_' + optionsSource; //create a unique cache key + if (funcParams._cacheCleared || (!this._cache[cacheKey])) { + //if user calls clearCache() or options are not found in the cache, download options + this._cache[cacheKey] = this._buildOptionsFromArray(this._downloadOptions(fieldName, optionsSource)); + this._sortFieldOptions(this._cache[cacheKey], field.optionsSorting); + } else { + //found on cache.. + //if this method (_getOptionsForField) is called to get option for a specific value (on funcParams.source == 'list') + //and this value is not in cached options, we need to re-download options to get the unfound (probably new) option. + if (funcParams.value != undefined) { + var optionForValue = this._findOptionByValue(this._cache[cacheKey], funcParams.value); + if (optionForValue.DisplayText == undefined) { //this value is not in cached options... + this._cache[cacheKey] = this._buildOptionsFromArray(this._downloadOptions(fieldName, optionsSource)); + this._sortFieldOptions(this._cache[cacheKey], field.optionsSorting); + } + } + } + + options = this._cache[cacheKey]; + } else if (jQuery.isArray(optionsSource)) { //It is an array of options + options = this._buildOptionsFromArray(optionsSource); + this._sortFieldOptions(options, field.optionsSorting); + } else { //It is an object that it's properties are options + options = this._buildOptionsArrayFromObject(optionsSource); + this._sortFieldOptions(options, field.optionsSorting); + } + + return options; + }, + + /* Download options for a field from server. + *************************************************************************/ + _downloadOptions: function (fieldName, url) { + var self = this; + var options = []; + + self._ajax({ + url: url, + async: false, + success: function (data) { + if (data.Result != 'OK') { + self._showError(data.Message); + return; + } + + options = data.Options; + }, + error: function () { + var errMessage = self._formatString(self.options.messages.cannotLoadOptionsFor, fieldName); + self._showError(errMessage); + } + }); + + return options; + }, + + /* Sorts given options according to sorting parameter. + * sorting can be: 'value', 'value-desc', 'text' or 'text-desc'. + *************************************************************************/ + _sortFieldOptions: function (options, sorting) { + + if ((!options) || (!options.length) || (!sorting)) { + return; + } + + //Determine using value of text + var dataSelector; + if (sorting.indexOf('value') == 0) { + dataSelector = function (option) { + return option.Value; + }; + } else { //assume as text + dataSelector = function (option) { + return option.DisplayText; + }; + } + + var compareFunc; + if ($.type(dataSelector(options[0])) == 'string') { + compareFunc = function (option1, option2) { + return dataSelector(option1).localeCompare(dataSelector(option2)); + }; + } else { //asuume as numeric + compareFunc = function (option1, option2) { + return dataSelector(option1) - dataSelector(option2); + }; + } + + if (sorting.indexOf('desc') > 0) { + options.sort(function (a, b) { + return compareFunc(b, a); + }); + } else { //assume as asc + options.sort(function (a, b) { + return compareFunc(a, b); + }); + } + }, + + /* Creates an array of options from given object. + *************************************************************************/ + _buildOptionsArrayFromObject: function (options) { + var list = []; + + $.each(options, function (propName, propValue) { + list.push({ + Value: propName, + DisplayText: propValue + }); + }); + + return list; + }, + + /* Creates array of options from giving options array. + *************************************************************************/ + _buildOptionsFromArray: function (optionsArray) { + var list = []; + + for (var i = 0; i < optionsArray.length; i++) { + if ($.isPlainObject(optionsArray[i])) { + list.push(optionsArray[i]); + } else { //assumed as primitive type (int, string...) + list.push({ + Value: optionsArray[i], + DisplayText: optionsArray[i] + }); + } + } + + return list; + }, + + /* Parses given date string to a javascript Date object. + * Given string must be formatted one of the samples shown below: + * /Date(1320259705710)/ + * 2011-01-01 20:32:42 (YYYY-MM-DD HH:MM:SS) + * 2011-01-01 (YYYY-MM-DD) + *************************************************************************/ + _parseDate: function (dateString) { + if (dateString.indexOf('Date') >= 0) { //Format: /Date(1320259705710)/ + return new Date( + parseInt(dateString.substr(6), 10) + ); + } else if (dateString.length == 10) { //Format: 2011-01-01 + return new Date( + parseInt(dateString.substr(0, 4), 10), + parseInt(dateString.substr(5, 2), 10) - 1, + parseInt(dateString.substr(8, 2), 10) + ); + } else if (dateString.length == 19) { //Format: 2011-01-01 20:32:42 + return new Date( + parseInt(dateString.substr(0, 4), 10), + parseInt(dateString.substr(5, 2), 10) - 1, + parseInt(dateString.substr(8, 2), 10), + parseInt(dateString.substr(11, 2), 10), + parseInt(dateString.substr(14, 2), 10), + parseInt(dateString.substr(17, 2), 10) + ); + } else { + this._logWarn('Given date is not properly formatted: ' + dateString); + return 'format error!'; + } + }, + + /* TOOL BAR *************************************************************/ + + /* Creates the toolbar. + *************************************************************************/ + _createToolBar: function () { + this._$toolbarDiv = $('
') + .addClass('jtable-toolbar') + .appendTo(this._$titleDiv); + + for (var i = 0; i < this.options.toolbar.items.length; i++) { + this._addToolBarItem(this.options.toolbar.items[i]); + } + }, + + /* Adds a new item to the toolbar. + *************************************************************************/ + _addToolBarItem: function (item) { + + //Check if item is valid + if ((item == undefined) || (item.text == undefined && item.icon == undefined)) { + this._logWarn('Can not add tool bar item since it is not valid!'); + this._logWarn(item); + return null; + } + + var $toolBarItem = $('') + .addClass('jtable-toolbar-item') + .appendTo(this._$toolbarDiv); + + this._jqueryuiThemeAddClass($toolBarItem, 'ui-widget ui-state-default ui-corner-all', 'ui-state-hover'); + + //cssClass property + if (item.cssClass) { + $toolBarItem + .addClass(item.cssClass); + } + + //tooltip property + if (item.tooltip) { + $toolBarItem + .attr('title', item.tooltip); + } + + //icon property + if (item.icon) { + var $icon = $('').appendTo($toolBarItem); + if (item.icon === true) { + //do nothing + } else if ($.type(item.icon === 'string')) { + $icon.css('background', 'url("' + item.icon + '")'); + } + } + + //text property + if (item.text) { + $('') + .html(item.text) + .addClass('jtable-toolbar-item-text').appendTo($toolBarItem); + } + + //click event + if (item.click) { + $toolBarItem.click(function () { + item.click(); + }); + } + + //set hover animation parameters + var hoverAnimationDuration = undefined; + var hoverAnimationEasing = undefined; + if (this.options.toolbar.hoverAnimation) { + hoverAnimationDuration = this.options.toolbar.hoverAnimationDuration; + hoverAnimationEasing = this.options.toolbar.hoverAnimationEasing; + } + + //change class on hover + $toolBarItem.hover(function () { + $toolBarItem.addClass('jtable-toolbar-item-hover', hoverAnimationDuration, hoverAnimationEasing); + }, function () { + $toolBarItem.removeClass('jtable-toolbar-item-hover', hoverAnimationDuration, hoverAnimationEasing); + }); + + return $toolBarItem; + }, + + /* ERROR DIALOG *********************************************************/ + + /* Shows error message dialog with given message. + *************************************************************************/ + _showError: function (message) { + this._$errorDialogDiv.html(message).dialog('open'); + }, + + /* BUSY PANEL ***********************************************************/ + + /* Shows busy indicator and blocks table UI. + * TODO: Make this cofigurable and changable + *************************************************************************/ + _setBusyTimer: null, + _showBusy: function (message, delay) { + var self = this; // + + //Show a transparent overlay to prevent clicking to the table + self._$busyDiv + .width(self._$mainContainer.width()) + .height(self._$mainContainer.height()) + .addClass('jtable-busy-panel-background-invisible') + .show(); + + var makeVisible = function () { + self._$busyDiv.removeClass('jtable-busy-panel-background-invisible'); + self._$busyMessageDiv.html(message).show(); + }; + + if (delay) { + if (self._setBusyTimer) { + return; + } + + self._setBusyTimer = setTimeout(makeVisible, delay); + } else { + makeVisible(); + } + }, + + /* Hides busy indicator and unblocks table UI. + *************************************************************************/ + _hideBusy: function () { + clearTimeout(this._setBusyTimer); + this._setBusyTimer = null; + this._$busyDiv.hide(); + this._$busyMessageDiv.html('').hide(); + }, + + /* Returns true if jTable is busy. + *************************************************************************/ + _isBusy: function () { + return this._$busyMessageDiv.is(':visible'); + }, + + /* Adds jQueryUI class to an item. + *************************************************************************/ + _jqueryuiThemeAddClass: function ($elm, className, hoverClassName) { + if (!this.options.jqueryuiTheme) { + return; + } + + $elm.addClass(className); + + if (hoverClassName) { + $elm.hover(function () { + $elm.addClass(hoverClassName); + }, function () { + $elm.removeClass(hoverClassName); + }); + } + }, + + /* COMMON METHODS *******************************************************/ + + /* Performs an AJAX call to specified URL. + * THIS METHOD IS DEPRECATED AND WILL BE REMOVED FROM FEATURE RELEASES. + * USE _ajax METHOD. + *************************************************************************/ + _performAjaxCall: function (url, postData, async, success, error) { + this._ajax({ + url: url, + data: postData, + async: async, + success: success, + error: error + }); + }, + + _unAuthorizedRequestHandler: function() { + if (this.options.unAuthorizedRequestRedirectUrl) { + location.href = this.options.unAuthorizedRequestRedirectUrl; + } else { + location.reload(true); + } + }, + + /* This method is used to perform AJAX calls in jTable instead of direct + * usage of jQuery.ajax method. + *************************************************************************/ + _ajax: function (options) { + var self = this; + + //Handlers for HTTP status codes + var opts = { + statusCode: { + 401: function () { //Unauthorized + self._unAuthorizedRequestHandler(); + } + } + }; + + opts = $.extend(opts, this.options.ajaxSettings, options); + + //Override success + opts.success = function (data) { + //Checking for Authorization error + if (data && data.UnAuthorizedRequest == true) { + self._unAuthorizedRequestHandler(); + } + + if (options.success) { + options.success(data); + } + }; + + //Override error + opts.error = function (jqXHR, textStatus, errorThrown) { + if (unloadingPage) { + jqXHR.abort(); + return; + } + + if (options.error) { + options.error(arguments); + } + }; + + //Override complete + opts.complete = function () { + if (options.complete) { + options.complete(); + } + }; + + $.ajax(opts); + }, + + /* Gets value of key field of a record. + *************************************************************************/ + _getKeyValueOfRecord: function (record) { + return record[this._keyField]; + }, + + /************************************************************************ + * COOKIE * + *************************************************************************/ + + /* Sets a cookie with given key. + *************************************************************************/ + _setCookie: function (key, value) { + key = this._cookieKeyPrefix + key; + + var expireDate = new Date(); + expireDate.setDate(expireDate.getDate() + 30); + document.cookie = encodeURIComponent(key) + '=' + encodeURIComponent(value) + "; expires=" + expireDate.toUTCString(); + }, + + /* Gets a cookie with given key. + *************************************************************************/ + _getCookie: function (key) { + key = this._cookieKeyPrefix + key; + + var equalities = document.cookie.split('; '); + for (var i = 0; i < equalities.length; i++) { + if (!equalities[i]) { + continue; + } + + var splitted = equalities[i].split('='); + if (splitted.length != 2) { + continue; + } + + if (decodeURIComponent(splitted[0]) === key) { + return decodeURIComponent(splitted[1] || ''); + } + } + + return null; + }, + + /* Generates a hash key to be prefix for all cookies for this jtable instance. + *************************************************************************/ + _generateCookieKeyPrefix: function () { + + var simpleHash = function (value) { + var hash = 0; + if (value.length == 0) { + return hash; + } + + for (var i = 0; i < value.length; i++) { + var ch = value.charCodeAt(i); + hash = ((hash << 5) - hash) + ch; + hash = hash & hash; + } + + return hash; + }; + + var strToHash = ''; + if (this.options.tableId) { + strToHash = strToHash + this.options.tableId + '#'; + } + + strToHash = strToHash + this._columnList.join('$') + '#c' + this._$table.find('thead th').length; + return 'jtable#' + simpleHash(strToHash); + }, + + /************************************************************************ + * EVENT RAISING METHODS * + *************************************************************************/ + + _onLoadingRecords: function () { + this._trigger("loadingRecords", null, {}); + }, + + _onRecordsLoaded: function (data) { + this._trigger("recordsLoaded", null, { records: data.Records, serverResponse: data }); + }, + + _onRowInserted: function ($row, isNewRow) { + this._trigger("rowInserted", null, { row: $row, record: $row.data('record'), isNewRow: isNewRow }); + }, + + _onRowsRemoved: function ($rows, reason) { + this._trigger("rowsRemoved", null, { rows: $rows, reason: reason }); + }, + + _onCloseRequested: function () { + this._trigger("closeRequested", null, {}); + } + + }); + +}(jQuery)); diff --git a/dev/jquery.jtable.creation.js b/dev/jquery.jtable.creation.js new file mode 100644 index 0000000..82eb34a --- /dev/null +++ b/dev/jquery.jtable.creation.js @@ -0,0 +1,348 @@ +/************************************************************************ +* CREATE RECORD extension for jTable * +*************************************************************************/ +(function ($) { + + //Reference to base object members + var base = { + _create: $.hik.jtable.prototype._create + }; + + //extension members + $.extend(true, $.hik.jtable.prototype, { + + /************************************************************************ + * DEFAULT OPTIONS / EVENTS * + *************************************************************************/ + options: { + + //Events + recordAdded: function (event, data) { }, + + //Localization + messages: { + addNewRecord: 'Add new record' + } + }, + + /************************************************************************ + * PRIVATE FIELDS * + *************************************************************************/ + + _$addRecordDiv: null, //Reference to the adding new record dialog div (jQuery object) + + /************************************************************************ + * CONSTRUCTOR * + *************************************************************************/ + + /* Overrides base method to do create-specific constructions. + *************************************************************************/ + _create: function () { + base._create.apply(this, arguments); + + if (!this.options.actions.createAction) { + return; + } + + this._createAddRecordDialogDiv(); + }, + + /* Creates and prepares add new record dialog div + *************************************************************************/ + _createAddRecordDialogDiv: function () { + var self = this; + + //Create a div for dialog and add to container element + self._$addRecordDiv = $('
') + .appendTo(self._$mainContainer); + + //Prepare dialog + self._$addRecordDiv.dialog({ + autoOpen: false, + show: self.options.dialogShowEffect, + hide: self.options.dialogHideEffect, + width: 'auto', + minWidth: '300', + modal: true, + title: self.options.messages.addNewRecord, + buttons: + [{ //Cancel button + text: self.options.messages.cancel, + click: function () { + self._$addRecordDiv.dialog('close'); + } + }, { //Save button + id: 'AddRecordDialogSaveButton', + text: self.options.messages.save, + click: function () { + self._onSaveClickedOnCreateForm(); + } + }], + close: function () { + var $addRecordForm = self._$addRecordDiv.find('form').first(); + var $saveButton = self._$addRecordDiv.parent().find('#AddRecordDialogSaveButton'); + self._trigger("formClosed", null, { form: $addRecordForm, formType: 'create' }); + self._setEnabledOfDialogButton($saveButton, true, self.options.messages.save); + $addRecordForm.remove(); + } + }); + + if (self.options.addRecordButton) { + //If user supplied a button, bind the click event to show dialog form + self.options.addRecordButton.click(function (e) { + e.preventDefault(); + self._showAddRecordForm(); + }); + } else { + //If user did not supplied a button, create a 'add record button' toolbar item. + self._addToolBarItem({ + icon: true, + cssClass: 'jtable-toolbar-item-add-record', + text: self.options.messages.addNewRecord, + click: function () { + self._showAddRecordForm(); + } + }); + } + }, + + _onSaveClickedOnCreateForm: function () { + var self = this; + + var $saveButton = self._$addRecordDiv.parent().find('#AddRecordDialogSaveButton'); + var $addRecordForm = self._$addRecordDiv.find('form'); + + if (self._trigger("formSubmitting", null, { form: $addRecordForm, formType: 'create' }) != false) { + self._setEnabledOfDialogButton($saveButton, false, self.options.messages.saving); + self._saveAddRecordForm($addRecordForm, $saveButton); + } + }, + + /************************************************************************ + * PUBLIC METHODS * + *************************************************************************/ + + /* Shows add new record dialog form. + *************************************************************************/ + showCreateForm: function () { + this._showAddRecordForm(); + }, + + /* Adds a new record to the table (optionally to the server also) + *************************************************************************/ + addRecord: function (options) { + var self = this; + options = $.extend({ + clientOnly: false, + animationsEnabled: self.options.animationsEnabled, + success: function () { }, + error: function () { } + }, options); + + if (!options.record) { + self._logWarn('options parameter in addRecord method must contain a record property.'); + return; + } + + if (options.clientOnly) { + self._addRow( + self._createRowFromRecord(options.record), { + isNewRow: true, + animationsEnabled: options.animationsEnabled + }); + + options.success(); + return; + } + + var completeAddRecord = function (data) { + if (data.Result != 'OK') { + self._showError(data.Message); + options.error(data); + return; + } + + if (!data.Record) { + self._logError('Server must return the created Record object.'); + options.error(data); + return; + } + + self._onRecordAdded(data); + self._addRow( + self._createRowFromRecord(data.Record), { + isNewRow: true, + animationsEnabled: options.animationsEnabled + }); + + options.success(data); + }; + + //createAction may be a function, check if it is + if (!options.url && $.isFunction(self.options.actions.createAction)) { + + //Execute the function + var funcResult = self.options.actions.createAction($.param(options.record)); + + //Check if result is a jQuery Deferred object + if (self._isDeferredObject(funcResult)) { + //Wait promise + funcResult.done(function (data) { + completeAddRecord(data); + }).fail(function () { + self._showError(self.options.messages.serverCommunicationError); + options.error(); + }); + } else { //assume it returned the creation result + completeAddRecord(funcResult); + } + + } else { //Assume it's a URL string + + //Make an Ajax call to create record + self._submitFormUsingAjax( + options.url || self.options.actions.createAction, + $.param(options.record), + function (data) { + completeAddRecord(data); + }, + function () { + self._showError(self.options.messages.serverCommunicationError); + options.error(); + }); + + } + }, + + /************************************************************************ + * PRIVATE METHODS * + *************************************************************************/ + + /* Shows add new record dialog form. + *************************************************************************/ + _showAddRecordForm: function () { + var self = this; + + //Create add new record form + var $addRecordForm = $('
'); + + //Create input elements + for (var i = 0; i < self._fieldList.length; i++) { + + var fieldName = self._fieldList[i]; + var field = self.options.fields[fieldName]; + + //Do not create input for fields that is key and not specially marked as creatable + if (field.key == true && field.create != true) { + continue; + } + + //Do not create input for fields that are not creatable + if (field.create == false) { + continue; + } + + if (field.type == 'hidden') { + $addRecordForm.append(self._createInputForHidden(fieldName, field.defaultValue)); + continue; + } + + //Create a container div for this input field and add to form + var $fieldContainer = $('
') + .addClass('jtable-input-field-container') + .appendTo($addRecordForm); + + //Create a label for input + $fieldContainer.append(self._createInputLabelForRecordField(fieldName)); + + //Create input element + $fieldContainer.append( + self._createInputForRecordField({ + fieldName: fieldName, + formType: 'create', + form: $addRecordForm + })); + } + + self._makeCascadeDropDowns($addRecordForm, undefined, 'create'); + + $addRecordForm.submit(function () { + self._onSaveClickedOnCreateForm(); + return false; + }); + + //Open the form + self._$addRecordDiv.append($addRecordForm).dialog('open'); + self._trigger("formCreated", null, { form: $addRecordForm, formType: 'create' }); + }, + + /* Saves new added record to the server and updates table. + *************************************************************************/ + _saveAddRecordForm: function ($addRecordForm, $saveButton) { + var self = this; + + var completeAddRecord = function (data) { + if (data.Result != 'OK') { + self._showError(data.Message); + self._setEnabledOfDialogButton($saveButton, true, self.options.messages.save); + return; + } + + if (!data.Record) { + self._logError('Server must return the created Record object.'); + self._setEnabledOfDialogButton($saveButton, true, self.options.messages.save); + return; + } + + self._onRecordAdded(data); + self._addRow( + self._createRowFromRecord(data.Record), { + isNewRow: true + }); + self._$addRecordDiv.dialog("close"); + }; + + $addRecordForm.data('submitting', true); //TODO: Why it's used, can remove? Check it. + + //createAction may be a function, check if it is + if ($.isFunction(self.options.actions.createAction)) { + + //Execute the function + var funcResult = self.options.actions.createAction($addRecordForm.serialize()); + + //Check if result is a jQuery Deferred object + if (self._isDeferredObject(funcResult)) { + //Wait promise + funcResult.done(function (data) { + completeAddRecord(data); + }).fail(function () { + self._showError(self.options.messages.serverCommunicationError); + self._setEnabledOfDialogButton($saveButton, true, self.options.messages.save); + }); + } else { //assume it returned the creation result + completeAddRecord(funcResult); + } + + } else { //Assume it's a URL string + + //Make an Ajax call to create record + self._submitFormUsingAjax( + self.options.actions.createAction, + $addRecordForm.serialize(), + function (data) { + completeAddRecord(data); + }, + function () { + self._showError(self.options.messages.serverCommunicationError); + self._setEnabledOfDialogButton($saveButton, true, self.options.messages.save); + }); + } + }, + + _onRecordAdded: function (data) { + this._trigger("recordAdded", null, { record: data.Record, serverResponse: data }); + } + + }); + +})(jQuery); diff --git a/dev/jquery.jtable.deletion.js b/dev/jquery.jtable.deletion.js new file mode 100644 index 0000000..217532c --- /dev/null +++ b/dev/jquery.jtable.deletion.js @@ -0,0 +1,432 @@ +/************************************************************************ +* DELETION extension for jTable * +*************************************************************************/ +(function ($) { + + //Reference to base object members + var base = { + _create: $.hik.jtable.prototype._create, + _addColumnsToHeaderRow: $.hik.jtable.prototype._addColumnsToHeaderRow, + _addCellsToRowUsingRecord: $.hik.jtable.prototype._addCellsToRowUsingRecord + }; + + //extension members + $.extend(true, $.hik.jtable.prototype, { + + /************************************************************************ + * DEFAULT OPTIONS / EVENTS * + *************************************************************************/ + options: { + + //Options + deleteConfirmation: true, + + //Events + recordDeleted: function (event, data) { }, + + //Localization + messages: { + deleteConfirmation: 'This record will be deleted. Are you sure?', + deleteText: 'Delete', + deleting: 'Deleting', + canNotDeletedRecords: 'Can not delete {0} of {1} records!', + deleteProggress: 'Deleting {0} of {1} records, processing...' + } + }, + + /************************************************************************ + * PRIVATE FIELDS * + *************************************************************************/ + + _$deleteRecordDiv: null, //Reference to the adding new record dialog div (jQuery object) + _$deletingRow: null, //Reference to currently deleting row (jQuery object) + + /************************************************************************ + * CONSTRUCTOR * + *************************************************************************/ + + /* Overrides base method to do deletion-specific constructions. + *************************************************************************/ + _create: function () { + base._create.apply(this, arguments); + this._createDeleteDialogDiv(); + }, + + /* Creates and prepares delete record confirmation dialog div. + *************************************************************************/ + _createDeleteDialogDiv: function () { + var self = this; + + //Check if deleteAction is supplied + if (!self.options.actions.deleteAction) { + return; + } + + //Create div element for delete confirmation dialog + self._$deleteRecordDiv = $('

').appendTo(self._$mainContainer); + + //Prepare dialog + self._$deleteRecordDiv.dialog({ + autoOpen: false, + show: self.options.dialogShowEffect, + hide: self.options.dialogHideEffect, + modal: true, + title: self.options.messages.areYouSure, + buttons: + [{ //cancel button + text: self.options.messages.cancel, + click: function () { + self._$deleteRecordDiv.dialog("close"); + } + }, {//delete button + id: 'DeleteDialogButton', + text: self.options.messages.deleteText, + click: function () { + + //row maybe removed by another source, if so, do nothing + if (self._$deletingRow.hasClass('jtable-row-removed')) { + self._$deleteRecordDiv.dialog('close'); + return; + } + + var $deleteButton = self._$deleteRecordDiv.parent().find('#DeleteDialogButton'); + self._setEnabledOfDialogButton($deleteButton, false, self.options.messages.deleting); + self._deleteRecordFromServer( + self._$deletingRow, + function () { + self._removeRowsFromTableWithAnimation(self._$deletingRow); + self._$deleteRecordDiv.dialog('close'); + }, + function (message) { //error + self._showError(message); + self._setEnabledOfDialogButton($deleteButton, true, self.options.messages.deleteText); + } + ); + } + }], + close: function () { + var $deleteButton = self._$deleteRecordDiv.parent().find('#DeleteDialogButton'); + self._setEnabledOfDialogButton($deleteButton, true, self.options.messages.deleteText); + } + }); + }, + + /************************************************************************ + * PUBLIC METHODS * + *************************************************************************/ + + /* This method is used to delete one or more rows from server and the table. + *************************************************************************/ + deleteRows: function ($rows) { + var self = this; + + if ($rows.length <= 0) { + self._logWarn('No rows specified to jTable deleteRows method.'); + return; + } + + if (self._isBusy()) { + self._logWarn('Can not delete rows since jTable is busy!'); + return; + } + + //Deleting just one row + if ($rows.length == 1) { + self._deleteRecordFromServer( + $rows, + function () { //success + self._removeRowsFromTableWithAnimation($rows); + }, + function (message) { //error + self._showError(message); + } + ); + + return; + } + + //Deleting multiple rows + self._showBusy(self._formatString(self.options.messages.deleteProggress, 0, $rows.length)); + + //This method checks if deleting of all records is completed + var completedCount = 0; + var isCompleted = function () { + return (completedCount >= $rows.length); + }; + + //This method is called when deleting of all records completed + var completed = function () { + var $deletedRows = $rows.filter('.jtable-row-ready-to-remove'); + if ($deletedRows.length < $rows.length) { + self._showError(self._formatString(self.options.messages.canNotDeletedRecords, $rows.length - $deletedRows.length, $rows.length)); + } + + if ($deletedRows.length > 0) { + self._removeRowsFromTableWithAnimation($deletedRows); + } + + self._hideBusy(); + }; + + //Delete all rows + var deletedCount = 0; + $rows.each(function () { + var $row = $(this); + self._deleteRecordFromServer( + $row, + function () { //success + ++deletedCount; ++completedCount; + $row.addClass('jtable-row-ready-to-remove'); + self._showBusy(self._formatString(self.options.messages.deleteProggress, deletedCount, $rows.length)); + if (isCompleted()) { + completed(); + } + }, + function () { //error + ++completedCount; + if (isCompleted()) { + completed(); + } + } + ); + }); + }, + + /* Deletes a record from the table (optionally from the server also). + *************************************************************************/ + deleteRecord: function (options) { + var self = this; + options = $.extend({ + clientOnly: false, + animationsEnabled: self.options.animationsEnabled, + url: self.options.actions.deleteAction, + success: function () { }, + error: function () { } + }, options); + + if (options.key == undefined) { + self._logWarn('options parameter in deleteRecord method must contain a key property.'); + return; + } + + var $deletingRow = self.getRowByKey(options.key); + if ($deletingRow == null) { + self._logWarn('Can not found any row by key: ' + options.key); + return; + } + + if (options.clientOnly) { + self._removeRowsFromTableWithAnimation($deletingRow, options.animationsEnabled); + options.success(); + return; + } + + self._deleteRecordFromServer( + $deletingRow, + function (data) { //success + self._removeRowsFromTableWithAnimation($deletingRow, options.animationsEnabled); + options.success(data); + }, + function (message) { //error + self._showError(message); + options.error(message); + }, + options.url + ); + }, + + /************************************************************************ + * OVERRIDED METHODS * + *************************************************************************/ + + /* Overrides base method to add a 'deletion column cell' to header row. + *************************************************************************/ + _addColumnsToHeaderRow: function ($tr) { + base._addColumnsToHeaderRow.apply(this, arguments); + if (this.options.actions.deleteAction != undefined) { + $tr.append(this._createEmptyCommandHeader()); + } + }, + + /* Overrides base method to add a 'delete command cell' to a row. + *************************************************************************/ + _addCellsToRowUsingRecord: function ($row) { + base._addCellsToRowUsingRecord.apply(this, arguments); + + var self = this; + if (self.options.actions.deleteAction != undefined) { + var $span = $('').html(self.options.messages.deleteText); + var $button = $('') + .addClass('jtable-command-button jtable-delete-command-button') + .append($span) + .click(function (e) { + e.preventDefault(); + e.stopPropagation(); + self._deleteButtonClickedForRow($row); + }); + $('') + .addClass('jtable-command-column') + .append($button) + .appendTo($row); + } + }, + + /************************************************************************ + * PRIVATE METHODS * + *************************************************************************/ + + /* This method is called when user clicks delete button on a row. + *************************************************************************/ + _deleteButtonClickedForRow: function ($row) { + var self = this; + + var deleteConfirm; + var deleteConfirmMessage = self.options.messages.deleteConfirmation; + + //If options.deleteConfirmation is function then call it + if ($.isFunction(self.options.deleteConfirmation)) { + var data = { row: $row, record: $row.data('record'), deleteConfirm: true, deleteConfirmMessage: deleteConfirmMessage, cancel: false, cancelMessage: null }; + self.options.deleteConfirmation(data); + + //If delete progress is cancelled + if (data.cancel) { + + //If a canlellation reason is specified + if (data.cancelMessage) { + self._showError(data.cancelMessage); //TODO: show warning/stop message instead of error (also show warning/error ui icon)! + } + + return; + } + + deleteConfirmMessage = data.deleteConfirmMessage; + deleteConfirm = data.deleteConfirm; + } else { + deleteConfirm = self.options.deleteConfirmation; + } + + if (deleteConfirm != false) { + //Confirmation + self._$deleteRecordDiv.find('.jtable-delete-confirm-message').html(deleteConfirmMessage); + self._showDeleteDialog($row); + } else { + //No confirmation + self._deleteRecordFromServer( + $row, + function () { //success + self._removeRowsFromTableWithAnimation($row); + }, + function (message) { //error + self._showError(message); + } + ); + } + }, + + /* Shows delete comfirmation dialog. + *************************************************************************/ + _showDeleteDialog: function ($row) { + this._$deletingRow = $row; + this._$deleteRecordDiv.dialog('open'); + }, + + /* Performs an ajax call to server to delete record + * and removes row of the record from table if ajax call success. + *************************************************************************/ + _deleteRecordFromServer: function ($row, success, error, url) { + var self = this; + + var completeDelete = function(data) { + if (data.Result != 'OK') { + $row.data('deleting', false); + if (error) { + error(data.Message); + } + + return; + } + + self._trigger("recordDeleted", null, { record: $row.data('record'), row: $row, serverResponse: data }); + + if (success) { + success(data); + } + }; + + //Check if it is already being deleted right now + if ($row.data('deleting') == true) { + return; + } + + $row.data('deleting', true); + + var postData = {}; + postData[self._keyField] = self._getKeyValueOfRecord($row.data('record')); + + //deleteAction may be a function, check if it is + if (!url && $.isFunction(self.options.actions.deleteAction)) { + + //Execute the function + var funcResult = self.options.actions.deleteAction(postData); + + //Check if result is a jQuery Deferred object + if (self._isDeferredObject(funcResult)) { + //Wait promise + funcResult.done(function (data) { + completeDelete(data); + }).fail(function () { + $row.data('deleting', false); + if (error) { + error(self.options.messages.serverCommunicationError); + } + }); + } else { //assume it returned the deletion result + completeDelete(funcResult); + } + + } else { //Assume it's a URL string + //Make ajax call to delete the record from server + this._ajax({ + url: (url || self.options.actions.deleteAction), + data: postData, + success: function (data) { + completeDelete(data); + }, + error: function () { + $row.data('deleting', false); + if (error) { + error(self.options.messages.serverCommunicationError); + } + } + }); + + } + }, + + /* Removes a row from table after a 'deleting' animation. + *************************************************************************/ + _removeRowsFromTableWithAnimation: function ($rows, animationsEnabled) { + var self = this; + + if (animationsEnabled == undefined) { + animationsEnabled = self.options.animationsEnabled; + } + + if (animationsEnabled) { + var className = 'jtable-row-deleting'; + if (this.options.jqueryuiTheme) { + className = className + ' ui-state-disabled'; + } + + //Stop current animation (if does exists) and begin 'deleting' animation. + $rows.stop(true, true).addClass(className, 'slow', '').promise().done(function () { + self._removeRowsFromTable($rows, 'deleted'); + }); + } else { + self._removeRowsFromTable($rows, 'deleted'); + } + } + + }); + +})(jQuery); diff --git a/dev/jquery.jtable.dynamiccolumns.js b/dev/jquery.jtable.dynamiccolumns.js new file mode 100644 index 0000000..fefdb58 --- /dev/null +++ b/dev/jquery.jtable.dynamiccolumns.js @@ -0,0 +1,461 @@ +/************************************************************************ +* DYNAMIC COLUMNS extension for jTable * +* (Show/hide/resize columns) * +*************************************************************************/ +(function ($) { + + //Reference to base object members + var base = { + _create: $.hik.jtable.prototype._create, + _normalizeFieldOptions: $.hik.jtable.prototype._normalizeFieldOptions, + _createHeaderCellForField: $.hik.jtable.prototype._createHeaderCellForField, + _createCellForRecordField: $.hik.jtable.prototype._createCellForRecordField + }; + + //extension members + $.extend(true, $.hik.jtable.prototype, { + + /************************************************************************ + * DEFAULT OPTIONS / EVENTS * + *************************************************************************/ + + options: { + tableId: undefined, + columnResizable: true, + columnSelectable: true + }, + + /************************************************************************ + * PRIVATE FIELDS * + *************************************************************************/ + + _$columnSelectionDiv: null, + _$columnResizeBar: null, + _cookieKeyPrefix: null, + _currentResizeArgs: null, + + /************************************************************************ + * OVERRIDED METHODS * + *************************************************************************/ + + /* Overrides _addRowToTableHead method. + *************************************************************************/ + + _create: function () { + base._create.apply(this, arguments); + + this._createColumnResizeBar(); + this._createColumnSelection(); + + if (this.options.saveUserPreferences) { + this._loadColumnSettings(); + } + + this._normalizeColumnWidths(); + }, + + /* Normalizes some options for a field (sets default values). + *************************************************************************/ + _normalizeFieldOptions: function (fieldName, props) { + base._normalizeFieldOptions.apply(this, arguments); + + //columnResizable + if (this.options.columnResizable) { + props.columnResizable = (props.columnResizable != false); + } + + //visibility + if (!props.visibility) { + props.visibility = 'visible'; + } + }, + + /* Overrides _createHeaderCellForField to make columns dynamic. + *************************************************************************/ + _createHeaderCellForField: function (fieldName, field) { + var $headerCell = base._createHeaderCellForField.apply(this, arguments); + + //Make data columns resizable except the last one + if (this.options.columnResizable && field.columnResizable && (fieldName != this._columnList[this._columnList.length - 1])) { + this._makeColumnResizable($headerCell); + } + + //Hide column if needed + if (field.visibility == 'hidden') { + $headerCell.hide(); + } + + return $headerCell; + }, + + /* Overrides _createHeaderCellForField to decide show or hide a column. + *************************************************************************/ + _createCellForRecordField: function (record, fieldName) { + var $column = base._createCellForRecordField.apply(this, arguments); + + var field = this.options.fields[fieldName]; + if (field.visibility == 'hidden') { + $column.hide(); + } + + return $column; + }, + + /************************************************************************ + * PUBLIC METHODS * + *************************************************************************/ + + /* Changes visibility of a column. + *************************************************************************/ + changeColumnVisibility: function (columnName, visibility) { + this._changeColumnVisibilityInternal(columnName, visibility); + this._normalizeColumnWidths(); + if (this.options.saveUserPreferences) { + this._saveColumnSettings(); + } + }, + + /************************************************************************ + * PRIVATE METHODS * + *************************************************************************/ + + /* Changes visibility of a column. + *************************************************************************/ + _changeColumnVisibilityInternal: function (columnName, visibility) { + //Check if there is a column with given name + var columnIndex = this._columnList.indexOf(columnName); + if (columnIndex < 0) { + this._logWarn('Column "' + columnName + '" does not exist in fields!'); + return; + } + + //Check if visibility value is valid + if (['visible', 'hidden', 'fixed'].indexOf(visibility) < 0) { + this._logWarn('Visibility value is not valid: "' + visibility + '"! Options are: visible, hidden, fixed.'); + return; + } + + //Get the field + var field = this.options.fields[columnName]; + if (field.visibility == visibility) { + return; //No action if new value is same as old one. + } + + //Hide or show the column if needed + var columnIndexInTable = this._firstDataColumnOffset + columnIndex + 1; + if (field.visibility != 'hidden' && visibility == 'hidden') { + this._$table + .find('>thead >tr >th:nth-child(' + columnIndexInTable + '),>tbody >tr >td:nth-child(' + columnIndexInTable + ')') + .hide(); + } else if (field.visibility == 'hidden' && visibility != 'hidden') { + this._$table + .find('>thead >tr >th:nth-child(' + columnIndexInTable + '),>tbody >tr >td:nth-child(' + columnIndexInTable + ')') + .show() + .css('display', 'table-cell'); + } + + field.visibility = visibility; + }, + + /* Prepares dialog to change settings. + *************************************************************************/ + _createColumnSelection: function () { + var self = this; + + //Create a div for dialog and add to container element + this._$columnSelectionDiv = $('
') + .addClass('jtable-column-selection-container') + .appendTo(self._$mainContainer); + + this._$table.children('thead').bind('contextmenu', function (e) { + if (!self.options.columnSelectable) { + return; + } + + e.preventDefault(); + + //Make an overlay div to disable page clicks + $('
') + .addClass('jtable-contextmenu-overlay') + .click(function () { + $(this).remove(); + self._$columnSelectionDiv.hide(); + }) + .bind('contextmenu', function () { return false; }) + .appendTo(document.body); + + self._fillColumnSelection(); + + //Calculate position of column selection list and show it + + var containerOffset = self._$mainContainer.offset(); + var selectionDivTop = e.pageY - containerOffset.top; + var selectionDivLeft = e.pageX - containerOffset.left; + + var selectionDivMinWidth = 100; //in pixels + var containerWidth = self._$mainContainer.width(); + + //If user clicks right area of header of the table, show list at a little left + if ((containerWidth > selectionDivMinWidth) && (selectionDivLeft > (containerWidth - selectionDivMinWidth))) { + selectionDivLeft = containerWidth - selectionDivMinWidth; + } + + self._$columnSelectionDiv.css({ + left: selectionDivLeft, + top: selectionDivTop, + 'min-width': selectionDivMinWidth + 'px' + }).show(); + }); + }, + + /* Prepares content of settings dialog. + *************************************************************************/ + _fillColumnSelection: function () { + var self = this; + + var $columnsUl = $('
    ') + .addClass('jtable-column-select-list'); + for (var i = 0; i < this._columnList.length; i++) { + var columnName = this._columnList[i]; + var field = this.options.fields[columnName]; + + //Crete li element + var $columnLi = $('
  • ').appendTo($columnsUl); + + //Create label for the checkbox + var $label = $('') + .append($('' + (field.title || columnName) + '')) + .appendTo($columnLi); + + //Create checkbox + var $checkbox = $('') + .prependTo($label) + .click(function () { + var $clickedCheckbox = $(this); + var clickedColumnName = $clickedCheckbox.attr('name'); + var clickedField = self.options.fields[clickedColumnName]; + if (clickedField.visibility == 'fixed') { + return; + } + + self.changeColumnVisibility(clickedColumnName, $clickedCheckbox.is(':checked') ? 'visible' : 'hidden'); + }); + + //Check, if column if shown + if (field.visibility != 'hidden') { + $checkbox.attr('checked', 'checked'); + } + + //Disable, if column is fixed + if (field.visibility == 'fixed') { + $checkbox.attr('disabled', 'disabled'); + } + } + + this._$columnSelectionDiv.html($columnsUl); + }, + + /* creates a vertical bar that is shown while resizing columns. + *************************************************************************/ + _createColumnResizeBar: function () { + this._$columnResizeBar = $('
    ') + .addClass('jtable-column-resize-bar') + .appendTo(this._$mainContainer) + .hide(); + }, + + /* Makes a column sortable. + *************************************************************************/ + _makeColumnResizable: function ($columnHeader) { + var self = this; + + //Create a handler to handle mouse click event + $('
    ') + .addClass('jtable-column-resize-handler') + .appendTo($columnHeader.find('.jtable-column-header-container')) //Append the handler to the column + .mousedown(function (downevent) { //handle mousedown event for the handler + downevent.preventDefault(); + downevent.stopPropagation(); + + var mainContainerOffset = self._$mainContainer.offset(); + + //Get a reference to the next column + var $nextColumnHeader = $columnHeader.nextAll('th.jtable-column-header:visible:first'); + if (!$nextColumnHeader.length) { + return; + } + + //Store some information to be used on resizing + var minimumColumnWidth = 10; //A column's width can not be smaller than 10 pixel. + self._currentResizeArgs = { + currentColumnStartWidth: $columnHeader.outerWidth(), + minWidth: minimumColumnWidth, + maxWidth: $columnHeader.outerWidth() + $nextColumnHeader.outerWidth() - minimumColumnWidth, + mouseStartX: downevent.pageX, + minResizeX: function () { return this.mouseStartX - (this.currentColumnStartWidth - this.minWidth); }, + maxResizeX: function () { return this.mouseStartX + (this.maxWidth - this.currentColumnStartWidth); } + }; + + //Handle mouse move event to move resizing bar + var resizeonmousemove = function (moveevent) { + if (!self._currentResizeArgs) { + return; + } + + var resizeBarX = self._normalizeNumber(moveevent.pageX, self._currentResizeArgs.minResizeX(), self._currentResizeArgs.maxResizeX()); + self._$columnResizeBar.css('left', (resizeBarX - mainContainerOffset.left) + 'px'); + }; + + //Handle mouse up event to finish resizing of the column + var resizeonmouseup = function (upevent) { + if (!self._currentResizeArgs) { + return; + } + + $(document).unbind('mousemove', resizeonmousemove); + $(document).unbind('mouseup', resizeonmouseup); + + self._$columnResizeBar.hide(); + + //Calculate new widths in pixels + var mouseChangeX = upevent.pageX - self._currentResizeArgs.mouseStartX; + var currentColumnFinalWidth = self._normalizeNumber(self._currentResizeArgs.currentColumnStartWidth + mouseChangeX, self._currentResizeArgs.minWidth, self._currentResizeArgs.maxWidth); + var nextColumnFinalWidth = $nextColumnHeader.outerWidth() + (self._currentResizeArgs.currentColumnStartWidth - currentColumnFinalWidth); + + //Calculate widths as percent + var pixelToPercentRatio = $columnHeader.data('width-in-percent') / self._currentResizeArgs.currentColumnStartWidth; + $columnHeader.data('width-in-percent', currentColumnFinalWidth * pixelToPercentRatio); + $nextColumnHeader.data('width-in-percent', nextColumnFinalWidth * pixelToPercentRatio); + + //Set new widths to columns (resize!) + $columnHeader.css('width', $columnHeader.data('width-in-percent') + '%'); + $nextColumnHeader.css('width', $nextColumnHeader.data('width-in-percent') + '%'); + + //Normalize all column widths + self._normalizeColumnWidths(); + + //Finish resizing + self._currentResizeArgs = null; + + //Save current preferences + if (self.options.saveUserPreferences) { + self._saveColumnSettings(); + } + }; + + //Show vertical resize bar + self._$columnResizeBar + .show() + .css({ + top: ($columnHeader.offset().top - mainContainerOffset.top) + 'px', + left: (downevent.pageX - mainContainerOffset.left) + 'px', + height: (self._$table.outerHeight()) + 'px' + }); + + //Bind events + $(document).bind('mousemove', resizeonmousemove); + $(document).bind('mouseup', resizeonmouseup); + }); + }, + + /* Normalizes column widths as percent for current view. + *************************************************************************/ + _normalizeColumnWidths: function () { + + //Set command column width + var commandColumnHeaders = this._$table + .find('>thead th.jtable-command-column-header') + .data('width-in-percent', 1) + .css('width', '1%'); + + //Find data columns + var headerCells = this._$table.find('>thead th.jtable-column-header'); + + //Calculate total width of data columns + var totalWidthInPixel = 0; + headerCells.each(function () { + var $cell = $(this); + if ($cell.is(':visible')) { + totalWidthInPixel += $cell.outerWidth(); + } + }); + + //Calculate width of each column + var columnWidhts = {}; + var availableWidthInPercent = 100.0 - commandColumnHeaders.length; + headerCells.each(function () { + var $cell = $(this); + if ($cell.is(':visible')) { + var fieldName = $cell.data('fieldName'); + var widthInPercent = $cell.outerWidth() * availableWidthInPercent / totalWidthInPixel; + columnWidhts[fieldName] = widthInPercent; + } + }); + + //Set width of each column + headerCells.each(function () { + var $cell = $(this); + if ($cell.is(':visible')) { + var fieldName = $cell.data('fieldName'); + $cell.data('width-in-percent', columnWidhts[fieldName]).css('width', columnWidhts[fieldName] + '%'); + } + }); + }, + + /* Saves field setting to cookie. + * Saved setting will be a string like that: + * fieldName1=visible;23|fieldName2=hidden;17|... + *************************************************************************/ + _saveColumnSettings: function () { + var self = this; + var fieldSettings = ''; + this._$table.find('>thead >tr >th.jtable-column-header').each(function () { + var $cell = $(this); + var fieldName = $cell.data('fieldName'); + var columnWidth = $cell.data('width-in-percent'); + var fieldVisibility = self.options.fields[fieldName].visibility; + var fieldSetting = fieldName + "=" + fieldVisibility + ';' + columnWidth; + fieldSettings = fieldSettings + fieldSetting + '|'; + }); + + this._setCookie('column-settings', fieldSettings.substr(0, fieldSettings.length - 1)); + }, + + /* Loads field settings from cookie that is saved by _saveFieldSettings method. + *************************************************************************/ + _loadColumnSettings: function () { + var self = this; + var columnSettingsCookie = this._getCookie('column-settings'); + if (!columnSettingsCookie) { + return; + } + + var columnSettings = {}; + $.each(columnSettingsCookie.split('|'), function (inx, fieldSetting) { + var splitted = fieldSetting.split('='); + var fieldName = splitted[0]; + var settings = splitted[1].split(';'); + columnSettings[fieldName] = { + columnVisibility: settings[0], + columnWidth: settings[1] + }; + }); + + var headerCells = this._$table.find('>thead >tr >th.jtable-column-header'); + headerCells.each(function () { + var $cell = $(this); + var fieldName = $cell.data('fieldName'); + var field = self.options.fields[fieldName]; + if (columnSettings[fieldName]) { + if (field.visibility != 'fixed') { + self._changeColumnVisibilityInternal(fieldName, columnSettings[fieldName].columnVisibility); + } + + $cell.data('width-in-percent', columnSettings[fieldName].columnWidth).css('width', columnSettings[fieldName].columnWidth + '%'); + } + }); + } + + }); + +})(jQuery); diff --git a/dev/jquery.jtable.editing.js b/dev/jquery.jtable.editing.js new file mode 100644 index 0000000..39a85d0 --- /dev/null +++ b/dev/jquery.jtable.editing.js @@ -0,0 +1,452 @@ +/************************************************************************ +* EDIT RECORD extension for jTable * +*************************************************************************/ +(function ($) { + + //Reference to base object members + var base = { + _create: $.hik.jtable.prototype._create, + _addColumnsToHeaderRow: $.hik.jtable.prototype._addColumnsToHeaderRow, + _addCellsToRowUsingRecord: $.hik.jtable.prototype._addCellsToRowUsingRecord + }; + + //extension members + $.extend(true, $.hik.jtable.prototype, { + + /************************************************************************ + * DEFAULT OPTIONS / EVENTS * + *************************************************************************/ + options: { + + //Events + recordUpdated: function (event, data) { }, + rowUpdated: function (event, data) { }, + + //Localization + messages: { + editRecord: 'Edit Record' + } + }, + + /************************************************************************ + * PRIVATE FIELDS * + *************************************************************************/ + + _$editDiv: null, //Reference to the editing dialog div (jQuery object) + _$editingRow: null, //Reference to currently editing row (jQuery object) + + /************************************************************************ + * CONSTRUCTOR AND INITIALIZATION METHODS * + *************************************************************************/ + + /* Overrides base method to do editing-specific constructions. + *************************************************************************/ + _create: function () { + base._create.apply(this, arguments); + + if (!this.options.actions.updateAction) { + return; + } + + this._createEditDialogDiv(); + }, + + /* Creates and prepares edit dialog div + *************************************************************************/ + _createEditDialogDiv: function () { + var self = this; + + //Create a div for dialog and add to container element + self._$editDiv = $('
    ') + .appendTo(self._$mainContainer); + + //Prepare dialog + self._$editDiv.dialog({ + autoOpen: false, + show: self.options.dialogShowEffect, + hide: self.options.dialogHideEffect, + width: 'auto', + minWidth: '300', + modal: true, + title: self.options.messages.editRecord, + buttons: + [{ //cancel button + text: self.options.messages.cancel, + click: function () { + self._$editDiv.dialog('close'); + } + }, { //save button + id: 'EditDialogSaveButton', + text: self.options.messages.save, + click: function () { + self._onSaveClickedOnEditForm(); + } + }], + close: function () { + var $editForm = self._$editDiv.find('form:first'); + var $saveButton = self._$editDiv.parent().find('#EditDialogSaveButton'); + self._trigger("formClosed", null, { form: $editForm, formType: 'edit', row: self._$editingRow }); + self._setEnabledOfDialogButton($saveButton, true, self.options.messages.save); + $editForm.remove(); + } + }); + }, + + /* Saves editing form to server. + *************************************************************************/ + _onSaveClickedOnEditForm: function () { + var self = this; + + //row maybe removed by another source, if so, do nothing + if (self._$editingRow.hasClass('jtable-row-removed')) { + self._$editDiv.dialog('close'); + return; + } + + var $saveButton = self._$editDiv.parent().find('#EditDialogSaveButton'); + var $editForm = self._$editDiv.find('form'); + if (self._trigger("formSubmitting", null, { form: $editForm, formType: 'edit', row: self._$editingRow }) != false) { + self._setEnabledOfDialogButton($saveButton, false, self.options.messages.saving); + self._saveEditForm($editForm, $saveButton); + } + }, + + /************************************************************************ + * PUBLIC METHODS * + *************************************************************************/ + + /* Updates a record on the table (optionally on the server also) + *************************************************************************/ + updateRecord: function (options) { + var self = this; + options = $.extend({ + clientOnly: false, + animationsEnabled: self.options.animationsEnabled, + success: function () { }, + error: function () { } + }, options); + + if (!options.record) { + self._logWarn('options parameter in updateRecord method must contain a record property.'); + return; + } + + var key = self._getKeyValueOfRecord(options.record); + if (key == undefined || key == null) { + self._logWarn('options parameter in updateRecord method must contain a record that contains the key field property.'); + return; + } + + var $updatingRow = self.getRowByKey(key); + if ($updatingRow == null) { + self._logWarn('Can not found any row by key "' + key + '" on the table. Updating row must be visible on the table.'); + return; + } + + if (options.clientOnly) { + $.extend($updatingRow.data('record'), options.record); + self._updateRowTexts($updatingRow); + self._onRecordUpdated($updatingRow, null); + if (options.animationsEnabled) { + self._showUpdateAnimationForRow($updatingRow); + } + + options.success(); + return; + } + + var completeEdit = function (data) { + if (data.Result != 'OK') { + self._showError(data.Message); + options.error(data); + return; + } + + $.extend($updatingRow.data('record'), options.record); + self._updateRecordValuesFromServerResponse($updatingRow.data('record'), data); + + self._updateRowTexts($updatingRow); + self._onRecordUpdated($updatingRow, data); + if (options.animationsEnabled) { + self._showUpdateAnimationForRow($updatingRow); + } + + options.success(data); + }; + + //updateAction may be a function, check if it is + if (!options.url && $.isFunction(self.options.actions.updateAction)) { + + //Execute the function + var funcResult = self.options.actions.updateAction($.param(options.record)); + + //Check if result is a jQuery Deferred object + if (self._isDeferredObject(funcResult)) { + //Wait promise + funcResult.done(function (data) { + completeEdit(data); + }).fail(function () { + self._showError(self.options.messages.serverCommunicationError); + options.error(); + }); + } else { //assume it returned the creation result + completeEdit(funcResult); + } + + } else { //Assume it's a URL string + + //Make an Ajax call to create record + self._submitFormUsingAjax( + options.url || self.options.actions.updateAction, + $.param(options.record), + function (data) { + completeEdit(data); + }, + function () { + self._showError(self.options.messages.serverCommunicationError); + options.error(); + }); + + } + }, + + /************************************************************************ + * OVERRIDED METHODS * + *************************************************************************/ + + /* Overrides base method to add a 'editing column cell' to header row. + *************************************************************************/ + _addColumnsToHeaderRow: function ($tr) { + base._addColumnsToHeaderRow.apply(this, arguments); + if (this.options.actions.updateAction != undefined) { + $tr.append(this._createEmptyCommandHeader()); + } + }, + + /* Overrides base method to add a 'edit command cell' to a row. + *************************************************************************/ + _addCellsToRowUsingRecord: function ($row) { + var self = this; + base._addCellsToRowUsingRecord.apply(this, arguments); + + if (self.options.actions.updateAction != undefined) { + var $span = $('').html(self.options.messages.editRecord); + var $button = $('') + .addClass('jtable-command-button jtable-edit-command-button') + .append($span) + .click(function (e) { + e.preventDefault(); + e.stopPropagation(); + self._showEditForm($row); + }); + $('') + .addClass('jtable-command-column') + .append($button) + .appendTo($row); + } + }, + + /************************************************************************ + * PRIVATE METHODS * + *************************************************************************/ + + /* Shows edit form for a row. + *************************************************************************/ + _showEditForm: function ($tableRow) { + var self = this; + var record = $tableRow.data('record'); + + //Create edit form + var $editForm = $('
    '); + + //Create input fields + for (var i = 0; i < self._fieldList.length; i++) { + + var fieldName = self._fieldList[i]; + var field = self.options.fields[fieldName]; + var fieldValue = record[fieldName]; + + if (field.key == true) { + if (field.edit != true) { + //Create hidden field for key + $editForm.append(self._createInputForHidden(fieldName, fieldValue)); + continue; + } else { + //Create a special hidden field for key (since key is be editable) + $editForm.append(self._createInputForHidden('jtRecordKey', fieldValue)); + } + } + + //Do not create element for non-editable fields + if (field.edit == false) { + continue; + } + + //Hidden field + if (field.type == 'hidden') { + $editForm.append(self._createInputForHidden(fieldName, fieldValue)); + continue; + } + + //Create a container div for this input field and add to form + var $fieldContainer = $('
    ').appendTo($editForm); + + //Create a label for input + $fieldContainer.append(self._createInputLabelForRecordField(fieldName)); + + //Create input element with it's current value + var currentValue = self._getValueForRecordField(record, fieldName); + $fieldContainer.append( + self._createInputForRecordField({ + fieldName: fieldName, + value: currentValue, + record: record, + formType: 'edit', + form: $editForm + })); + } + + self._makeCascadeDropDowns($editForm, record, 'edit'); + + $editForm.submit(function () { + self._onSaveClickedOnEditForm(); + return false; + }); + + //Open dialog + self._$editingRow = $tableRow; + self._$editDiv.append($editForm).dialog('open'); + self._trigger("formCreated", null, { form: $editForm, formType: 'edit', record: record, row: $tableRow }); + }, + + /* Saves editing form to the server and updates the record on the table. + *************************************************************************/ + _saveEditForm: function ($editForm, $saveButton) { + var self = this; + + var completeEdit = function (data) { + if (data.Result != 'OK') { + self._showError(data.Message); + self._setEnabledOfDialogButton($saveButton, true, self.options.messages.save); + return; + } + + var record = self._$editingRow.data('record'); + + self._updateRecordValuesFromForm(record, $editForm); + self._updateRecordValuesFromServerResponse(record, data); + self._updateRowTexts(self._$editingRow); + + self._$editingRow.attr('data-record-key', self._getKeyValueOfRecord(record)); + + self._onRecordUpdated(self._$editingRow, data); + + if (self.options.animationsEnabled) { + self._showUpdateAnimationForRow(self._$editingRow); + } + + self._$editDiv.dialog("close"); + }; + + + //updateAction may be a function, check if it is + if ($.isFunction(self.options.actions.updateAction)) { + + //Execute the function + var funcResult = self.options.actions.updateAction($editForm.serialize()); + + //Check if result is a jQuery Deferred object + if (self._isDeferredObject(funcResult)) { + //Wait promise + funcResult.done(function (data) { + completeEdit(data); + }).fail(function () { + self._showError(self.options.messages.serverCommunicationError); + self._setEnabledOfDialogButton($saveButton, true, self.options.messages.save); + }); + } else { //assume it returned the creation result + completeEdit(funcResult); + } + + } else { //Assume it's a URL string + + //Make an Ajax call to update record + self._submitFormUsingAjax( + self.options.actions.updateAction, + $editForm.serialize(), + function(data) { + completeEdit(data); + }, + function() { + self._showError(self.options.messages.serverCommunicationError); + self._setEnabledOfDialogButton($saveButton, true, self.options.messages.save); + }); + } + + }, + + /* This method ensures updating of current record with server response, + * if server sends a Record object as response to updateAction. + *************************************************************************/ + _updateRecordValuesFromServerResponse: function (record, serverResponse) { + if (!serverResponse || !serverResponse.Record) { + return; + } + + $.extend(true, record, serverResponse.Record); + }, + + /* Gets text for a field of a record according to it's type. + *************************************************************************/ + _getValueForRecordField: function (record, fieldName) { + var field = this.options.fields[fieldName]; + var fieldValue = record[fieldName]; + if (field.type == 'date') { + return this._getDisplayTextForDateRecordField(field, fieldValue); + } else { + return fieldValue; + } + }, + + /* Updates cells of a table row's text values from row's record values. + *************************************************************************/ + _updateRowTexts: function ($tableRow) { + var record = $tableRow.data('record'); + var $columns = $tableRow.find('td'); + for (var i = 0; i < this._columnList.length; i++) { + var displayItem = this._getDisplayTextForRecordField(record, this._columnList[i]); + if ((displayItem === 0)) displayItem = "0"; + $columns.eq(this._firstDataColumnOffset + i).html(displayItem || ''); + } + + this._onRowUpdated($tableRow); + }, + + /* Shows 'updated' animation for a table row. + *************************************************************************/ + _showUpdateAnimationForRow: function ($tableRow) { + var className = 'jtable-row-updated'; + if (this.options.jqueryuiTheme) { + className = className + ' ui-state-highlight'; + } + + $tableRow.stop(true, true).addClass(className, 'slow', '', function () { + $tableRow.removeClass(className, 5000); + }); + }, + + /************************************************************************ + * EVENT RAISING METHODS * + *************************************************************************/ + + _onRowUpdated: function ($row) { + this._trigger("rowUpdated", null, { row: $row, record: $row.data('record') }); + }, + + _onRecordUpdated: function ($row, data) { + this._trigger("recordUpdated", null, { record: $row.data('record'), row: $row, serverResponse: data }); + } + + }); + +})(jQuery); diff --git a/dev/jquery.jtable.forms.js b/dev/jquery.jtable.forms.js new file mode 100644 index 0000000..0ef0c96 --- /dev/null +++ b/dev/jquery.jtable.forms.js @@ -0,0 +1,483 @@ +/************************************************************************ +* FORMS extension for jTable (base for edit/create forms) * +*************************************************************************/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype, { + + /************************************************************************ + * PRIVATE METHODS * + *************************************************************************/ + + /* Submits a form asynchronously using AJAX. + * This method is needed, since form submitting logic can be overrided + * by extensions. + *************************************************************************/ + _submitFormUsingAjax: function (url, formData, success, error) { + this._ajax({ + url: url, + data: formData, + success: success, + error: error + }); + }, + + /* Creates label for an input element. + *************************************************************************/ + _createInputLabelForRecordField: function (fieldName) { + //TODO: May create label tag instead of a div. + return $('
    ') + .addClass('jtable-input-label') + .html(this.options.fields[fieldName].inputTitle || this.options.fields[fieldName].title); + }, + + /* Creates an input element according to field type. + *************************************************************************/ + _createInputForRecordField: function (funcParams) { + var fieldName = funcParams.fieldName, + value = funcParams.value, + record = funcParams.record, + formType = funcParams.formType, + form = funcParams.form; + + //Get the field + var field = this.options.fields[fieldName]; + + //If value if not supplied, use defaultValue of the field + if (value == undefined || value == null) { + value = field.defaultValue; + } + + //Use custom function if supplied + if (field.input) { + var $input = $(field.input({ + value: value, + record: record, + formType: formType, + form: form + })); + + //Add id attribute if does not exists + if (!$input.attr('id')) { + $input.attr('id', 'Edit-' + fieldName); + } + + //Wrap input element with div + return $('
    ') + .addClass('jtable-input jtable-custom-input') + .append($input); + } + + //Create input according to field type + if (field.type == 'date') { + return this._createDateInputForField(field, fieldName, value); + } else if (field.type == 'textarea') { + return this._createTextAreaForField(field, fieldName, value); + } else if (field.type == 'password') { + return this._createPasswordInputForField(field, fieldName, value); + } else if (field.type == 'checkbox') { + return this._createCheckboxForField(field, fieldName, value); + } else if (field.options) { + if (field.type == 'radiobutton') { + return this._createRadioButtonListForField(field, fieldName, value, record, formType); + } else { + return this._createDropDownListForField(field, fieldName, value, record, formType, form); + } + } else { + return this._createTextInputForField(field, fieldName, value); + } + }, + + //Creates a hidden input element with given name and value. + _createInputForHidden: function (fieldName, value) { + if (value == undefined) { + value = ""; + } + + return $('') + .val(value); + }, + + /* Creates a date input for a field. + *************************************************************************/ + _createDateInputForField: function (field, fieldName, value) { + var $input = $(''); + if(value != undefined) { + $input.val(value); + } + + var displayFormat = field.displayFormat || this.options.defaultDateFormat; + $input.datepicker({ dateFormat: displayFormat }); + return $('
    ') + .addClass('jtable-input jtable-date-input') + .append($input); + }, + + /* Creates a textarea element for a field. + *************************************************************************/ + _createTextAreaForField: function (field, fieldName, value) { + var $textArea = $(''); + if (value != undefined) { + $textArea.val(value); + } + + return $('
    ') + .addClass('jtable-input jtable-textarea-input') + .append($textArea); + }, + + /* Creates a standart textbox for a field. + *************************************************************************/ + _createTextInputForField: function (field, fieldName, value) { + var $input = $(''); + if (value != undefined) { + $input.val(value); + } + + return $('
    ') + .addClass('jtable-input jtable-text-input') + .append($input); + }, + + /* Creates a password input for a field. + *************************************************************************/ + _createPasswordInputForField: function (field, fieldName, value) { + var $input = $(''); + if (value != undefined) { + $input.val(value); + } + + return $('
    ') + .addClass('jtable-input jtable-password-input') + .append($input); + }, + + /* Creates a checkboxfor a field. + *************************************************************************/ + _createCheckboxForField: function (field, fieldName, value) { + var self = this; + + //If value is undefined, get unchecked state's value + if (value == undefined) { + value = self._getCheckBoxPropertiesForFieldByState(fieldName, false).Value; + } + + //Create a container div + var $containerDiv = $('
    ') + .addClass('jtable-input jtable-checkbox-input'); + + //Create checkbox and check if needed + var $checkBox = $('') + .appendTo($containerDiv); + if (value != undefined) { + $checkBox.val(value); + } + + //Create display text of checkbox for current state + var $textSpan = $('' + (field.formText || self._getCheckBoxTextForFieldByValue(fieldName, value)) + '') + .appendTo($containerDiv); + + //Check the checkbox if it's value is checked-value + if (self._getIsCheckBoxSelectedForFieldByValue(fieldName, value)) { + $checkBox.attr('checked', 'checked'); + } + + //This method sets checkbox's value and text according to state of the checkbox + var refreshCheckBoxValueAndText = function () { + var checkboxProps = self._getCheckBoxPropertiesForFieldByState(fieldName, $checkBox.is(':checked')); + $checkBox.attr('value', checkboxProps.Value); + $textSpan.html(field.formText || checkboxProps.DisplayText); + }; + + //Register to click event to change display text when state of checkbox is changed. + $checkBox.click(function () { + refreshCheckBoxValueAndText(); + }); + + //Change checkbox state when clicked to text + if (field.setOnTextClick != false) { + $textSpan + .addClass('jtable-option-text-clickable') + .click(function () { + if ($checkBox.is(':checked')) { + $checkBox.attr('checked', false); + } else { + $checkBox.attr('checked', true); + } + + refreshCheckBoxValueAndText(); + }); + } + + return $containerDiv; + }, + + /* Creates a drop down list (combobox) input element for a field. + *************************************************************************/ + _createDropDownListForField: function (field, fieldName, value, record, source, form) { + + //Create a container div + var $containerDiv = $('
    ') + .addClass('jtable-input jtable-dropdown-input'); + + //Create select element + var $select = $('') + .appendTo($containerDiv); + + //add options + var options = this._getOptionsForField(fieldName, { + record: record, + source: source, + form: form, + dependedValues: this._createDependedValuesUsingForm(form, field.dependsOn) + }); + + this._fillDropDownListWithOptions($select, options, value); + + return $containerDiv; + }, + + /* Fills a dropdown list with given options. + *************************************************************************/ + _fillDropDownListWithOptions: function ($select, options, value) { + $select.empty(); + for (var i = 0; i < options.length; i++) { + $('' + options[i].DisplayText + '') + .val(options[i].Value) + .appendTo($select); + } + }, + + /* Creates depended values object from given form. + *************************************************************************/ + _createDependedValuesUsingForm: function ($form, dependsOn) { + if (!dependsOn) { + return {}; + } + + var dependedValues = {}; + + for (var i = 0; i < dependsOn.length; i++) { + var dependedField = dependsOn[i]; + + var $dependsOn = $form.find('select[name=' + dependedField + ']'); + if ($dependsOn.length <= 0) { + continue; + } + + dependedValues[dependedField] = $dependsOn.val(); + } + + + return dependedValues; + }, + + /* Creates a radio button list for a field. + *************************************************************************/ + _createRadioButtonListForField: function (field, fieldName, value, record, source) { + var $containerDiv = $('
    ') + .addClass('jtable-input jtable-radiobuttonlist-input'); + + var options = this._getOptionsForField(fieldName, { + record: record, + source: source + }); + + $.each(options, function(i, option) { + var $radioButtonDiv = $('
    ') + .addClass('jtable-radio-input') + .appendTo($containerDiv); + + var $radioButton = $('') + .val(option.Value) + .appendTo($radioButtonDiv); + + var $textSpan = $('') + .html(option.DisplayText) + .appendTo($radioButtonDiv); + + if (field.setOnTextClick != false) { + $textSpan + .addClass('jtable-option-text-clickable') + .click(function () { + if (!$radioButton.is(':checked')) { + $radioButton.attr('checked', true); + } + }); + } + }); + + return $containerDiv; + }, + + /* Gets display text for a checkbox field. + *************************************************************************/ + _getCheckBoxTextForFieldByValue: function (fieldName, value) { + return this.options.fields[fieldName].values[value]; + }, + + /* Returns true if given field's value must be checked state. + *************************************************************************/ + _getIsCheckBoxSelectedForFieldByValue: function (fieldName, value) { + return (this._createCheckBoxStateArrayForFieldWithCaching(fieldName)[1].Value.toString() == value.toString()); + }, + + /* Gets an object for a checkbox field that has Value and DisplayText + * properties. + *************************************************************************/ + _getCheckBoxPropertiesForFieldByState: function (fieldName, checked) { + return this._createCheckBoxStateArrayForFieldWithCaching(fieldName)[(checked ? 1 : 0)]; + }, + + /* Calls _createCheckBoxStateArrayForField with caching. + *************************************************************************/ + _createCheckBoxStateArrayForFieldWithCaching: function (fieldName) { + var cacheKey = 'checkbox_' + fieldName; + if (!this._cache[cacheKey]) { + + this._cache[cacheKey] = this._createCheckBoxStateArrayForField(fieldName); + } + + return this._cache[cacheKey]; + }, + + /* Creates a two element array of objects for states of a checkbox field. + * First element for unchecked state, second for checked state. + * Each object has two properties: Value and DisplayText + *************************************************************************/ + _createCheckBoxStateArrayForField: function (fieldName) { + var stateArray = []; + var currentIndex = 0; + $.each(this.options.fields[fieldName].values, function (propName, propValue) { + if (currentIndex++ < 2) { + stateArray.push({ 'Value': propName, 'DisplayText': propValue }); + } + }); + + return stateArray; + }, + + /* Searches a form for dependend dropdowns and makes them cascaded. + */ + _makeCascadeDropDowns: function ($form, record, source) { + var self = this; + + $form.find('select') //for each combobox + .each(function () { + var $thisDropdown = $(this); + + //get field name + var fieldName = $thisDropdown.attr('name'); + if (!fieldName) { + return; + } + + var field = self.options.fields[fieldName]; + + //check if this combobox depends on others + if (!field.dependsOn) { + return; + } + + //for each dependency + $.each(field.dependsOn, function (index, dependsOnField) { + //find the depended combobox + var $dependsOnDropdown = $form.find('select[name=' + dependsOnField + ']'); + //when depended combobox changes + $dependsOnDropdown.change(function () { + + //Refresh options + var funcParams = { + record: record, + source: source, + form: $form, + dependedValues: {} + }; + funcParams.dependedValues = self._createDependedValuesUsingForm($form, field.dependsOn); + var options = self._getOptionsForField(fieldName, funcParams); + + //Fill combobox with new options + self._fillDropDownListWithOptions($thisDropdown, options, undefined); + + //Thigger change event to refresh multi cascade dropdowns. + $thisDropdown.change(); + }); + }); + }); + }, + + /* Updates values of a record from given form + *************************************************************************/ + _updateRecordValuesFromForm: function (record, $form) { + for (var i = 0; i < this._fieldList.length; i++) { + var fieldName = this._fieldList[i]; + var field = this.options.fields[fieldName]; + + //Do not update non-editable fields + if (field.edit == false) { + continue; + } + + //Get field name and the input element of this field in the form + var $inputElement = $form.find('[name="' + fieldName + '"]'); + if ($inputElement.length <= 0) { + continue; + } + + //Update field in record according to it's type + if (field.type == 'date') { + var dateVal = $inputElement.val(); + if (dateVal) { + var displayFormat = field.displayFormat || this.options.defaultDateFormat; + try { + var date = $.datepicker.parseDate(displayFormat, dateVal); + record[fieldName] = '/Date(' + date.getTime() + ')/'; + } catch (e) { + //TODO: Handle incorrect/different date formats + this._logWarn('Date format is incorrect for field ' + fieldName + ': ' + dateVal); + record[fieldName] = undefined; + } + } else { + this._logDebug('Date is empty for ' + fieldName); + record[fieldName] = undefined; //TODO: undefined, null or empty string? + } + } else if (field.options && field.type == 'radiobutton') { + var $checkedElement = $inputElement.filter(':checked'); + if ($checkedElement.length) { + record[fieldName] = $checkedElement.val(); + } else { + record[fieldName] = undefined; + } + } else { + record[fieldName] = $inputElement.val(); + } + } + }, + + /* Sets enabled/disabled state of a dialog button. + *************************************************************************/ + _setEnabledOfDialogButton: function ($button, enabled, buttonText) { + if (!$button) { + return; + } + + if (enabled != false) { + $button + .removeAttr('disabled') + .removeClass('ui-state-disabled'); + } else { + $button + .attr('disabled', 'disabled') + .addClass('ui-state-disabled'); + } + + if (buttonText) { + $button + .find('span') + .text(buttonText); + } + } + + }); + +})(jQuery); diff --git a/dev/jquery.jtable.header.txt b/dev/jquery.jtable.header.txt new file mode 100644 index 0000000..35b3106 --- /dev/null +++ b/dev/jquery.jtable.header.txt @@ -0,0 +1,28 @@ +/* + +jTable 2.4.0 +http://www.jtable.org + +--------------------------------------------------------------------------- + +Copyright (C) 2011-2014 by Halil İbrahim Kalkan (http://www.halilibrahimkalkan.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +*/ \ No newline at end of file diff --git a/dev/jquery.jtable.masterchild.js b/dev/jquery.jtable.masterchild.js new file mode 100644 index 0000000..309ba89 --- /dev/null +++ b/dev/jquery.jtable.masterchild.js @@ -0,0 +1,171 @@ +/************************************************************************ +* MASTER/CHILD tables extension for jTable * +*************************************************************************/ +(function ($) { + + //Reference to base object members + var base = { + _removeRowsFromTable: $.hik.jtable.prototype._removeRowsFromTable + }; + + //extension members + $.extend(true, $.hik.jtable.prototype, { + + /************************************************************************ + * DEFAULT OPTIONS / EVENTS * + *************************************************************************/ + options: { + openChildAsAccordion: false + }, + + /************************************************************************ + * PUBLIC METHODS * + *************************************************************************/ + + /* Creates and opens a new child table for given row. + *************************************************************************/ + openChildTable: function ($row, tableOptions, opened) { + var self = this; + + //Apply theming as same as parent table unless explicitily set + if (tableOptions.jqueryuiTheme == undefined) { + tableOptions.jqueryuiTheme = self.options.jqueryuiTheme; + } + + //Show close button as default + tableOptions.showCloseButton = (tableOptions.showCloseButton != false); + + //Close child table when close button is clicked (default behavior) + if (tableOptions.showCloseButton && !tableOptions.closeRequested) { + tableOptions.closeRequested = function () { + self.closeChildTable($row); + }; + } + + //If accordion style, close open child table (if it does exists) + if (self.options.openChildAsAccordion) { + $row.siblings('.jtable-data-row').each(function () { + self.closeChildTable($(this)); + }); + } + + //Close child table for this row and open new one for child table + self.closeChildTable($row, function () { + var $childRowColumn = self.getChildRow($row).children('td').empty(); + var $childTableContainer = $('
    ') + .addClass('jtable-child-table-container') + .appendTo($childRowColumn); + $childRowColumn.data('childTable', $childTableContainer); + $childTableContainer.jtable(tableOptions); + self.openChildRow($row); + $childTableContainer.hide().slideDown('fast', function () { + if (opened) { + opened({ + childTable: $childTableContainer + }); + } + }); + }); + }, + + /* Closes child table for given row. + *************************************************************************/ + closeChildTable: function ($row, closed) { + var self = this; + + var $childRowColumn = this.getChildRow($row).children('td'); + var $childTable = $childRowColumn.data('childTable'); + if (!$childTable) { + if (closed) { + closed(); + } + + return; + } + + $childRowColumn.data('childTable', null); + $childTable.slideUp('fast', function () { + $childTable.jtable('destroy'); + $childTable.remove(); + self.closeChildRow($row); + if (closed) { + closed(); + } + }); + }, + + /* Returns a boolean value indicates that if a child row is open for given row. + *************************************************************************/ + isChildRowOpen: function ($row) { + return (this.getChildRow($row).is(':visible')); + }, + + /* Gets child row for given row, opens it if it's closed (Creates if needed). + *************************************************************************/ + getChildRow: function ($row) { + return $row.data('childRow') || this._createChildRow($row); + }, + + /* Creates and opens child row for given row. + *************************************************************************/ + openChildRow: function ($row) { + var $childRow = this.getChildRow($row); + if (!$childRow.is(':visible')) { + $childRow.show(); + } + + return $childRow; + }, + + /* Closes child row if it's open. + *************************************************************************/ + closeChildRow: function ($row) { + var $childRow = this.getChildRow($row); + if ($childRow.is(':visible')) { + $childRow.hide(); + } + }, + + /************************************************************************ + * OVERRIDED METHODS * + *************************************************************************/ + + /* Overrides _removeRowsFromTable method to remove child rows of deleted rows. + *************************************************************************/ + _removeRowsFromTable: function ($rows, reason) { + //var self = this; + + if (reason == 'deleted') { + $rows.each(function () { + var $row = $(this); + var $childRow = $row.data('childRow'); + if ($childRow) { + //self.closeChildTable($row); //Removed since it causes "Uncaught Error: cannot call methods on jtable prior to initialization; attempted to call method 'destroy'" + $childRow.remove(); + } + }); + } + + base._removeRowsFromTable.apply(this, arguments); + }, + + /************************************************************************ + * PRIVATE METHODS * + *************************************************************************/ + + /* Creates a child row for a row, hides and returns it. + *************************************************************************/ + _createChildRow: function ($row) { + var totalColumnCount = this._$table.find('thead th').length; + var $childRow = $('') + .addClass('jtable-child-row') + .append(''); + $row.after($childRow); + $row.data('childRow', $childRow); + $childRow.hide(); + return $childRow; + } + + }); + +})(jQuery); \ No newline at end of file diff --git a/dev/jquery.jtable.paging.js b/dev/jquery.jtable.paging.js new file mode 100644 index 0000000..0f25000 --- /dev/null +++ b/dev/jquery.jtable.paging.js @@ -0,0 +1,595 @@ +/************************************************************************ +* PAGING extension for jTable * +*************************************************************************/ +(function ($) { + + //Reference to base object members + var base = { + load: $.hik.jtable.prototype.load, + _create: $.hik.jtable.prototype._create, + _setOption: $.hik.jtable.prototype._setOption, + _createRecordLoadUrl: $.hik.jtable.prototype._createRecordLoadUrl, + _createJtParamsForLoading: $.hik.jtable.prototype._createJtParamsForLoading, + _addRowToTable: $.hik.jtable.prototype._addRowToTable, + _addRow: $.hik.jtable.prototype._addRow, + _removeRowsFromTable: $.hik.jtable.prototype._removeRowsFromTable, + _onRecordsLoaded: $.hik.jtable.prototype._onRecordsLoaded + }; + + //extension members + $.extend(true, $.hik.jtable.prototype, { + + /************************************************************************ + * DEFAULT OPTIONS / EVENTS * + *************************************************************************/ + options: { + paging: false, + pageList: 'normal', //possible values: 'minimal', 'normal' + pageSize: 10, + pageSizes: [10, 25, 50, 100, 250, 500], + pageSizeChangeArea: true, + gotoPageArea: 'combobox', //possible values: 'textbox', 'combobox', 'none' + + messages: { + pagingInfo: 'Showing {0}-{1} of {2}', + pageSizeChangeLabel: 'Row count', + gotoPageLabel: 'Go to page' + } + }, + + /************************************************************************ + * PRIVATE FIELDS * + *************************************************************************/ + + _$bottomPanel: null, //Reference to the panel at the bottom of the table (jQuery object) + _$pagingListArea: null, //Reference to the page list area in to bottom panel (jQuery object) + _$pageSizeChangeArea: null, //Reference to the page size change area in to bottom panel (jQuery object) + _$pageInfoSpan: null, //Reference to the paging info area in to bottom panel (jQuery object) + _$gotoPageArea: null, //Reference to 'Go to page' input area in to bottom panel (jQuery object) + _$gotoPageInput: null, //Reference to 'Go to page' input in to bottom panel (jQuery object) + _totalRecordCount: 0, //Total count of records on all pages + _currentPageNo: 1, //Current page number + + /************************************************************************ + * CONSTRUCTOR AND INITIALIZING METHODS * + *************************************************************************/ + + /* Overrides base method to do paging-specific constructions. + *************************************************************************/ + _create: function() { + base._create.apply(this, arguments); + if (this.options.paging) { + this._loadPagingSettings(); + this._createBottomPanel(); + this._createPageListArea(); + this._createGotoPageInput(); + this._createPageSizeSelection(); + } + }, + + /* Loads user preferences for paging. + *************************************************************************/ + _loadPagingSettings: function() { + if (!this.options.saveUserPreferences) { + return; + } + + var pageSize = this._getCookie('page-size'); + if (pageSize) { + this.options.pageSize = this._normalizeNumber(pageSize, 1, 1000000, this.options.pageSize); + } + }, + + /* Creates bottom panel and adds to the page. + *************************************************************************/ + _createBottomPanel: function() { + this._$bottomPanel = $('
    ') + .addClass('jtable-bottom-panel') + .insertAfter(this._$table); + + this._jqueryuiThemeAddClass(this._$bottomPanel, 'ui-state-default'); + + $('
    ').addClass('jtable-left-area').appendTo(this._$bottomPanel); + $('
    ').addClass('jtable-right-area').appendTo(this._$bottomPanel); + }, + + /* Creates page list area. + *************************************************************************/ + _createPageListArea: function() { + this._$pagingListArea = $('') + .addClass('jtable-page-list') + .appendTo(this._$bottomPanel.find('.jtable-left-area')); + + this._$pageInfoSpan = $('') + .addClass('jtable-page-info') + .appendTo(this._$bottomPanel.find('.jtable-right-area')); + }, + + /* Creates page list change area. + *************************************************************************/ + _createPageSizeSelection: function() { + var self = this; + + if (!self.options.pageSizeChangeArea) { + return; + } + + //Add current page size to page sizes list if not contains it + if (self._findIndexInArray(self.options.pageSize, self.options.pageSizes) < 0) { + self.options.pageSizes.push(parseInt(self.options.pageSize)); + self.options.pageSizes.sort(function(a, b) { return a - b; }); + } + + //Add a span to contain page size change items + self._$pageSizeChangeArea = $('') + .addClass('jtable-page-size-change') + .appendTo(self._$bottomPanel.find('.jtable-left-area')); + + //Page size label + self._$pageSizeChangeArea.append('' + self.options.messages.pageSizeChangeLabel + ': '); + + //Page size change combobox + var $pageSizeChangeCombobox = $('').appendTo(self._$pageSizeChangeArea); + + //Add page sizes to the combobox + for (var i = 0; i < self.options.pageSizes.length; i++) { + $pageSizeChangeCombobox.append(''); + } + + //Select current page size + $pageSizeChangeCombobox.val(self.options.pageSize); + + //Change page size on combobox change + $pageSizeChangeCombobox.change(function() { + self._changePageSize(parseInt($(this).val())); + }); + }, + + /* Creates go to page area. + *************************************************************************/ + _createGotoPageInput: function() { + var self = this; + + if (!self.options.gotoPageArea || self.options.gotoPageArea == 'none') { + return; + } + + //Add a span to contain goto page items + this._$gotoPageArea = $('') + .addClass('jtable-goto-page') + .appendTo(self._$bottomPanel.find('.jtable-left-area')); + + //Goto page label + this._$gotoPageArea.append('' + self.options.messages.gotoPageLabel + ': '); + + //Goto page input + if (self.options.gotoPageArea == 'combobox') { + + self._$gotoPageInput = $('') + .appendTo(this._$gotoPageArea) + .data('pageCount', 1) + .change(function() { + self._changePage(parseInt($(this).val())); + }); + self._$gotoPageInput.append(''); + + } else { //textbox + + self._$gotoPageInput = $('') + .appendTo(this._$gotoPageArea) + .keypress(function(event) { + if (event.which == 13) { //enter + event.preventDefault(); + self._changePage(parseInt(self._$gotoPageInput.val())); + } else if (event.which == 43) { // + + event.preventDefault(); + self._changePage(parseInt(self._$gotoPageInput.val()) + 1); + } else if (event.which == 45) { // - + event.preventDefault(); + self._changePage(parseInt(self._$gotoPageInput.val()) - 1); + } else { + //Allow only digits + var isValid = ( + (47 < event.keyCode && event.keyCode < 58 && event.shiftKey == false && event.altKey == false) + || (event.keyCode == 8) + || (event.keyCode == 9) + ); + + if (!isValid) { + event.preventDefault(); + } + } + }); + + } + }, + + /* Refreshes the 'go to page' input. + *************************************************************************/ + _refreshGotoPageInput: function() { + if (!this.options.gotoPageArea || this.options.gotoPageArea == 'none') { + return; + } + + if (this._totalRecordCount <= 0) { + this._$gotoPageArea.hide(); + } else { + this._$gotoPageArea.show(); + } + + if (this.options.gotoPageArea == 'combobox') { + var oldPageCount = this._$gotoPageInput.data('pageCount'); + var currentPageCount = this._calculatePageCount(); + if (oldPageCount != currentPageCount) { + this._$gotoPageInput.empty(); + + //Skip some pages is there are too many pages + var pageStep = 1; + if (currentPageCount > 10000) { + pageStep = 100; + } else if (currentPageCount > 5000) { + pageStep = 10; + } else if (currentPageCount > 2000) { + pageStep = 5; + } else if (currentPageCount > 1000) { + pageStep = 2; + } + + for (var i = pageStep; i <= currentPageCount; i += pageStep) { + this._$gotoPageInput.append(''); + } + + this._$gotoPageInput.data('pageCount', currentPageCount); + } + } + + //same for 'textbox' and 'combobox' + this._$gotoPageInput.val(this._currentPageNo); + }, + + /************************************************************************ + * OVERRIDED METHODS * + *************************************************************************/ + + /* Overrides load method to set current page to 1. + *************************************************************************/ + load: function() { + this._currentPageNo = 1; + + base.load.apply(this, arguments); + }, + + /* Used to change options dynamically after initialization. + *************************************************************************/ + _setOption: function(key, value) { + base._setOption.apply(this, arguments); + + if (key == 'pageSize') { + this._changePageSize(parseInt(value)); + } + }, + + /* Changes current page size with given value. + *************************************************************************/ + _changePageSize: function(pageSize) { + if (pageSize == this.options.pageSize) { + return; + } + + this.options.pageSize = pageSize; + + //Normalize current page + var pageCount = this._calculatePageCount(); + if (this._currentPageNo > pageCount) { + this._currentPageNo = pageCount; + } + if (this._currentPageNo <= 0) { + this._currentPageNo = 1; + } + + //if user sets one of the options on the combobox, then select it. + var $pageSizeChangeCombobox = this._$bottomPanel.find('.jtable-page-size-change select'); + if ($pageSizeChangeCombobox.length > 0) { + if (parseInt($pageSizeChangeCombobox.val()) != pageSize) { + var selectedOption = $pageSizeChangeCombobox.find('option[value=' + pageSize + ']'); + if (selectedOption.length > 0) { + $pageSizeChangeCombobox.val(pageSize); + } + } + } + + this._savePagingSettings(); + this._reloadTable(); + }, + + /* Saves user preferences for paging + *************************************************************************/ + _savePagingSettings: function() { + if (!this.options.saveUserPreferences) { + return; + } + + this._setCookie('page-size', this.options.pageSize); + }, + + /* Overrides _createRecordLoadUrl method to add paging info to URL. + *************************************************************************/ + _createRecordLoadUrl: function() { + var loadUrl = base._createRecordLoadUrl.apply(this, arguments); + loadUrl = this._addPagingInfoToUrl(loadUrl, this._currentPageNo); + return loadUrl; + }, + + /* Overrides _createJtParamsForLoading method to add paging parameters to jtParams object. + *************************************************************************/ + _createJtParamsForLoading: function () { + var jtParams = base._createJtParamsForLoading.apply(this, arguments); + + if (this.options.paging) { + jtParams.jtStartIndex = (this._currentPageNo - 1) * this.options.pageSize; + jtParams.jtPageSize = this.options.pageSize; + } + + return jtParams; + }, + + /* Overrides _addRowToTable method to re-load table when a new row is created. + * NOTE: THIS METHOD IS DEPRECATED AND WILL BE REMOVED FROM FEATURE RELEASES. + * USE _addRow METHOD. + *************************************************************************/ + _addRowToTable: function ($tableRow, index, isNewRow) { + if (isNewRow && this.options.paging) { + this._reloadTable(); + return; + } + + base._addRowToTable.apply(this, arguments); + }, + + /* Overrides _addRow method to re-load table when a new row is created. + *************************************************************************/ + _addRow: function ($row, options) { + if (options && options.isNewRow && this.options.paging) { + this._reloadTable(); + return; + } + + base._addRow.apply(this, arguments); + }, + + /* Overrides _removeRowsFromTable method to re-load table when a row is removed from table. + *************************************************************************/ + _removeRowsFromTable: function ($rows, reason) { + base._removeRowsFromTable.apply(this, arguments); + + if (this.options.paging) { + if (this._$tableRows.length <= 0 && this._currentPageNo > 1) { + --this._currentPageNo; + } + + this._reloadTable(); + } + }, + + /* Overrides _onRecordsLoaded method to to do paging specific tasks. + *************************************************************************/ + _onRecordsLoaded: function (data) { + if (this.options.paging) { + this._totalRecordCount = data.TotalRecordCount; + this._createPagingList(); + this._createPagingInfo(); + this._refreshGotoPageInput(); + } + + base._onRecordsLoaded.apply(this, arguments); + }, + + /************************************************************************ + * PRIVATE METHODS * + *************************************************************************/ + + /* Adds jtStartIndex and jtPageSize parameters to a URL as query string. + *************************************************************************/ + _addPagingInfoToUrl: function (url, pageNumber) { + if (!this.options.paging) { + return url; + } + + var jtStartIndex = (pageNumber - 1) * this.options.pageSize; + var jtPageSize = this.options.pageSize; + + return (url + (url.indexOf('?') < 0 ? '?' : '&') + 'jtStartIndex=' + jtStartIndex + '&jtPageSize=' + jtPageSize); + }, + + /* Creates and shows the page list. + *************************************************************************/ + _createPagingList: function () { + if (this.options.pageSize <= 0) { + return; + } + + this._$pagingListArea.empty(); + if (this._totalRecordCount <= 0) { + return; + } + + var pageCount = this._calculatePageCount(); + + this._createFirstAndPreviousPageButtons(); + if (this.options.pageList == 'normal') { + this._createPageNumberButtons(this._calculatePageNumbers(pageCount)); + } + this._createLastAndNextPageButtons(pageCount); + this._bindClickEventsToPageNumberButtons(); + }, + + /* Creates and shows previous and first page links. + *************************************************************************/ + _createFirstAndPreviousPageButtons: function () { + var $first = $('') + .addClass('jtable-page-number-first') + .html('<<') + .data('pageNumber', 1) + .appendTo(this._$pagingListArea); + + var $previous = $('') + .addClass('jtable-page-number-previous') + .html('<') + .data('pageNumber', this._currentPageNo - 1) + .appendTo(this._$pagingListArea); + + this._jqueryuiThemeAddClass($first, 'ui-button ui-state-default', 'ui-state-hover'); + this._jqueryuiThemeAddClass($previous, 'ui-button ui-state-default', 'ui-state-hover'); + + if (this._currentPageNo <= 1) { + $first.addClass('jtable-page-number-disabled'); + $previous.addClass('jtable-page-number-disabled'); + this._jqueryuiThemeAddClass($first, 'ui-state-disabled'); + this._jqueryuiThemeAddClass($previous, 'ui-state-disabled'); + } + }, + + /* Creates and shows next and last page links. + *************************************************************************/ + _createLastAndNextPageButtons: function (pageCount) { + var $next = $('') + .addClass('jtable-page-number-next') + .html('>') + .data('pageNumber', this._currentPageNo + 1) + .appendTo(this._$pagingListArea); + var $last = $('') + .addClass('jtable-page-number-last') + .html('>>') + .data('pageNumber', pageCount) + .appendTo(this._$pagingListArea); + + this._jqueryuiThemeAddClass($next, 'ui-button ui-state-default', 'ui-state-hover'); + this._jqueryuiThemeAddClass($last, 'ui-button ui-state-default', 'ui-state-hover'); + + if (this._currentPageNo >= pageCount) { + $next.addClass('jtable-page-number-disabled'); + $last.addClass('jtable-page-number-disabled'); + this._jqueryuiThemeAddClass($next, 'ui-state-disabled'); + this._jqueryuiThemeAddClass($last, 'ui-state-disabled'); + } + }, + + /* Creates and shows page number links for given number array. + *************************************************************************/ + _createPageNumberButtons: function (pageNumbers) { + var previousNumber = 0; + for (var i = 0; i < pageNumbers.length; i++) { + //Create "..." between page numbers if needed + if ((pageNumbers[i] - previousNumber) > 1) { + $('') + .addClass('jtable-page-number-space') + .html('...') + .appendTo(this._$pagingListArea); + } + + this._createPageNumberButton(pageNumbers[i]); + previousNumber = pageNumbers[i]; + } + }, + + /* Creates a page number link and adds to paging area. + *************************************************************************/ + _createPageNumberButton: function (pageNumber) { + var $pageNumber = $('') + .addClass('jtable-page-number') + .html(pageNumber) + .data('pageNumber', pageNumber) + .appendTo(this._$pagingListArea); + + this._jqueryuiThemeAddClass($pageNumber, 'ui-button ui-state-default', 'ui-state-hover'); + + if (this._currentPageNo == pageNumber) { + $pageNumber.addClass('jtable-page-number-active jtable-page-number-disabled'); + this._jqueryuiThemeAddClass($pageNumber, 'ui-state-active'); + } + }, + + /* Calculates total page count according to page size and total record count. + *************************************************************************/ + _calculatePageCount: function () { + var pageCount = Math.floor(this._totalRecordCount / this.options.pageSize); + if (this._totalRecordCount % this.options.pageSize != 0) { + ++pageCount; + } + + return pageCount; + }, + + /* Calculates page numbers and returns an array of these numbers. + *************************************************************************/ + _calculatePageNumbers: function (pageCount) { + if (pageCount <= 4) { + //Show all pages + var pageNumbers = []; + for (var i = 1; i <= pageCount; ++i) { + pageNumbers.push(i); + } + + return pageNumbers; + } else { + //show first three, last three, current, previous and next page numbers + var shownPageNumbers = [1, 2, pageCount - 1, pageCount]; + var previousPageNo = this._normalizeNumber(this._currentPageNo - 1, 1, pageCount, 1); + var nextPageNo = this._normalizeNumber(this._currentPageNo + 1, 1, pageCount, 1); + + this._insertToArrayIfDoesNotExists(shownPageNumbers, previousPageNo); + this._insertToArrayIfDoesNotExists(shownPageNumbers, this._currentPageNo); + this._insertToArrayIfDoesNotExists(shownPageNumbers, nextPageNo); + + shownPageNumbers.sort(function (a, b) { return a - b; }); + return shownPageNumbers; + } + }, + + /* Creates and shows paging informations. + *************************************************************************/ + _createPagingInfo: function () { + if (this._totalRecordCount <= 0) { + this._$pageInfoSpan.empty(); + return; + } + + var startNo = (this._currentPageNo - 1) * this.options.pageSize + 1; + var endNo = this._currentPageNo * this.options.pageSize; + endNo = this._normalizeNumber(endNo, startNo, this._totalRecordCount, 0); + + if (endNo >= startNo) { + var pagingInfoMessage = this._formatString(this.options.messages.pagingInfo, startNo, endNo, this._totalRecordCount); + this._$pageInfoSpan.html(pagingInfoMessage); + } + }, + + /* Binds click events of all page links to change the page. + *************************************************************************/ + _bindClickEventsToPageNumberButtons: function () { + var self = this; + self._$pagingListArea + .find('.jtable-page-number,.jtable-page-number-previous,.jtable-page-number-next,.jtable-page-number-first,.jtable-page-number-last') + .not('.jtable-page-number-disabled') + .click(function (e) { + e.preventDefault(); + self._changePage($(this).data('pageNumber')); + }); + }, + + /* Changes current page to given value. + *************************************************************************/ + _changePage: function (pageNo) { + pageNo = this._normalizeNumber(pageNo, 1, this._calculatePageCount(), 1); + if (pageNo == this._currentPageNo) { + this._refreshGotoPageInput(); + return; + } + + this._currentPageNo = pageNo; + this._reloadTable(); + } + + }); + +})(jQuery); diff --git a/dev/jquery.jtable.selecting.js b/dev/jquery.jtable.selecting.js new file mode 100644 index 0000000..1c6dd60 --- /dev/null +++ b/dev/jquery.jtable.selecting.js @@ -0,0 +1,382 @@ +/************************************************************************ +* SELECTING extension for jTable * +*************************************************************************/ +(function ($) { + + //Reference to base object members + var base = { + _create: $.hik.jtable.prototype._create, + _addColumnsToHeaderRow: $.hik.jtable.prototype._addColumnsToHeaderRow, + _addCellsToRowUsingRecord: $.hik.jtable.prototype._addCellsToRowUsingRecord, + _onLoadingRecords: $.hik.jtable.prototype._onLoadingRecords, + _onRecordsLoaded: $.hik.jtable.prototype._onRecordsLoaded, + _onRowsRemoved: $.hik.jtable.prototype._onRowsRemoved + }; + + //extension members + $.extend(true, $.hik.jtable.prototype, { + + /************************************************************************ + * DEFAULT OPTIONS / EVENTS * + *************************************************************************/ + options: { + + //Options + selecting: false, + multiselect: false, + selectingCheckboxes: false, + selectOnRowClick: true, + + //Events + selectionChanged: function (event, data) { } + }, + + /************************************************************************ + * PRIVATE FIELDS * + *************************************************************************/ + + _selectedRecordIdsBeforeLoad: null, //This array is used to store selected row Id's to restore them after a page refresh (string array). + _$selectAllCheckbox: null, //Reference to the 'select/deselect all' checkbox (jQuery object) + _shiftKeyDown: false, //True, if shift key is currently down. + + /************************************************************************ + * CONSTRUCTOR * + *************************************************************************/ + + /* Overrides base method to do selecting-specific constructions. + *************************************************************************/ + _create: function () { + if (this.options.selecting && this.options.selectingCheckboxes) { + ++this._firstDataColumnOffset; + this._bindKeyboardEvents(); + } + + //Call base method + base._create.apply(this, arguments); + }, + + /* Registers to keyboard events those are needed for selection + *************************************************************************/ + _bindKeyboardEvents: function () { + var self = this; + //Register to events to set _shiftKeyDown value + $(document) + .keydown(function (event) { + switch (event.which) { + case 16: + self._shiftKeyDown = true; + break; + } + }) + .keyup(function (event) { + switch (event.which) { + case 16: + self._shiftKeyDown = false; + break; + } + }); + }, + + /************************************************************************ + * PUBLIC METHODS * + *************************************************************************/ + + /* Gets jQuery selection for currently selected rows. + *************************************************************************/ + selectedRows: function () { + return this._getSelectedRows(); + }, + + /* Makes row/rows 'selected'. + *************************************************************************/ + selectRows: function ($rows) { + this._selectRows($rows); + this._onSelectionChanged(); //TODO: trigger only if selected rows changes? + }, + + /************************************************************************ + * OVERRIDED METHODS * + *************************************************************************/ + + /* Overrides base method to add a 'select column' to header row. + *************************************************************************/ + _addColumnsToHeaderRow: function ($tr) { + if (this.options.selecting && this.options.selectingCheckboxes) { + if (this.options.multiselect) { + $tr.append(this._createSelectAllHeader()); + } else { + $tr.append(this._createEmptyCommandHeader()); + } + } + + base._addColumnsToHeaderRow.apply(this, arguments); + }, + + /* Overrides base method to add a 'delete command cell' to a row. + *************************************************************************/ + _addCellsToRowUsingRecord: function ($row) { + if (this.options.selecting) { + this._makeRowSelectable($row); + } + + base._addCellsToRowUsingRecord.apply(this, arguments); + }, + + /* Overrides base event to store selection list + *************************************************************************/ + _onLoadingRecords: function () { + if (this.options.selecting) { + this._storeSelectionList(); + } + + base._onLoadingRecords.apply(this, arguments); + }, + + /* Overrides base event to restore selection list + *************************************************************************/ + _onRecordsLoaded: function () { + if (this.options.selecting) { + this._restoreSelectionList(); + } + + base._onRecordsLoaded.apply(this, arguments); + }, + + /* Overrides base event to check is any selected row is being removed. + *************************************************************************/ + _onRowsRemoved: function ($rows, reason) { + if (this.options.selecting && (reason != 'reloading') && ($rows.filter('.jtable-row-selected').length > 0)) { + this._onSelectionChanged(); + } + + base._onRowsRemoved.apply(this, arguments); + }, + + /************************************************************************ + * PRIVATE METHODS * + *************************************************************************/ + + /* Creates a header column to select/deselect all rows. + *************************************************************************/ + _createSelectAllHeader: function () { + var self = this; + + var $columnHeader = $('') + .addClass('jtable-command-column-header jtable-column-header-selecting'); + this._jqueryuiThemeAddClass($columnHeader, 'ui-state-default'); + + var $headerContainer = $('
    ') + .addClass('jtable-column-header-container') + .appendTo($columnHeader); + + self._$selectAllCheckbox = $('') + .appendTo($headerContainer) + .click(function () { + if (self._$tableRows.length <= 0) { + self._$selectAllCheckbox.attr('checked', false); + return; + } + + var allRows = self._$tableBody.find('>tr.jtable-data-row'); + if (self._$selectAllCheckbox.is(':checked')) { + self._selectRows(allRows); + } else { + self._deselectRows(allRows); + } + + self._onSelectionChanged(); + }); + + return $columnHeader; + }, + + /* Stores Id's of currently selected records to _selectedRecordIdsBeforeLoad. + *************************************************************************/ + _storeSelectionList: function () { + var self = this; + + if (!self.options.selecting) { + return; + } + + self._selectedRecordIdsBeforeLoad = []; + self._getSelectedRows().each(function () { + self._selectedRecordIdsBeforeLoad.push(self._getKeyValueOfRecord($(this).data('record'))); + }); + }, + + /* Selects rows whose Id is in _selectedRecordIdsBeforeLoad; + *************************************************************************/ + _restoreSelectionList: function () { + var self = this; + + if (!self.options.selecting) { + return; + } + + var selectedRowCount = 0; + for (var i = 0; i < self._$tableRows.length; ++i) { + var recordId = self._getKeyValueOfRecord(self._$tableRows[i].data('record')); + if ($.inArray(recordId, self._selectedRecordIdsBeforeLoad) > -1) { + self._selectRows(self._$tableRows[i]); + ++selectedRowCount; + } + } + + if (self._selectedRecordIdsBeforeLoad.length > 0 && self._selectedRecordIdsBeforeLoad.length != selectedRowCount) { + self._onSelectionChanged(); + } + + self._selectedRecordIdsBeforeLoad = []; + self._refreshSelectAllCheckboxState(); + }, + + /* Gets all selected rows. + *************************************************************************/ + _getSelectedRows: function () { + return this._$tableBody + .find('>tr.jtable-row-selected'); + }, + + /* Adds selectable feature to a row. + *************************************************************************/ + _makeRowSelectable: function ($row) { + var self = this; + + //Select/deselect on row click + if (self.options.selectOnRowClick) { + $row.click(function () { + self._invertRowSelection($row); + }); + } + + //'select/deselect' checkbox column + if (self.options.selectingCheckboxes) { + var $cell = $('').addClass('jtable-selecting-column'); + var $selectCheckbox = $('').appendTo($cell); + if (!self.options.selectOnRowClick) { + $selectCheckbox.click(function () { + self._invertRowSelection($row); + }); + } + + $row.append($cell); + } + }, + + /* Inverts selection state of a single row. + *************************************************************************/ + _invertRowSelection: function ($row) { + if ($row.hasClass('jtable-row-selected')) { + this._deselectRows($row); + } else { + //Shift key? + if (this._shiftKeyDown) { + var rowIndex = this._findRowIndex($row); + //try to select row and above rows until first selected row + var beforeIndex = this._findFirstSelectedRowIndexBeforeIndex(rowIndex) + 1; + if (beforeIndex > 0 && beforeIndex < rowIndex) { + this._selectRows(this._$tableBody.find('tr').slice(beforeIndex, rowIndex + 1)); + } else { + //try to select row and below rows until first selected row + var afterIndex = this._findFirstSelectedRowIndexAfterIndex(rowIndex) - 1; + if (afterIndex > rowIndex) { + this._selectRows(this._$tableBody.find('tr').slice(rowIndex, afterIndex + 1)); + } else { + //just select this row + this._selectRows($row); + } + } + } else { + this._selectRows($row); + } + } + + this._onSelectionChanged(); + }, + + /* Search for a selected row (that is before given row index) to up and returns it's index + *************************************************************************/ + _findFirstSelectedRowIndexBeforeIndex: function (rowIndex) { + for (var i = rowIndex - 1; i >= 0; --i) { + if (this._$tableRows[i].hasClass('jtable-row-selected')) { + return i; + } + } + + return -1; + }, + + /* Search for a selected row (that is after given row index) to down and returns it's index + *************************************************************************/ + _findFirstSelectedRowIndexAfterIndex: function (rowIndex) { + for (var i = rowIndex + 1; i < this._$tableRows.length; ++i) { + if (this._$tableRows[i].hasClass('jtable-row-selected')) { + return i; + } + } + + return -1; + }, + + /* Makes row/rows 'selected'. + *************************************************************************/ + _selectRows: function ($rows) { + if (!this.options.multiselect) { + this._deselectRows(this._getSelectedRows()); + } + + $rows.addClass('jtable-row-selected'); + this._jqueryuiThemeAddClass($rows, 'ui-state-highlight'); + + if (this.options.selectingCheckboxes) { + $rows.find('>td.jtable-selecting-column >input').prop('checked', true); + } + + this._refreshSelectAllCheckboxState(); + }, + + /* Makes row/rows 'non selected'. + *************************************************************************/ + _deselectRows: function ($rows) { + $rows.removeClass('jtable-row-selected ui-state-highlight'); + if (this.options.selectingCheckboxes) { + $rows.find('>td.jtable-selecting-column >input').prop('checked', false); + } + + this._refreshSelectAllCheckboxState(); + }, + + /* Updates state of the 'select/deselect' all checkbox according to count of selected rows. + *************************************************************************/ + _refreshSelectAllCheckboxState: function () { + if (!this.options.selectingCheckboxes || !this.options.multiselect) { + return; + } + + var totalRowCount = this._$tableRows.length; + var selectedRowCount = this._getSelectedRows().length; + + if (selectedRowCount == 0) { + this._$selectAllCheckbox.prop('indeterminate', false); + this._$selectAllCheckbox.attr('checked', false); + } else if (selectedRowCount == totalRowCount) { + this._$selectAllCheckbox.prop('indeterminate', false); + this._$selectAllCheckbox.attr('checked', true); + } else { + this._$selectAllCheckbox.attr('checked', false); + this._$selectAllCheckbox.prop('indeterminate', true); + } + }, + + /************************************************************************ + * EVENT RAISING METHODS * + *************************************************************************/ + + _onSelectionChanged: function () { + this._trigger("selectionChanged", null, {}); + } + + }); + +})(jQuery); diff --git a/dev/jquery.jtable.sorting.js b/dev/jquery.jtable.sorting.js new file mode 100644 index 0000000..b7e9fa5 --- /dev/null +++ b/dev/jquery.jtable.sorting.js @@ -0,0 +1,202 @@ +/************************************************************************ +* SORTING extension for jTable * +*************************************************************************/ +(function ($) { + + //Reference to base object members + var base = { + _initializeFields: $.hik.jtable.prototype._initializeFields, + _normalizeFieldOptions: $.hik.jtable.prototype._normalizeFieldOptions, + _createHeaderCellForField: $.hik.jtable.prototype._createHeaderCellForField, + _createRecordLoadUrl: $.hik.jtable.prototype._createRecordLoadUrl, + _createJtParamsForLoading: $.hik.jtable.prototype._createJtParamsForLoading + }; + + //extension members + $.extend(true, $.hik.jtable.prototype, { + + /************************************************************************ + * DEFAULT OPTIONS / EVENTS * + *************************************************************************/ + options: { + sorting: false, + multiSorting: false, + defaultSorting: '' + }, + + /************************************************************************ + * PRIVATE FIELDS * + *************************************************************************/ + + _lastSorting: null, //Last sorting of the table + + /************************************************************************ + * OVERRIDED METHODS * + *************************************************************************/ + + /* Overrides base method to create sorting array. + *************************************************************************/ + _initializeFields: function () { + base._initializeFields.apply(this, arguments); + + this._lastSorting = []; + if (this.options.sorting) { + this._buildDefaultSortingArray(); + } + }, + + /* Overrides _normalizeFieldOptions method to normalize sorting option for fields. + *************************************************************************/ + _normalizeFieldOptions: function (fieldName, props) { + base._normalizeFieldOptions.apply(this, arguments); + props.sorting = (props.sorting != false); + }, + + /* Overrides _createHeaderCellForField to make columns sortable. + *************************************************************************/ + _createHeaderCellForField: function (fieldName, field) { + var $headerCell = base._createHeaderCellForField.apply(this, arguments); + if (this.options.sorting && field.sorting) { + this._makeColumnSortable($headerCell, fieldName); + } + + return $headerCell; + }, + + /* Overrides _createRecordLoadUrl to add sorting specific info to URL. + *************************************************************************/ + _createRecordLoadUrl: function () { + var loadUrl = base._createRecordLoadUrl.apply(this, arguments); + loadUrl = this._addSortingInfoToUrl(loadUrl); + return loadUrl; + }, + + /************************************************************************ + * PRIVATE METHODS * + *************************************************************************/ + + /* Builds the sorting array according to defaultSorting string + *************************************************************************/ + _buildDefaultSortingArray: function () { + var self = this; + + $.each(self.options.defaultSorting.split(","), function (orderIndex, orderValue) { + $.each(self.options.fields, function (fieldName, fieldProps) { + if (fieldProps.sorting) { + var colOffset = orderValue.indexOf(fieldName); + if (colOffset > -1) { + if (orderValue.toUpperCase().indexOf(' DESC', colOffset) > -1) { + self._lastSorting.push({ + fieldName: fieldName, + sortOrder: 'DESC' + }); + } else { + self._lastSorting.push({ + fieldName: fieldName, + sortOrder: 'ASC' + }); + } + } + } + }); + }); + }, + + /* Makes a column sortable. + *************************************************************************/ + _makeColumnSortable: function ($columnHeader, fieldName) { + var self = this; + + $columnHeader + .addClass('jtable-column-header-sortable') + .click(function (e) { + e.preventDefault(); + + if (!self.options.multiSorting || !e.ctrlKey) { + self._lastSorting = []; //clear previous sorting + } + + self._sortTableByColumn($columnHeader); + }); + + //Set default sorting + $.each(this._lastSorting, function (sortIndex, sortField) { + if (sortField.fieldName == fieldName) { + if (sortField.sortOrder == 'DESC') { + $columnHeader.addClass('jtable-column-header-sorted-desc'); + } else { + $columnHeader.addClass('jtable-column-header-sorted-asc'); + } + } + }); + }, + + /* Sorts table according to a column header. + *************************************************************************/ + _sortTableByColumn: function ($columnHeader) { + //Remove sorting styles from all columns except this one + if (this._lastSorting.length == 0) { + $columnHeader.siblings().removeClass('jtable-column-header-sorted-asc jtable-column-header-sorted-desc'); + } + + //If current sorting list includes this column, remove it from the list + for (var i = 0; i < this._lastSorting.length; i++) { + if (this._lastSorting[i].fieldName == $columnHeader.data('fieldName')) { + this._lastSorting.splice(i--, 1); + } + } + + //Sort ASC or DESC according to current sorting state + if ($columnHeader.hasClass('jtable-column-header-sorted-asc')) { + $columnHeader.removeClass('jtable-column-header-sorted-asc').addClass('jtable-column-header-sorted-desc'); + this._lastSorting.push({ + 'fieldName': $columnHeader.data('fieldName'), + sortOrder: 'DESC' + }); + } else { + $columnHeader.removeClass('jtable-column-header-sorted-desc').addClass('jtable-column-header-sorted-asc'); + this._lastSorting.push({ + 'fieldName': $columnHeader.data('fieldName'), + sortOrder: 'ASC' + }); + } + + //Load current page again + this._reloadTable(); + }, + + /* Adds jtSorting parameter to a URL as query string. + *************************************************************************/ + _addSortingInfoToUrl: function (url) { + if (!this.options.sorting || this._lastSorting.length == 0) { + return url; + } + + var sorting = []; + $.each(this._lastSorting, function (idx, value) { + sorting.push(value.fieldName + ' ' + value.sortOrder); + }); + + return (url + (url.indexOf('?') < 0 ? '?' : '&') + 'jtSorting=' + sorting.join(",")); + }, + + /* Overrides _createJtParamsForLoading method to add sorging parameters to jtParams object. + *************************************************************************/ + _createJtParamsForLoading: function () { + var jtParams = base._createJtParamsForLoading.apply(this, arguments); + + if (this.options.sorting && this._lastSorting.length) { + var sorting = []; + $.each(this._lastSorting, function (idx, value) { + sorting.push(value.fieldName + ' ' + value.sortOrder); + }); + + jtParams.jtSorting = sorting.join(","); + } + + return jtParams; + } + + }); + +})(jQuery); \ No newline at end of file diff --git a/dev/jquery.jtable.utils.js b/dev/jquery.jtable.utils.js new file mode 100644 index 0000000..5080f16 --- /dev/null +++ b/dev/jquery.jtable.utils.js @@ -0,0 +1,159 @@ +/************************************************************************ +* Some UTULITY methods used by jTable * +*************************************************************************/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype, { + + /* Gets property value of an object recursively. + *************************************************************************/ + _getPropertyOfObject: function (obj, propName) { + if (propName.indexOf('.') < 0) { + return obj[propName]; + } else { + var preDot = propName.substring(0, propName.indexOf('.')); + var postDot = propName.substring(propName.indexOf('.') + 1); + return this._getPropertyOfObject(obj[preDot], postDot); + } + }, + + /* Sets property value of an object recursively. + *************************************************************************/ + _setPropertyOfObject: function (obj, propName, value) { + if (propName.indexOf('.') < 0) { + obj[propName] = value; + } else { + var preDot = propName.substring(0, propName.indexOf('.')); + var postDot = propName.substring(propName.indexOf('.') + 1); + this._setPropertyOfObject(obj[preDot], postDot, value); + } + }, + + /* Inserts a value to an array if it does not exists in the array. + *************************************************************************/ + _insertToArrayIfDoesNotExists: function (array, value) { + if ($.inArray(value, array) < 0) { + array.push(value); + } + }, + + /* Finds index of an element in an array according to given comparision function + *************************************************************************/ + _findIndexInArray: function (value, array, compareFunc) { + + //If not defined, use default comparision + if (!compareFunc) { + compareFunc = function (a, b) { + return a == b; + }; + } + + for (var i = 0; i < array.length; i++) { + if (compareFunc(value, array[i])) { + return i; + } + } + + return -1; + }, + + /* Normalizes a number between given bounds or sets to a defaultValue + * if it is undefined + *************************************************************************/ + _normalizeNumber: function (number, min, max, defaultValue) { + if (number == undefined || number == null || isNaN(number)) { + return defaultValue; + } + + if (number < min) { + return min; + } + + if (number > max) { + return max; + } + + return number; + }, + + /* Formats a string just like string.format in c#. + * Example: + * _formatString('Hello {0}','Halil') = 'Hello Halil' + *************************************************************************/ + _formatString: function () { + if (arguments.length == 0) { + return null; + } + + var str = arguments[0]; + for (var i = 1; i < arguments.length; i++) { + var placeHolder = '{' + (i - 1) + '}'; + str = str.replace(placeHolder, arguments[i]); + } + + return str; + }, + + /* Checks if given object is a jQuery Deferred object. + */ + _isDeferredObject: function (obj) { + return obj.then && obj.done && obj.fail; + }, + + //Logging methods //////////////////////////////////////////////////////// + + _logDebug: function (text) { + if (!window.console) { + return; + } + + console.log('jTable DEBUG: ' + text); + }, + + _logInfo: function (text) { + if (!window.console) { + return; + } + + console.log('jTable INFO: ' + text); + }, + + _logWarn: function (text) { + if (!window.console) { + return; + } + + console.log('jTable WARNING: ' + text); + }, + + _logError: function (text) { + if (!window.console) { + return; + } + + console.log('jTable ERROR: ' + text); + } + + }); + + /* Fix for array.indexOf method in IE7. + * This code is taken from http://www.tutorialspoint.com/javascript/array_indexof.htm */ + if (!Array.prototype.indexOf) { + Array.prototype.indexOf = function (elt) { + var len = this.length; + var from = Number(arguments[1]) || 0; + from = (from < 0) + ? Math.ceil(from) + : Math.floor(from); + if (from < 0) + from += len; + for (; from < len; from++) { + if (from in this && + this[from] === elt) + return from; + } + return -1; + }; + } + +})(jQuery); diff --git a/jTable.jquery.json b/jTable.jquery.json new file mode 100644 index 0000000..1c36057 --- /dev/null +++ b/jTable.jquery.json @@ -0,0 +1,41 @@ +{ + "name": "jTable", + "title": "jTable", + "description": "A JQuery plugin to create AJAX based CRUD tables (grids). It supports paging, sorting, selecting, master/child tables, show/hide/resize columns, localization, themes and more.", + "keywords": [ + "ajax", + "table", + "grid", + "crud", + "jtable", + "paging", + "sorting" + ], + "version": "2.4.0", + "author": { + "name": "Halil ibrahim Kalkan", + "email": "halil@jtable.org", + "url": "http://www.halilibrahimkalkan.com" + }, + "maintainers": [ + { + "name": "Halil ibrahim Kalkan", + "email": "halil@jtable.org", + "url": "http://www.halilibrahimkalkan.com" + } + ], + "licenses": [ + { + "type": "MIT", + "url": "http://en.wikipedia.org/wiki/MIT_License" + } + ], + "bugs": "https://github.com/hikalkan/jtable/issues", + "homepage": "http://www.jtable.org", + "docs": "http://jtable.org/Home/Documents", + "download": "http://jtable.org/Home/Downloads", + "dependencies": { + "jquery": ">=1.9.1", + "jqueryui": ">=1.9.2" + } +} \ No newline at end of file diff --git a/lib/extensions/jquery.jtable.aspnetpagemethods.js b/lib/extensions/jquery.jtable.aspnetpagemethods.js new file mode 100644 index 0000000..17b2a2c --- /dev/null +++ b/lib/extensions/jquery.jtable.aspnetpagemethods.js @@ -0,0 +1,150 @@ +/* + +ASP.NET WEB FORMS PAGE METHODS EXTENSION FOR JTABLE +http://www.jtable.org + +--------------------------------------------------------------------------- + +Copyright (C) 2011 by Halil İbrahim Kalkan (http://www.halilibrahimkalkan.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +*/ +(function ($) { + + //extension members + $.extend(true, $.hik.jtable.prototype, { + + /* OVERRIDES BASE METHOD. + * THIS METHOD IS DEPRECATED AND WILL BE REMOVED FROM FEATURE RELEASES. + * USE _ajax METHOD. + *************************************************************************/ + _performAjaxCall: function (url, postData, async, success, error) { + this._ajax({ + url: url, + data: postData, + async: async, + success: success, + error: error + }); + }, + + /* OVERRIDES BASE METHOD */ + _ajax: function (options) { + var self = this; + + var opts = $.extend({}, this.options.ajaxSettings, options); + + if (opts.data == null || opts.data == undefined) { + opts.data = {}; + } else if (typeof opts.data == 'string') { + opts.data = self._convertQueryStringToObject(opts.data); + } + + var qmIndex = opts.url.indexOf('?'); + if (qmIndex > -1) { + $.extend(opts.data, self._convertQueryStringToObject(opts.url.substring(qmIndex + 1))); + } + + opts.data = JSON.stringify(opts.data); + opts.contentType = 'application/json; charset=utf-8'; + + //Override success + opts.success = function (data) { + data = self._normalizeJSONReturnData(data); + if (options.success) { + options.success(data); + } + }; + + //Override error + opts.error = function () { + if (options.error) { + options.error(); + } + }; + + //Override complete + opts.complete = function () { + if (options.complete) { + options.complete(); + } + }; + + $.ajax(opts); + }, + + /* OVERRIDES BASE METHOD */ + _submitFormUsingAjax: function (url, formData, success, error) { + var self = this; + + formData = { + record: self._convertQueryStringToObject(formData) + }; + + var qmIndex = url.indexOf('?'); + if (qmIndex > -1) { + $.extend(formData, self._convertQueryStringToObject(url.substring(qmIndex + 1))); + } + + var postData = JSON.stringify(formData); + + $.ajax({ + url: url, + type: 'POST', + dataType: 'json', + contentType: "application/json; charset=utf-8", + data: postData, + success: function (data) { + data = self._normalizeJSONReturnData(data); + success(data); + }, + error: function () { + error(); + } + }); + }, + + _convertQueryStringToObject: function (queryString) { + var jsonObj = {}; + var e, + a = /\+/g, + r = /([^&=]+)=?([^&]*)/g, + d = function (s) { return decodeURIComponent(s.replace(a, " ")); }; + + while (e = r.exec(queryString)) { + jsonObj[d(e[1])] = d(e[2]); + } + + return jsonObj; + }, + + /* Normalizes JSON data that is returned from server. + *************************************************************************/ + _normalizeJSONReturnData: function (data) { + //JSON Normalization for ASP.NET + if (data.hasOwnProperty('d')) { + return data.d; + } + + return data; + } + }); + +})(jQuery); \ No newline at end of file diff --git a/lib/extensions/jquery.jtable.aspnetpagemethods.min.js b/lib/extensions/jquery.jtable.aspnetpagemethods.min.js new file mode 100644 index 0000000..85a2c6a --- /dev/null +++ b/lib/extensions/jquery.jtable.aspnetpagemethods.min.js @@ -0,0 +1,27 @@ +/* +ASP.NET WEB FORMS PAGE METHODS EXTENSION FOR JTABLE +http://www.jtable.org +--------------------------------------------------------------------------- +Copyright (C) 2011 by Halil brahim Kalkan (http://www.halilibrahimkalkan.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ +(function(d){d.extend(!0,d.hik.jtable.prototype,{_performAjaxCall:function(b,c,a,e,f){this._ajax({url:b,data:c,async:a,success:e,error:f})},_ajax:function(b){var c=this,a=d.extend({},this.options.ajaxSettings,b);null==a.data||void 0==a.data?a.data={}:"string"==typeof a.data&&(a.data=c._convertQueryStringToObject(a.data));var e=a.url.indexOf("?");-1a?"0"+a:a}function q(a){r.lastIndex=0;return r.test(a)?'"'+a.replace(r,function(a){var c=t[a];return"string"===typeof c?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function n(a,k){var c,d,h,p,g=e,f,b=k[a];b&&("object"===typeof b&&"function"===typeof b.toJSON)&&(b=b.toJSON(a));"function"===typeof j&&(b=j.call(k,a,b));switch(typeof b){case "string":return q(b);case "number":return isFinite(b)?String(b):"null";case "boolean":case "null":return String(b); +case "object":if(!b)return"null";e+=m;f=[];if("[object Array]"===Object.prototype.toString.apply(b)){p=b.length;for(c=0;c (jQuery object) + _$tableBody: null, //Reference to in the table (jQuery object) + _$tableRows: null, //Array of all in the table (except "no data" row) (jQuery object array) + + _$busyDiv: null, //Reference to the div that is used to block UI while busy (jQuery object) + _$busyMessageDiv: null, //Reference to the div that is used to show some message when UI is blocked (jQuery object) + _$errorDialogDiv: null, //Reference to the error dialog div (jQuery object) + + _columnList: null, //Name of all data columns in the table (select column and command columns are not included) (string array) + _fieldList: null, //Name of all fields of a record (defined in fields option) (string array) + _keyField: null, //Name of the key field of a record (that is defined as 'key: true' in the fields option) (string) + + _firstDataColumnOffset: 0, //Start index of first record field in table columns (some columns can be placed before first data column, such as select checkbox column) (integer) + _lastPostData: null, //Last posted data on load method (object) + + _cache: null, //General purpose cache dictionary (object) + + /************************************************************************ + * CONSTRUCTOR AND INITIALIZATION METHODS * + *************************************************************************/ + + /* Contructor. + *************************************************************************/ + _create: function () { + + //Initialization + this._normalizeFieldsOptions(); + this._initializeFields(); + this._createFieldAndColumnList(); + + //Creating DOM elements + this._createMainContainer(); + this._createTableTitle(); + this._createToolBar(); + this._createTable(); + this._createBusyPanel(); + this._createErrorDialogDiv(); + this._addNoDataRow(); + + this._cookieKeyPrefix = this._generateCookieKeyPrefix(); + }, + + /* Normalizes some options for all fields (sets default values). + *************************************************************************/ + _normalizeFieldsOptions: function () { + var self = this; + $.each(self.options.fields, function (fieldName, props) { + self._normalizeFieldOptions(fieldName, props); + }); + }, + + /* Normalizes some options for a field (sets default values). + *************************************************************************/ + _normalizeFieldOptions: function (fieldName, props) { + if (props.listClass == undefined) { + props.listClass = ''; + } + if (props.inputClass == undefined) { + props.inputClass = ''; + } + + //Convert dependsOn to array if it's a comma seperated lists + if (props.dependsOn && $.type(props.dependsOn) === 'string') { + var dependsOnArray = props.dependsOn.split(','); + props.dependsOn = []; + for (var i = 0; i < dependsOnArray.length; i++) { + props.dependsOn.push($.trim(dependsOnArray[i])); + } + } + }, + + /* Intializes some private variables. + *************************************************************************/ + _initializeFields: function () { + this._lastPostData = {}; + this._$tableRows = []; + this._columnList = []; + this._fieldList = []; + this._cache = []; + }, + + /* Fills _fieldList, _columnList arrays and sets _keyField variable. + *************************************************************************/ + _createFieldAndColumnList: function () { + var self = this; + + $.each(self.options.fields, function (name, props) { + + //Add field to the field list + self._fieldList.push(name); + + //Check if this field is the key field + if (props.key == true) { + self._keyField = name; + } + + //Add field to column list if it is shown in the table + if (props.list != false && props.type != 'hidden') { + self._columnList.push(name); + } + }); + }, + + /* Creates the main container div. + *************************************************************************/ + _createMainContainer: function () { + this._$mainContainer = $('
    ') + .addClass('jtable-main-container') + .appendTo(this.element); + + this._jqueryuiThemeAddClass(this._$mainContainer, 'ui-widget'); + }, + + /* Creates title of the table if a title supplied in options. + *************************************************************************/ + _createTableTitle: function () { + var self = this; + + if (!self.options.title) { + return; + } + + var $titleDiv = $('
    ') + .addClass('jtable-title') + .appendTo(self._$mainContainer); + + self._jqueryuiThemeAddClass($titleDiv, 'ui-widget-header'); + + $('
    ') + .addClass('jtable-title-text') + .appendTo($titleDiv) + .append(self.options.title); + + if (self.options.showCloseButton) { + + var $textSpan = $('') + .html(self.options.messages.close); + + $('') + .addClass('jtable-command-button jtable-close-button') + .attr('title', self.options.messages.close) + .append($textSpan) + .appendTo($titleDiv) + .click(function (e) { + e.preventDefault(); + e.stopPropagation(); + self._onCloseRequested(); + }); + } + + self._$titleDiv = $titleDiv; + }, + + /* Creates the table. + *************************************************************************/ + _createTable: function () { + this._$table = $('
    ') + .addClass('jtable') + .appendTo(this._$mainContainer); + + if (this.options.tableId) { + this._$table.attr('id', this.options.tableId); + } + + this._jqueryuiThemeAddClass(this._$table, 'ui-widget-content'); + + this._createTableHead(); + this._createTableBody(); + }, + + /* Creates header (all column headers) of the table. + *************************************************************************/ + _createTableHead: function () { + var $thead = $('') + .appendTo(this._$table); + + this._addRowToTableHead($thead); + }, + + /* Adds tr element to given thead element + *************************************************************************/ + _addRowToTableHead: function ($thead) { + var $tr = $('') + .appendTo($thead); + + this._addColumnsToHeaderRow($tr); + }, + + /* Adds column header cells to given tr element. + *************************************************************************/ + _addColumnsToHeaderRow: function ($tr) { + for (var i = 0; i < this._columnList.length; i++) { + var fieldName = this._columnList[i]; + var $headerCell = this._createHeaderCellForField(fieldName, this.options.fields[fieldName]); + $headerCell.appendTo($tr); + } + }, + + /* Creates a header cell for given field. + * Returns th jQuery object. + *************************************************************************/ + _createHeaderCellForField: function (fieldName, field) { + field.width = field.width || '10%'; //default column width: 10%. + + var $headerTextSpan = $('') + .addClass('jtable-column-header-text') + .html(field.title); + + var $headerContainerDiv = $('
    ') + .addClass('jtable-column-header-container') + .append($headerTextSpan); + + var $th = $('') + .addClass('jtable-column-header') + .addClass(field.listClass) + .css('width', field.width) + .data('fieldName', fieldName) + .append($headerContainerDiv); + + this._jqueryuiThemeAddClass($th, 'ui-state-default'); + + return $th; + }, + + /* Creates an empty header cell that can be used as command column headers. + *************************************************************************/ + _createEmptyCommandHeader: function () { + var $th = $('') + .addClass('jtable-command-column-header') + .css('width', '1%'); + + this._jqueryuiThemeAddClass($th, 'ui-state-default'); + + return $th; + }, + + /* Creates tbody tag and adds to the table. + *************************************************************************/ + _createTableBody: function () { + this._$tableBody = $('').appendTo(this._$table); + }, + + /* Creates a div to block UI while jTable is busy. + *************************************************************************/ + _createBusyPanel: function () { + this._$busyMessageDiv = $('
    ').addClass('jtable-busy-message').prependTo(this._$mainContainer); + this._$busyDiv = $('
    ').addClass('jtable-busy-panel-background').prependTo(this._$mainContainer); + this._jqueryuiThemeAddClass(this._$busyMessageDiv, 'ui-widget-header'); + this._hideBusy(); + }, + + /* Creates and prepares error dialog div. + *************************************************************************/ + _createErrorDialogDiv: function () { + var self = this; + + self._$errorDialogDiv = $('
    ').appendTo(self._$mainContainer); + self._$errorDialogDiv.dialog({ + autoOpen: false, + show: self.options.dialogShowEffect, + hide: self.options.dialogHideEffect, + modal: true, + title: self.options.messages.error, + buttons: [{ + text: self.options.messages.close, + click: function () { + self._$errorDialogDiv.dialog('close'); + } + }] + }); + }, + + /************************************************************************ + * PUBLIC METHODS * + *************************************************************************/ + + /* Loads data using AJAX call, clears table and fills with new data. + *************************************************************************/ + load: function (postData, completeCallback) { + this._lastPostData = postData; + this._reloadTable(completeCallback); + }, + + /* Refreshes (re-loads) table data with last postData. + *************************************************************************/ + reload: function (completeCallback) { + this._reloadTable(completeCallback); + }, + + /* Gets a jQuery row object according to given record key + *************************************************************************/ + getRowByKey: function (key) { + for (var i = 0; i < this._$tableRows.length; i++) { + if (key == this._getKeyValueOfRecord(this._$tableRows[i].data('record'))) { + return this._$tableRows[i]; + } + } + + return null; + }, + + /* Completely removes the table from it's container. + *************************************************************************/ + destroy: function () { + this.element.empty(); + $.Widget.prototype.destroy.call(this); + }, + + /************************************************************************ + * PRIVATE METHODS * + *************************************************************************/ + + /* Used to change options dynamically after initialization. + *************************************************************************/ + _setOption: function (key, value) { + + }, + + /* LOADING RECORDS *****************************************************/ + + /* Performs an AJAX call to reload data of the table. + *************************************************************************/ + _reloadTable: function (completeCallback) { + var self = this; + + var completeReload = function(data) { + self._hideBusy(); + + //Show the error message if server returns error + if (data.Result != 'OK') { + self._showError(data.Message); + return; + } + + //Re-generate table rows + self._removeAllRows('reloading'); + self._addRecordsToTable(data.Records); + + self._onRecordsLoaded(data); + + //Call complete callback + if (completeCallback) { + completeCallback(); + } + }; + + self._showBusy(self.options.messages.loadingMessage, self.options.loadingAnimationDelay); //Disable table since it's busy + self._onLoadingRecords(); + + //listAction may be a function, check if it is + if ($.isFunction(self.options.actions.listAction)) { + + //Execute the function + var funcResult = self.options.actions.listAction(self._lastPostData, self._createJtParamsForLoading()); + + //Check if result is a jQuery Deferred object + if (self._isDeferredObject(funcResult)) { + funcResult.done(function(data) { + completeReload(data); + }).fail(function() { + self._showError(self.options.messages.serverCommunicationError); + }).always(function() { + self._hideBusy(); + }); + } else { //assume it's the data we're loading + completeReload(funcResult); + } + + } else { //assume listAction as URL string. + + //Generate URL (with query string parameters) to load records + var loadUrl = self._createRecordLoadUrl(); + + //Load data from server using AJAX + self._ajax({ + url: loadUrl, + data: self._lastPostData, + success: function (data) { + completeReload(data); + }, + error: function () { + self._hideBusy(); + self._showError(self.options.messages.serverCommunicationError); + } + }); + + } + }, + + /* Creates URL to load records. + *************************************************************************/ + _createRecordLoadUrl: function () { + return this.options.actions.listAction; + }, + + _createJtParamsForLoading: function() { + return { + //Empty as default, paging, sorting or other extensions can override this method to add additional params to load request + }; + }, + + /* TABLE MANIPULATION METHODS *******************************************/ + + /* Creates a row from given record + *************************************************************************/ + _createRowFromRecord: function (record) { + var $tr = $('') + .addClass('jtable-data-row') + .attr('data-record-key', this._getKeyValueOfRecord(record)) + .data('record', record); + + this._addCellsToRowUsingRecord($tr); + return $tr; + }, + + /* Adds all cells to given row. + *************************************************************************/ + _addCellsToRowUsingRecord: function ($row) { + var record = $row.data('record'); + for (var i = 0; i < this._columnList.length; i++) { + this._createCellForRecordField(record, this._columnList[i]) + .appendTo($row); + } + }, + + /* Create a cell for given field. + *************************************************************************/ + _createCellForRecordField: function (record, fieldName) { + return $('') + .addClass(this.options.fields[fieldName].listClass) + .append((this._getDisplayTextForRecordField(record, fieldName))); + }, + + /* Adds a list of records to the table. + *************************************************************************/ + _addRecordsToTable: function (records) { + var self = this; + + $.each(records, function (index, record) { + self._addRow(self._createRowFromRecord(record)); + }); + + self._refreshRowStyles(); + }, + + /* Adds a single row to the table. + * NOTE: THIS METHOD IS DEPRECATED AND WILL BE REMOVED FROM FEATURE RELEASES. + * USE _addRow METHOD. + *************************************************************************/ + _addRowToTable: function ($tableRow, index, isNewRow, animationsEnabled) { + var options = { + index: this._normalizeNumber(index, 0, this._$tableRows.length, this._$tableRows.length) + }; + + if (isNewRow == true) { + options.isNewRow = true; + } + + if (animationsEnabled == false) { + options.animationsEnabled = false; + } + + this._addRow($tableRow, options); + }, + + /* Adds a single row to the table. + *************************************************************************/ + _addRow: function ($row, options) { + //Set defaults + options = $.extend({ + index: this._$tableRows.length, + isNewRow: false, + animationsEnabled: true + }, options); + + //Remove 'no data' row if this is first row + if (this._$tableRows.length <= 0) { + this._removeNoDataRow(); + } + + //Add new row to the table according to it's index + options.index = this._normalizeNumber(options.index, 0, this._$tableRows.length, this._$tableRows.length); + if (options.index == this._$tableRows.length) { + //add as last row + this._$tableBody.append($row); + this._$tableRows.push($row); + } else if (options.index == 0) { + //add as first row + this._$tableBody.prepend($row); + this._$tableRows.unshift($row); + } else { + //insert to specified index + this._$tableRows[options.index - 1].after($row); + this._$tableRows.splice(options.index, 0, $row); + } + + this._onRowInserted($row, options.isNewRow); + + //Show animation if needed + if (options.isNewRow) { + this._refreshRowStyles(); + if (this.options.animationsEnabled && options.animationsEnabled) { + this._showNewRowAnimation($row); + } + } + }, + + /* Shows created animation for a table row + * TODO: Make this animation cofigurable and changable + *************************************************************************/ + _showNewRowAnimation: function ($tableRow) { + var className = 'jtable-row-created'; + if (this.options.jqueryuiTheme) { + className = className + ' ui-state-highlight'; + } + + $tableRow.addClass(className, 'slow', '', function () { + $tableRow.removeClass(className, 5000); + }); + }, + + /* Removes a row or rows (jQuery selection) from table. + *************************************************************************/ + _removeRowsFromTable: function ($rows, reason) { + var self = this; + + //Check if any row specified + if ($rows.length <= 0) { + return; + } + + //remove from DOM + $rows.addClass('jtable-row-removed').remove(); + + //remove from _$tableRows array + $rows.each(function () { + var index = self._findRowIndex($(this)); + if (index >= 0) { + self._$tableRows.splice(index, 1); + } + }); + + self._onRowsRemoved($rows, reason); + + //Add 'no data' row if all rows removed from table + if (self._$tableRows.length == 0) { + self._addNoDataRow(); + } + + self._refreshRowStyles(); + }, + + /* Finds index of a row in table. + *************************************************************************/ + _findRowIndex: function ($row) { + return this._findIndexInArray($row, this._$tableRows, function ($row1, $row2) { + return $row1.data('record') == $row2.data('record'); + }); + }, + + /* Removes all rows in the table and adds 'no data' row. + *************************************************************************/ + _removeAllRows: function (reason) { + //If no rows does exists, do nothing + if (this._$tableRows.length <= 0) { + return; + } + + //Select all rows (to pass it on raising _onRowsRemoved event) + var $rows = this._$tableBody.find('tr.jtable-data-row'); + + //Remove all rows from DOM and the _$tableRows array + this._$tableBody.empty(); + this._$tableRows = []; + + this._onRowsRemoved($rows, reason); + + //Add 'no data' row since we removed all rows + this._addNoDataRow(); + }, + + /* Adds "no data available" row to the table. + *************************************************************************/ + _addNoDataRow: function () { + if (this._$tableBody.find('>tr.jtable-no-data-row').length > 0) { + return; + } + + var $tr = $('') + .addClass('jtable-no-data-row') + .appendTo(this._$tableBody); + + var totalColumnCount = this._$table.find('thead th').length; + $('') + .attr('colspan', totalColumnCount) + .html(this.options.messages.noDataAvailable) + .appendTo($tr); + }, + + /* Removes "no data available" row from the table. + *************************************************************************/ + _removeNoDataRow: function () { + this._$tableBody.find('.jtable-no-data-row').remove(); + }, + + /* Refreshes styles of all rows in the table + *************************************************************************/ + _refreshRowStyles: function () { + for (var i = 0; i < this._$tableRows.length; i++) { + if (i % 2 == 0) { + this._$tableRows[i].addClass('jtable-row-even'); + } else { + this._$tableRows[i].removeClass('jtable-row-even'); + } + } + }, + + /* RENDERING FIELD VALUES ***********************************************/ + + /* Gets text for a field of a record according to it's type. + *************************************************************************/ + _getDisplayTextForRecordField: function (record, fieldName) { + var field = this.options.fields[fieldName]; + var fieldValue = record[fieldName]; + + //if this is a custom field, call display function + if (field.display) { + return field.display({ record: record }); + } + + if (field.type == 'date') { + return this._getDisplayTextForDateRecordField(field, fieldValue); + } else if (field.type == 'checkbox') { + return this._getCheckBoxTextForFieldByValue(fieldName, fieldValue); + } else if (field.options) { //combobox or radio button list since there are options. + var options = this._getOptionsForField(fieldName, { + record: record, + value: fieldValue, + source: 'list', + dependedValues: this._createDependedValuesUsingRecord(record, field.dependsOn) + }); + return this._findOptionByValue(options, fieldValue).DisplayText; + } else { //other types + return fieldValue; + } + }, + + /* Creates and returns an object that's properties are depended values of a record. + *************************************************************************/ + _createDependedValuesUsingRecord: function (record, dependsOn) { + if (!dependsOn) { + return {}; + } + + var dependedValues = {}; + for (var i = 0; i < dependsOn.length; i++) { + dependedValues[dependsOn[i]] = record[dependsOn[i]]; + } + + return dependedValues; + }, + + /* Finds an option object by given value. + *************************************************************************/ + _findOptionByValue: function (options, value) { + for (var i = 0; i < options.length; i++) { + if (options[i].Value == value) { + return options[i]; + } + } + + return {}; //no option found + }, + + /* Gets text for a date field. + *************************************************************************/ + _getDisplayTextForDateRecordField: function (field, fieldValue) { + if (!fieldValue) { + return ''; + } + + var displayFormat = field.displayFormat || this.options.defaultDateFormat; + var date = this._parseDate(fieldValue); + return $.datepicker.formatDate(displayFormat, date); + }, + + /* Gets options for a field according to user preferences. + *************************************************************************/ + _getOptionsForField: function (fieldName, funcParams) { + var field = this.options.fields[fieldName]; + var optionsSource = field.options; + + if ($.isFunction(optionsSource)) { + //prepare parameter to the function + funcParams = $.extend(true, { + _cacheCleared: false, + dependedValues: {}, + clearCache: function () { + this._cacheCleared = true; + } + }, funcParams); + + //call function and get actual options source + optionsSource = optionsSource(funcParams); + } + + var options; + + //Build options according to it's source type + if (typeof optionsSource == 'string') { //It is an Url to download options + var cacheKey = 'options_' + fieldName + '_' + optionsSource; //create a unique cache key + if (funcParams._cacheCleared || (!this._cache[cacheKey])) { + //if user calls clearCache() or options are not found in the cache, download options + this._cache[cacheKey] = this._buildOptionsFromArray(this._downloadOptions(fieldName, optionsSource)); + this._sortFieldOptions(this._cache[cacheKey], field.optionsSorting); + } else { + //found on cache.. + //if this method (_getOptionsForField) is called to get option for a specific value (on funcParams.source == 'list') + //and this value is not in cached options, we need to re-download options to get the unfound (probably new) option. + if (funcParams.value != undefined) { + var optionForValue = this._findOptionByValue(this._cache[cacheKey], funcParams.value); + if (optionForValue.DisplayText == undefined) { //this value is not in cached options... + this._cache[cacheKey] = this._buildOptionsFromArray(this._downloadOptions(fieldName, optionsSource)); + this._sortFieldOptions(this._cache[cacheKey], field.optionsSorting); + } + } + } + + options = this._cache[cacheKey]; + } else if (jQuery.isArray(optionsSource)) { //It is an array of options + options = this._buildOptionsFromArray(optionsSource); + this._sortFieldOptions(options, field.optionsSorting); + } else { //It is an object that it's properties are options + options = this._buildOptionsArrayFromObject(optionsSource); + this._sortFieldOptions(options, field.optionsSorting); + } + + return options; + }, + + /* Download options for a field from server. + *************************************************************************/ + _downloadOptions: function (fieldName, url) { + var self = this; + var options = []; + + self._ajax({ + url: url, + async: false, + success: function (data) { + if (data.Result != 'OK') { + self._showError(data.Message); + return; + } + + options = data.Options; + }, + error: function () { + var errMessage = self._formatString(self.options.messages.cannotLoadOptionsFor, fieldName); + self._showError(errMessage); + } + }); + + return options; + }, + + /* Sorts given options according to sorting parameter. + * sorting can be: 'value', 'value-desc', 'text' or 'text-desc'. + *************************************************************************/ + _sortFieldOptions: function (options, sorting) { + + if ((!options) || (!options.length) || (!sorting)) { + return; + } + + //Determine using value of text + var dataSelector; + if (sorting.indexOf('value') == 0) { + dataSelector = function (option) { + return option.Value; + }; + } else { //assume as text + dataSelector = function (option) { + return option.DisplayText; + }; + } + + var compareFunc; + if ($.type(dataSelector(options[0])) == 'string') { + compareFunc = function (option1, option2) { + return dataSelector(option1).localeCompare(dataSelector(option2)); + }; + } else { //asuume as numeric + compareFunc = function (option1, option2) { + return dataSelector(option1) - dataSelector(option2); + }; + } + + if (sorting.indexOf('desc') > 0) { + options.sort(function (a, b) { + return compareFunc(b, a); + }); + } else { //assume as asc + options.sort(function (a, b) { + return compareFunc(a, b); + }); + } + }, + + /* Creates an array of options from given object. + *************************************************************************/ + _buildOptionsArrayFromObject: function (options) { + var list = []; + + $.each(options, function (propName, propValue) { + list.push({ + Value: propName, + DisplayText: propValue + }); + }); + + return list; + }, + + /* Creates array of options from giving options array. + *************************************************************************/ + _buildOptionsFromArray: function (optionsArray) { + var list = []; + + for (var i = 0; i < optionsArray.length; i++) { + if ($.isPlainObject(optionsArray[i])) { + list.push(optionsArray[i]); + } else { //assumed as primitive type (int, string...) + list.push({ + Value: optionsArray[i], + DisplayText: optionsArray[i] + }); + } + } + + return list; + }, + + /* Parses given date string to a javascript Date object. + * Given string must be formatted one of the samples shown below: + * /Date(1320259705710)/ + * 2011-01-01 20:32:42 (YYYY-MM-DD HH:MM:SS) + * 2011-01-01 (YYYY-MM-DD) + *************************************************************************/ + _parseDate: function (dateString) { + if (dateString.indexOf('Date') >= 0) { //Format: /Date(1320259705710)/ + return new Date( + parseInt(dateString.substr(6), 10) + ); + } else if (dateString.length == 10) { //Format: 2011-01-01 + return new Date( + parseInt(dateString.substr(0, 4), 10), + parseInt(dateString.substr(5, 2), 10) - 1, + parseInt(dateString.substr(8, 2), 10) + ); + } else if (dateString.length == 19) { //Format: 2011-01-01 20:32:42 + return new Date( + parseInt(dateString.substr(0, 4), 10), + parseInt(dateString.substr(5, 2), 10) - 1, + parseInt(dateString.substr(8, 2), 10), + parseInt(dateString.substr(11, 2), 10), + parseInt(dateString.substr(14, 2), 10), + parseInt(dateString.substr(17, 2), 10) + ); + } else { + this._logWarn('Given date is not properly formatted: ' + dateString); + return 'format error!'; + } + }, + + /* TOOL BAR *************************************************************/ + + /* Creates the toolbar. + *************************************************************************/ + _createToolBar: function () { + this._$toolbarDiv = $('
    ') + .addClass('jtable-toolbar') + .appendTo(this._$titleDiv); + + for (var i = 0; i < this.options.toolbar.items.length; i++) { + this._addToolBarItem(this.options.toolbar.items[i]); + } + }, + + /* Adds a new item to the toolbar. + *************************************************************************/ + _addToolBarItem: function (item) { + + //Check if item is valid + if ((item == undefined) || (item.text == undefined && item.icon == undefined)) { + this._logWarn('Can not add tool bar item since it is not valid!'); + this._logWarn(item); + return null; + } + + var $toolBarItem = $('') + .addClass('jtable-toolbar-item') + .appendTo(this._$toolbarDiv); + + this._jqueryuiThemeAddClass($toolBarItem, 'ui-widget ui-state-default ui-corner-all', 'ui-state-hover'); + + //cssClass property + if (item.cssClass) { + $toolBarItem + .addClass(item.cssClass); + } + + //tooltip property + if (item.tooltip) { + $toolBarItem + .attr('title', item.tooltip); + } + + //icon property + if (item.icon) { + var $icon = $('').appendTo($toolBarItem); + if (item.icon === true) { + //do nothing + } else if ($.type(item.icon === 'string')) { + $icon.css('background', 'url("' + item.icon + '")'); + } + } + + //text property + if (item.text) { + $('') + .html(item.text) + .addClass('jtable-toolbar-item-text').appendTo($toolBarItem); + } + + //click event + if (item.click) { + $toolBarItem.click(function () { + item.click(); + }); + } + + //set hover animation parameters + var hoverAnimationDuration = undefined; + var hoverAnimationEasing = undefined; + if (this.options.toolbar.hoverAnimation) { + hoverAnimationDuration = this.options.toolbar.hoverAnimationDuration; + hoverAnimationEasing = this.options.toolbar.hoverAnimationEasing; + } + + //change class on hover + $toolBarItem.hover(function () { + $toolBarItem.addClass('jtable-toolbar-item-hover', hoverAnimationDuration, hoverAnimationEasing); + }, function () { + $toolBarItem.removeClass('jtable-toolbar-item-hover', hoverAnimationDuration, hoverAnimationEasing); + }); + + return $toolBarItem; + }, + + /* ERROR DIALOG *********************************************************/ + + /* Shows error message dialog with given message. + *************************************************************************/ + _showError: function (message) { + this._$errorDialogDiv.html(message).dialog('open'); + }, + + /* BUSY PANEL ***********************************************************/ + + /* Shows busy indicator and blocks table UI. + * TODO: Make this cofigurable and changable + *************************************************************************/ + _setBusyTimer: null, + _showBusy: function (message, delay) { + var self = this; // + + //Show a transparent overlay to prevent clicking to the table + self._$busyDiv + .width(self._$mainContainer.width()) + .height(self._$mainContainer.height()) + .addClass('jtable-busy-panel-background-invisible') + .show(); + + var makeVisible = function () { + self._$busyDiv.removeClass('jtable-busy-panel-background-invisible'); + self._$busyMessageDiv.html(message).show(); + }; + + if (delay) { + if (self._setBusyTimer) { + return; + } + + self._setBusyTimer = setTimeout(makeVisible, delay); + } else { + makeVisible(); + } + }, + + /* Hides busy indicator and unblocks table UI. + *************************************************************************/ + _hideBusy: function () { + clearTimeout(this._setBusyTimer); + this._setBusyTimer = null; + this._$busyDiv.hide(); + this._$busyMessageDiv.html('').hide(); + }, + + /* Returns true if jTable is busy. + *************************************************************************/ + _isBusy: function () { + return this._$busyMessageDiv.is(':visible'); + }, + + /* Adds jQueryUI class to an item. + *************************************************************************/ + _jqueryuiThemeAddClass: function ($elm, className, hoverClassName) { + if (!this.options.jqueryuiTheme) { + return; + } + + $elm.addClass(className); + + if (hoverClassName) { + $elm.hover(function () { + $elm.addClass(hoverClassName); + }, function () { + $elm.removeClass(hoverClassName); + }); + } + }, + + /* COMMON METHODS *******************************************************/ + + /* Performs an AJAX call to specified URL. + * THIS METHOD IS DEPRECATED AND WILL BE REMOVED FROM FEATURE RELEASES. + * USE _ajax METHOD. + *************************************************************************/ + _performAjaxCall: function (url, postData, async, success, error) { + this._ajax({ + url: url, + data: postData, + async: async, + success: success, + error: error + }); + }, + + _unAuthorizedRequestHandler: function() { + if (this.options.unAuthorizedRequestRedirectUrl) { + location.href = this.options.unAuthorizedRequestRedirectUrl; + } else { + location.reload(true); + } + }, + + /* This method is used to perform AJAX calls in jTable instead of direct + * usage of jQuery.ajax method. + *************************************************************************/ + _ajax: function (options) { + var self = this; + + //Handlers for HTTP status codes + var opts = { + statusCode: { + 401: function () { //Unauthorized + self._unAuthorizedRequestHandler(); + } + } + }; + + opts = $.extend(opts, this.options.ajaxSettings, options); + + //Override success + opts.success = function (data) { + //Checking for Authorization error + if (data && data.UnAuthorizedRequest == true) { + self._unAuthorizedRequestHandler(); + } + + if (options.success) { + options.success(data); + } + }; + + //Override error + opts.error = function (jqXHR, textStatus, errorThrown) { + if (unloadingPage) { + jqXHR.abort(); + return; + } + + if (options.error) { + options.error(arguments); + } + }; + + //Override complete + opts.complete = function () { + if (options.complete) { + options.complete(); + } + }; + + $.ajax(opts); + }, + + /* Gets value of key field of a record. + *************************************************************************/ + _getKeyValueOfRecord: function (record) { + return record[this._keyField]; + }, + + /************************************************************************ + * COOKIE * + *************************************************************************/ + + /* Sets a cookie with given key. + *************************************************************************/ + _setCookie: function (key, value) { + key = this._cookieKeyPrefix + key; + + var expireDate = new Date(); + expireDate.setDate(expireDate.getDate() + 30); + document.cookie = encodeURIComponent(key) + '=' + encodeURIComponent(value) + "; expires=" + expireDate.toUTCString(); + }, + + /* Gets a cookie with given key. + *************************************************************************/ + _getCookie: function (key) { + key = this._cookieKeyPrefix + key; + + var equalities = document.cookie.split('; '); + for (var i = 0; i < equalities.length; i++) { + if (!equalities[i]) { + continue; + } + + var splitted = equalities[i].split('='); + if (splitted.length != 2) { + continue; + } + + if (decodeURIComponent(splitted[0]) === key) { + return decodeURIComponent(splitted[1] || ''); + } + } + + return null; + }, + + /* Generates a hash key to be prefix for all cookies for this jtable instance. + *************************************************************************/ + _generateCookieKeyPrefix: function () { + + var simpleHash = function (value) { + var hash = 0; + if (value.length == 0) { + return hash; + } + + for (var i = 0; i < value.length; i++) { + var ch = value.charCodeAt(i); + hash = ((hash << 5) - hash) + ch; + hash = hash & hash; + } + + return hash; + }; + + var strToHash = ''; + if (this.options.tableId) { + strToHash = strToHash + this.options.tableId + '#'; + } + + strToHash = strToHash + this._columnList.join('$') + '#c' + this._$table.find('thead th').length; + return 'jtable#' + simpleHash(strToHash); + }, + + /************************************************************************ + * EVENT RAISING METHODS * + *************************************************************************/ + + _onLoadingRecords: function () { + this._trigger("loadingRecords", null, {}); + }, + + _onRecordsLoaded: function (data) { + this._trigger("recordsLoaded", null, { records: data.Records, serverResponse: data }); + }, + + _onRowInserted: function ($row, isNewRow) { + this._trigger("rowInserted", null, { row: $row, record: $row.data('record'), isNewRow: isNewRow }); + }, + + _onRowsRemoved: function ($rows, reason) { + this._trigger("rowsRemoved", null, { rows: $rows, reason: reason }); + }, + + _onCloseRequested: function () { + this._trigger("closeRequested", null, {}); + } + + }); + +}(jQuery)); + + +/************************************************************************ +* Some UTULITY methods used by jTable * +*************************************************************************/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype, { + + /* Gets property value of an object recursively. + *************************************************************************/ + _getPropertyOfObject: function (obj, propName) { + if (propName.indexOf('.') < 0) { + return obj[propName]; + } else { + var preDot = propName.substring(0, propName.indexOf('.')); + var postDot = propName.substring(propName.indexOf('.') + 1); + return this._getPropertyOfObject(obj[preDot], postDot); + } + }, + + /* Sets property value of an object recursively. + *************************************************************************/ + _setPropertyOfObject: function (obj, propName, value) { + if (propName.indexOf('.') < 0) { + obj[propName] = value; + } else { + var preDot = propName.substring(0, propName.indexOf('.')); + var postDot = propName.substring(propName.indexOf('.') + 1); + this._setPropertyOfObject(obj[preDot], postDot, value); + } + }, + + /* Inserts a value to an array if it does not exists in the array. + *************************************************************************/ + _insertToArrayIfDoesNotExists: function (array, value) { + if ($.inArray(value, array) < 0) { + array.push(value); + } + }, + + /* Finds index of an element in an array according to given comparision function + *************************************************************************/ + _findIndexInArray: function (value, array, compareFunc) { + + //If not defined, use default comparision + if (!compareFunc) { + compareFunc = function (a, b) { + return a == b; + }; + } + + for (var i = 0; i < array.length; i++) { + if (compareFunc(value, array[i])) { + return i; + } + } + + return -1; + }, + + /* Normalizes a number between given bounds or sets to a defaultValue + * if it is undefined + *************************************************************************/ + _normalizeNumber: function (number, min, max, defaultValue) { + if (number == undefined || number == null || isNaN(number)) { + return defaultValue; + } + + if (number < min) { + return min; + } + + if (number > max) { + return max; + } + + return number; + }, + + /* Formats a string just like string.format in c#. + * Example: + * _formatString('Hello {0}','Halil') = 'Hello Halil' + *************************************************************************/ + _formatString: function () { + if (arguments.length == 0) { + return null; + } + + var str = arguments[0]; + for (var i = 1; i < arguments.length; i++) { + var placeHolder = '{' + (i - 1) + '}'; + str = str.replace(placeHolder, arguments[i]); + } + + return str; + }, + + /* Checks if given object is a jQuery Deferred object. + */ + _isDeferredObject: function (obj) { + return obj.then && obj.done && obj.fail; + }, + + //Logging methods //////////////////////////////////////////////////////// + + _logDebug: function (text) { + if (!window.console) { + return; + } + + console.log('jTable DEBUG: ' + text); + }, + + _logInfo: function (text) { + if (!window.console) { + return; + } + + console.log('jTable INFO: ' + text); + }, + + _logWarn: function (text) { + if (!window.console) { + return; + } + + console.log('jTable WARNING: ' + text); + }, + + _logError: function (text) { + if (!window.console) { + return; + } + + console.log('jTable ERROR: ' + text); + } + + }); + + /* Fix for array.indexOf method in IE7. + * This code is taken from http://www.tutorialspoint.com/javascript/array_indexof.htm */ + if (!Array.prototype.indexOf) { + Array.prototype.indexOf = function (elt) { + var len = this.length; + var from = Number(arguments[1]) || 0; + from = (from < 0) + ? Math.ceil(from) + : Math.floor(from); + if (from < 0) + from += len; + for (; from < len; from++) { + if (from in this && + this[from] === elt) + return from; + } + return -1; + }; + } + +})(jQuery); + + +/************************************************************************ +* FORMS extension for jTable (base for edit/create forms) * +*************************************************************************/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype, { + + /************************************************************************ + * PRIVATE METHODS * + *************************************************************************/ + + /* Submits a form asynchronously using AJAX. + * This method is needed, since form submitting logic can be overrided + * by extensions. + *************************************************************************/ + _submitFormUsingAjax: function (url, formData, success, error) { + this._ajax({ + url: url, + data: formData, + success: success, + error: error + }); + }, + + /* Creates label for an input element. + *************************************************************************/ + _createInputLabelForRecordField: function (fieldName) { + //TODO: May create label tag instead of a div. + return $('
    ') + .addClass('jtable-input-label') + .html(this.options.fields[fieldName].inputTitle || this.options.fields[fieldName].title); + }, + + /* Creates an input element according to field type. + *************************************************************************/ + _createInputForRecordField: function (funcParams) { + var fieldName = funcParams.fieldName, + value = funcParams.value, + record = funcParams.record, + formType = funcParams.formType, + form = funcParams.form; + + //Get the field + var field = this.options.fields[fieldName]; + + //If value if not supplied, use defaultValue of the field + if (value == undefined || value == null) { + value = field.defaultValue; + } + + //Use custom function if supplied + if (field.input) { + var $input = $(field.input({ + value: value, + record: record, + formType: formType, + form: form + })); + + //Add id attribute if does not exists + if (!$input.attr('id')) { + $input.attr('id', 'Edit-' + fieldName); + } + + //Wrap input element with div + return $('
    ') + .addClass('jtable-input jtable-custom-input') + .append($input); + } + + //Create input according to field type + if (field.type == 'date') { + return this._createDateInputForField(field, fieldName, value); + } else if (field.type == 'textarea') { + return this._createTextAreaForField(field, fieldName, value); + } else if (field.type == 'password') { + return this._createPasswordInputForField(field, fieldName, value); + } else if (field.type == 'checkbox') { + return this._createCheckboxForField(field, fieldName, value); + } else if (field.options) { + if (field.type == 'radiobutton') { + return this._createRadioButtonListForField(field, fieldName, value, record, formType); + } else { + return this._createDropDownListForField(field, fieldName, value, record, formType, form); + } + } else { + return this._createTextInputForField(field, fieldName, value); + } + }, + + //Creates a hidden input element with given name and value. + _createInputForHidden: function (fieldName, value) { + if (value == undefined) { + value = ""; + } + + return $('') + .val(value); + }, + + /* Creates a date input for a field. + *************************************************************************/ + _createDateInputForField: function (field, fieldName, value) { + var $input = $(''); + if(value != undefined) { + $input.val(value); + } + + var displayFormat = field.displayFormat || this.options.defaultDateFormat; + $input.datepicker({ dateFormat: displayFormat }); + return $('
    ') + .addClass('jtable-input jtable-date-input') + .append($input); + }, + + /* Creates a textarea element for a field. + *************************************************************************/ + _createTextAreaForField: function (field, fieldName, value) { + var $textArea = $(''); + if (value != undefined) { + $textArea.val(value); + } + + return $('
    ') + .addClass('jtable-input jtable-textarea-input') + .append($textArea); + }, + + /* Creates a standart textbox for a field. + *************************************************************************/ + _createTextInputForField: function (field, fieldName, value) { + var $input = $(''); + if (value != undefined) { + $input.val(value); + } + + return $('
    ') + .addClass('jtable-input jtable-text-input') + .append($input); + }, + + /* Creates a password input for a field. + *************************************************************************/ + _createPasswordInputForField: function (field, fieldName, value) { + var $input = $(''); + if (value != undefined) { + $input.val(value); + } + + return $('
    ') + .addClass('jtable-input jtable-password-input') + .append($input); + }, + + /* Creates a checkboxfor a field. + *************************************************************************/ + _createCheckboxForField: function (field, fieldName, value) { + var self = this; + + //If value is undefined, get unchecked state's value + if (value == undefined) { + value = self._getCheckBoxPropertiesForFieldByState(fieldName, false).Value; + } + + //Create a container div + var $containerDiv = $('
    ') + .addClass('jtable-input jtable-checkbox-input'); + + //Create checkbox and check if needed + var $checkBox = $('') + .appendTo($containerDiv); + if (value != undefined) { + $checkBox.val(value); + } + + //Create display text of checkbox for current state + var $textSpan = $('' + (field.formText || self._getCheckBoxTextForFieldByValue(fieldName, value)) + '') + .appendTo($containerDiv); + + //Check the checkbox if it's value is checked-value + if (self._getIsCheckBoxSelectedForFieldByValue(fieldName, value)) { + $checkBox.attr('checked', 'checked'); + } + + //This method sets checkbox's value and text according to state of the checkbox + var refreshCheckBoxValueAndText = function () { + var checkboxProps = self._getCheckBoxPropertiesForFieldByState(fieldName, $checkBox.is(':checked')); + $checkBox.attr('value', checkboxProps.Value); + $textSpan.html(field.formText || checkboxProps.DisplayText); + }; + + //Register to click event to change display text when state of checkbox is changed. + $checkBox.click(function () { + refreshCheckBoxValueAndText(); + }); + + //Change checkbox state when clicked to text + if (field.setOnTextClick != false) { + $textSpan + .addClass('jtable-option-text-clickable') + .click(function () { + if ($checkBox.is(':checked')) { + $checkBox.attr('checked', false); + } else { + $checkBox.attr('checked', true); + } + + refreshCheckBoxValueAndText(); + }); + } + + return $containerDiv; + }, + + /* Creates a drop down list (combobox) input element for a field. + *************************************************************************/ + _createDropDownListForField: function (field, fieldName, value, record, source, form) { + + //Create a container div + var $containerDiv = $('
    ') + .addClass('jtable-input jtable-dropdown-input'); + + //Create select element + var $select = $('') + .appendTo($containerDiv); + + //add options + var options = this._getOptionsForField(fieldName, { + record: record, + source: source, + form: form, + dependedValues: this._createDependedValuesUsingForm(form, field.dependsOn) + }); + + this._fillDropDownListWithOptions($select, options, value); + + return $containerDiv; + }, + + /* Fills a dropdown list with given options. + *************************************************************************/ + _fillDropDownListWithOptions: function ($select, options, value) { + $select.empty(); + for (var i = 0; i < options.length; i++) { + $('' + options[i].DisplayText + '') + .val(options[i].Value) + .appendTo($select); + } + }, + + /* Creates depended values object from given form. + *************************************************************************/ + _createDependedValuesUsingForm: function ($form, dependsOn) { + if (!dependsOn) { + return {}; + } + + var dependedValues = {}; + + for (var i = 0; i < dependsOn.length; i++) { + var dependedField = dependsOn[i]; + + var $dependsOn = $form.find('select[name=' + dependedField + ']'); + if ($dependsOn.length <= 0) { + continue; + } + + dependedValues[dependedField] = $dependsOn.val(); + } + + + return dependedValues; + }, + + /* Creates a radio button list for a field. + *************************************************************************/ + _createRadioButtonListForField: function (field, fieldName, value, record, source) { + var $containerDiv = $('
    ') + .addClass('jtable-input jtable-radiobuttonlist-input'); + + var options = this._getOptionsForField(fieldName, { + record: record, + source: source + }); + + $.each(options, function(i, option) { + var $radioButtonDiv = $('
    ') + .addClass('jtable-radio-input') + .appendTo($containerDiv); + + var $radioButton = $('') + .val(option.Value) + .appendTo($radioButtonDiv); + + var $textSpan = $('') + .html(option.DisplayText) + .appendTo($radioButtonDiv); + + if (field.setOnTextClick != false) { + $textSpan + .addClass('jtable-option-text-clickable') + .click(function () { + if (!$radioButton.is(':checked')) { + $radioButton.attr('checked', true); + } + }); + } + }); + + return $containerDiv; + }, + + /* Gets display text for a checkbox field. + *************************************************************************/ + _getCheckBoxTextForFieldByValue: function (fieldName, value) { + return this.options.fields[fieldName].values[value]; + }, + + /* Returns true if given field's value must be checked state. + *************************************************************************/ + _getIsCheckBoxSelectedForFieldByValue: function (fieldName, value) { + return (this._createCheckBoxStateArrayForFieldWithCaching(fieldName)[1].Value.toString() == value.toString()); + }, + + /* Gets an object for a checkbox field that has Value and DisplayText + * properties. + *************************************************************************/ + _getCheckBoxPropertiesForFieldByState: function (fieldName, checked) { + return this._createCheckBoxStateArrayForFieldWithCaching(fieldName)[(checked ? 1 : 0)]; + }, + + /* Calls _createCheckBoxStateArrayForField with caching. + *************************************************************************/ + _createCheckBoxStateArrayForFieldWithCaching: function (fieldName) { + var cacheKey = 'checkbox_' + fieldName; + if (!this._cache[cacheKey]) { + + this._cache[cacheKey] = this._createCheckBoxStateArrayForField(fieldName); + } + + return this._cache[cacheKey]; + }, + + /* Creates a two element array of objects for states of a checkbox field. + * First element for unchecked state, second for checked state. + * Each object has two properties: Value and DisplayText + *************************************************************************/ + _createCheckBoxStateArrayForField: function (fieldName) { + var stateArray = []; + var currentIndex = 0; + $.each(this.options.fields[fieldName].values, function (propName, propValue) { + if (currentIndex++ < 2) { + stateArray.push({ 'Value': propName, 'DisplayText': propValue }); + } + }); + + return stateArray; + }, + + /* Searches a form for dependend dropdowns and makes them cascaded. + */ + _makeCascadeDropDowns: function ($form, record, source) { + var self = this; + + $form.find('select') //for each combobox + .each(function () { + var $thisDropdown = $(this); + + //get field name + var fieldName = $thisDropdown.attr('name'); + if (!fieldName) { + return; + } + + var field = self.options.fields[fieldName]; + + //check if this combobox depends on others + if (!field.dependsOn) { + return; + } + + //for each dependency + $.each(field.dependsOn, function (index, dependsOnField) { + //find the depended combobox + var $dependsOnDropdown = $form.find('select[name=' + dependsOnField + ']'); + //when depended combobox changes + $dependsOnDropdown.change(function () { + + //Refresh options + var funcParams = { + record: record, + source: source, + form: $form, + dependedValues: {} + }; + funcParams.dependedValues = self._createDependedValuesUsingForm($form, field.dependsOn); + var options = self._getOptionsForField(fieldName, funcParams); + + //Fill combobox with new options + self._fillDropDownListWithOptions($thisDropdown, options, undefined); + + //Thigger change event to refresh multi cascade dropdowns. + $thisDropdown.change(); + }); + }); + }); + }, + + /* Updates values of a record from given form + *************************************************************************/ + _updateRecordValuesFromForm: function (record, $form) { + for (var i = 0; i < this._fieldList.length; i++) { + var fieldName = this._fieldList[i]; + var field = this.options.fields[fieldName]; + + //Do not update non-editable fields + if (field.edit == false) { + continue; + } + + //Get field name and the input element of this field in the form + var $inputElement = $form.find('[name="' + fieldName + '"]'); + if ($inputElement.length <= 0) { + continue; + } + + //Update field in record according to it's type + if (field.type == 'date') { + var dateVal = $inputElement.val(); + if (dateVal) { + var displayFormat = field.displayFormat || this.options.defaultDateFormat; + try { + var date = $.datepicker.parseDate(displayFormat, dateVal); + record[fieldName] = '/Date(' + date.getTime() + ')/'; + } catch (e) { + //TODO: Handle incorrect/different date formats + this._logWarn('Date format is incorrect for field ' + fieldName + ': ' + dateVal); + record[fieldName] = undefined; + } + } else { + this._logDebug('Date is empty for ' + fieldName); + record[fieldName] = undefined; //TODO: undefined, null or empty string? + } + } else if (field.options && field.type == 'radiobutton') { + var $checkedElement = $inputElement.filter(':checked'); + if ($checkedElement.length) { + record[fieldName] = $checkedElement.val(); + } else { + record[fieldName] = undefined; + } + } else { + record[fieldName] = $inputElement.val(); + } + } + }, + + /* Sets enabled/disabled state of a dialog button. + *************************************************************************/ + _setEnabledOfDialogButton: function ($button, enabled, buttonText) { + if (!$button) { + return; + } + + if (enabled != false) { + $button + .removeAttr('disabled') + .removeClass('ui-state-disabled'); + } else { + $button + .attr('disabled', 'disabled') + .addClass('ui-state-disabled'); + } + + if (buttonText) { + $button + .find('span') + .text(buttonText); + } + } + + }); + +})(jQuery); + + +/************************************************************************ +* CREATE RECORD extension for jTable * +*************************************************************************/ +(function ($) { + + //Reference to base object members + var base = { + _create: $.hik.jtable.prototype._create + }; + + //extension members + $.extend(true, $.hik.jtable.prototype, { + + /************************************************************************ + * DEFAULT OPTIONS / EVENTS * + *************************************************************************/ + options: { + + //Events + recordAdded: function (event, data) { }, + + //Localization + messages: { + addNewRecord: 'Add new record' + } + }, + + /************************************************************************ + * PRIVATE FIELDS * + *************************************************************************/ + + _$addRecordDiv: null, //Reference to the adding new record dialog div (jQuery object) + + /************************************************************************ + * CONSTRUCTOR * + *************************************************************************/ + + /* Overrides base method to do create-specific constructions. + *************************************************************************/ + _create: function () { + base._create.apply(this, arguments); + + if (!this.options.actions.createAction) { + return; + } + + this._createAddRecordDialogDiv(); + }, + + /* Creates and prepares add new record dialog div + *************************************************************************/ + _createAddRecordDialogDiv: function () { + var self = this; + + //Create a div for dialog and add to container element + self._$addRecordDiv = $('
    ') + .appendTo(self._$mainContainer); + + //Prepare dialog + self._$addRecordDiv.dialog({ + autoOpen: false, + show: self.options.dialogShowEffect, + hide: self.options.dialogHideEffect, + width: 'auto', + minWidth: '300', + modal: true, + title: self.options.messages.addNewRecord, + buttons: + [{ //Cancel button + text: self.options.messages.cancel, + click: function () { + self._$addRecordDiv.dialog('close'); + } + }, { //Save button + id: 'AddRecordDialogSaveButton', + text: self.options.messages.save, + click: function () { + self._onSaveClickedOnCreateForm(); + } + }], + close: function () { + var $addRecordForm = self._$addRecordDiv.find('form').first(); + var $saveButton = self._$addRecordDiv.parent().find('#AddRecordDialogSaveButton'); + self._trigger("formClosed", null, { form: $addRecordForm, formType: 'create' }); + self._setEnabledOfDialogButton($saveButton, true, self.options.messages.save); + $addRecordForm.remove(); + } + }); + + if (self.options.addRecordButton) { + //If user supplied a button, bind the click event to show dialog form + self.options.addRecordButton.click(function (e) { + e.preventDefault(); + self._showAddRecordForm(); + }); + } else { + //If user did not supplied a button, create a 'add record button' toolbar item. + self._addToolBarItem({ + icon: true, + cssClass: 'jtable-toolbar-item-add-record', + text: self.options.messages.addNewRecord, + click: function () { + self._showAddRecordForm(); + } + }); + } + }, + + _onSaveClickedOnCreateForm: function () { + var self = this; + + var $saveButton = self._$addRecordDiv.parent().find('#AddRecordDialogSaveButton'); + var $addRecordForm = self._$addRecordDiv.find('form'); + + if (self._trigger("formSubmitting", null, { form: $addRecordForm, formType: 'create' }) != false) { + self._setEnabledOfDialogButton($saveButton, false, self.options.messages.saving); + self._saveAddRecordForm($addRecordForm, $saveButton); + } + }, + + /************************************************************************ + * PUBLIC METHODS * + *************************************************************************/ + + /* Shows add new record dialog form. + *************************************************************************/ + showCreateForm: function () { + this._showAddRecordForm(); + }, + + /* Adds a new record to the table (optionally to the server also) + *************************************************************************/ + addRecord: function (options) { + var self = this; + options = $.extend({ + clientOnly: false, + animationsEnabled: self.options.animationsEnabled, + success: function () { }, + error: function () { } + }, options); + + if (!options.record) { + self._logWarn('options parameter in addRecord method must contain a record property.'); + return; + } + + if (options.clientOnly) { + self._addRow( + self._createRowFromRecord(options.record), { + isNewRow: true, + animationsEnabled: options.animationsEnabled + }); + + options.success(); + return; + } + + var completeAddRecord = function (data) { + if (data.Result != 'OK') { + self._showError(data.Message); + options.error(data); + return; + } + + if (!data.Record) { + self._logError('Server must return the created Record object.'); + options.error(data); + return; + } + + self._onRecordAdded(data); + self._addRow( + self._createRowFromRecord(data.Record), { + isNewRow: true, + animationsEnabled: options.animationsEnabled + }); + + options.success(data); + }; + + //createAction may be a function, check if it is + if (!options.url && $.isFunction(self.options.actions.createAction)) { + + //Execute the function + var funcResult = self.options.actions.createAction($.param(options.record)); + + //Check if result is a jQuery Deferred object + if (self._isDeferredObject(funcResult)) { + //Wait promise + funcResult.done(function (data) { + completeAddRecord(data); + }).fail(function () { + self._showError(self.options.messages.serverCommunicationError); + options.error(); + }); + } else { //assume it returned the creation result + completeAddRecord(funcResult); + } + + } else { //Assume it's a URL string + + //Make an Ajax call to create record + self._submitFormUsingAjax( + options.url || self.options.actions.createAction, + $.param(options.record), + function (data) { + completeAddRecord(data); + }, + function () { + self._showError(self.options.messages.serverCommunicationError); + options.error(); + }); + + } + }, + + /************************************************************************ + * PRIVATE METHODS * + *************************************************************************/ + + /* Shows add new record dialog form. + *************************************************************************/ + _showAddRecordForm: function () { + var self = this; + + //Create add new record form + var $addRecordForm = $('
    '); + + //Create input elements + for (var i = 0; i < self._fieldList.length; i++) { + + var fieldName = self._fieldList[i]; + var field = self.options.fields[fieldName]; + + //Do not create input for fields that is key and not specially marked as creatable + if (field.key == true && field.create != true) { + continue; + } + + //Do not create input for fields that are not creatable + if (field.create == false) { + continue; + } + + if (field.type == 'hidden') { + $addRecordForm.append(self._createInputForHidden(fieldName, field.defaultValue)); + continue; + } + + //Create a container div for this input field and add to form + var $fieldContainer = $('
    ') + .addClass('jtable-input-field-container') + .appendTo($addRecordForm); + + //Create a label for input + $fieldContainer.append(self._createInputLabelForRecordField(fieldName)); + + //Create input element + $fieldContainer.append( + self._createInputForRecordField({ + fieldName: fieldName, + formType: 'create', + form: $addRecordForm + })); + } + + self._makeCascadeDropDowns($addRecordForm, undefined, 'create'); + + $addRecordForm.submit(function () { + self._onSaveClickedOnCreateForm(); + return false; + }); + + //Open the form + self._$addRecordDiv.append($addRecordForm).dialog('open'); + self._trigger("formCreated", null, { form: $addRecordForm, formType: 'create' }); + }, + + /* Saves new added record to the server and updates table. + *************************************************************************/ + _saveAddRecordForm: function ($addRecordForm, $saveButton) { + var self = this; + + var completeAddRecord = function (data) { + if (data.Result != 'OK') { + self._showError(data.Message); + self._setEnabledOfDialogButton($saveButton, true, self.options.messages.save); + return; + } + + if (!data.Record) { + self._logError('Server must return the created Record object.'); + self._setEnabledOfDialogButton($saveButton, true, self.options.messages.save); + return; + } + + self._onRecordAdded(data); + self._addRow( + self._createRowFromRecord(data.Record), { + isNewRow: true + }); + self._$addRecordDiv.dialog("close"); + }; + + $addRecordForm.data('submitting', true); //TODO: Why it's used, can remove? Check it. + + //createAction may be a function, check if it is + if ($.isFunction(self.options.actions.createAction)) { + + //Execute the function + var funcResult = self.options.actions.createAction($addRecordForm.serialize()); + + //Check if result is a jQuery Deferred object + if (self._isDeferredObject(funcResult)) { + //Wait promise + funcResult.done(function (data) { + completeAddRecord(data); + }).fail(function () { + self._showError(self.options.messages.serverCommunicationError); + self._setEnabledOfDialogButton($saveButton, true, self.options.messages.save); + }); + } else { //assume it returned the creation result + completeAddRecord(funcResult); + } + + } else { //Assume it's a URL string + + //Make an Ajax call to create record + self._submitFormUsingAjax( + self.options.actions.createAction, + $addRecordForm.serialize(), + function (data) { + completeAddRecord(data); + }, + function () { + self._showError(self.options.messages.serverCommunicationError); + self._setEnabledOfDialogButton($saveButton, true, self.options.messages.save); + }); + } + }, + + _onRecordAdded: function (data) { + this._trigger("recordAdded", null, { record: data.Record, serverResponse: data }); + } + + }); + +})(jQuery); + + +/************************************************************************ +* EDIT RECORD extension for jTable * +*************************************************************************/ +(function ($) { + + //Reference to base object members + var base = { + _create: $.hik.jtable.prototype._create, + _addColumnsToHeaderRow: $.hik.jtable.prototype._addColumnsToHeaderRow, + _addCellsToRowUsingRecord: $.hik.jtable.prototype._addCellsToRowUsingRecord + }; + + //extension members + $.extend(true, $.hik.jtable.prototype, { + + /************************************************************************ + * DEFAULT OPTIONS / EVENTS * + *************************************************************************/ + options: { + + //Events + recordUpdated: function (event, data) { }, + rowUpdated: function (event, data) { }, + + //Localization + messages: { + editRecord: 'Edit Record' + } + }, + + /************************************************************************ + * PRIVATE FIELDS * + *************************************************************************/ + + _$editDiv: null, //Reference to the editing dialog div (jQuery object) + _$editingRow: null, //Reference to currently editing row (jQuery object) + + /************************************************************************ + * CONSTRUCTOR AND INITIALIZATION METHODS * + *************************************************************************/ + + /* Overrides base method to do editing-specific constructions. + *************************************************************************/ + _create: function () { + base._create.apply(this, arguments); + + if (!this.options.actions.updateAction) { + return; + } + + this._createEditDialogDiv(); + }, + + /* Creates and prepares edit dialog div + *************************************************************************/ + _createEditDialogDiv: function () { + var self = this; + + //Create a div for dialog and add to container element + self._$editDiv = $('
    ') + .appendTo(self._$mainContainer); + + //Prepare dialog + self._$editDiv.dialog({ + autoOpen: false, + show: self.options.dialogShowEffect, + hide: self.options.dialogHideEffect, + width: 'auto', + minWidth: '300', + modal: true, + title: self.options.messages.editRecord, + buttons: + [{ //cancel button + text: self.options.messages.cancel, + click: function () { + self._$editDiv.dialog('close'); + } + }, { //save button + id: 'EditDialogSaveButton', + text: self.options.messages.save, + click: function () { + self._onSaveClickedOnEditForm(); + } + }], + close: function () { + var $editForm = self._$editDiv.find('form:first'); + var $saveButton = self._$editDiv.parent().find('#EditDialogSaveButton'); + self._trigger("formClosed", null, { form: $editForm, formType: 'edit', row: self._$editingRow }); + self._setEnabledOfDialogButton($saveButton, true, self.options.messages.save); + $editForm.remove(); + } + }); + }, + + /* Saves editing form to server. + *************************************************************************/ + _onSaveClickedOnEditForm: function () { + var self = this; + + //row maybe removed by another source, if so, do nothing + if (self._$editingRow.hasClass('jtable-row-removed')) { + self._$editDiv.dialog('close'); + return; + } + + var $saveButton = self._$editDiv.parent().find('#EditDialogSaveButton'); + var $editForm = self._$editDiv.find('form'); + if (self._trigger("formSubmitting", null, { form: $editForm, formType: 'edit', row: self._$editingRow }) != false) { + self._setEnabledOfDialogButton($saveButton, false, self.options.messages.saving); + self._saveEditForm($editForm, $saveButton); + } + }, + + /************************************************************************ + * PUBLIC METHODS * + *************************************************************************/ + + /* Updates a record on the table (optionally on the server also) + *************************************************************************/ + updateRecord: function (options) { + var self = this; + options = $.extend({ + clientOnly: false, + animationsEnabled: self.options.animationsEnabled, + success: function () { }, + error: function () { } + }, options); + + if (!options.record) { + self._logWarn('options parameter in updateRecord method must contain a record property.'); + return; + } + + var key = self._getKeyValueOfRecord(options.record); + if (key == undefined || key == null) { + self._logWarn('options parameter in updateRecord method must contain a record that contains the key field property.'); + return; + } + + var $updatingRow = self.getRowByKey(key); + if ($updatingRow == null) { + self._logWarn('Can not found any row by key "' + key + '" on the table. Updating row must be visible on the table.'); + return; + } + + if (options.clientOnly) { + $.extend($updatingRow.data('record'), options.record); + self._updateRowTexts($updatingRow); + self._onRecordUpdated($updatingRow, null); + if (options.animationsEnabled) { + self._showUpdateAnimationForRow($updatingRow); + } + + options.success(); + return; + } + + var completeEdit = function (data) { + if (data.Result != 'OK') { + self._showError(data.Message); + options.error(data); + return; + } + + $.extend($updatingRow.data('record'), options.record); + self._updateRecordValuesFromServerResponse($updatingRow.data('record'), data); + + self._updateRowTexts($updatingRow); + self._onRecordUpdated($updatingRow, data); + if (options.animationsEnabled) { + self._showUpdateAnimationForRow($updatingRow); + } + + options.success(data); + }; + + //updateAction may be a function, check if it is + if (!options.url && $.isFunction(self.options.actions.updateAction)) { + + //Execute the function + var funcResult = self.options.actions.updateAction($.param(options.record)); + + //Check if result is a jQuery Deferred object + if (self._isDeferredObject(funcResult)) { + //Wait promise + funcResult.done(function (data) { + completeEdit(data); + }).fail(function () { + self._showError(self.options.messages.serverCommunicationError); + options.error(); + }); + } else { //assume it returned the creation result + completeEdit(funcResult); + } + + } else { //Assume it's a URL string + + //Make an Ajax call to create record + self._submitFormUsingAjax( + options.url || self.options.actions.updateAction, + $.param(options.record), + function (data) { + completeEdit(data); + }, + function () { + self._showError(self.options.messages.serverCommunicationError); + options.error(); + }); + + } + }, + + /************************************************************************ + * OVERRIDED METHODS * + *************************************************************************/ + + /* Overrides base method to add a 'editing column cell' to header row. + *************************************************************************/ + _addColumnsToHeaderRow: function ($tr) { + base._addColumnsToHeaderRow.apply(this, arguments); + if (this.options.actions.updateAction != undefined) { + $tr.append(this._createEmptyCommandHeader()); + } + }, + + /* Overrides base method to add a 'edit command cell' to a row. + *************************************************************************/ + _addCellsToRowUsingRecord: function ($row) { + var self = this; + base._addCellsToRowUsingRecord.apply(this, arguments); + + if (self.options.actions.updateAction != undefined) { + var $span = $('').html(self.options.messages.editRecord); + var $button = $('') + .addClass('jtable-command-button jtable-edit-command-button') + .append($span) + .click(function (e) { + e.preventDefault(); + e.stopPropagation(); + self._showEditForm($row); + }); + $('') + .addClass('jtable-command-column') + .append($button) + .appendTo($row); + } + }, + + /************************************************************************ + * PRIVATE METHODS * + *************************************************************************/ + + /* Shows edit form for a row. + *************************************************************************/ + _showEditForm: function ($tableRow) { + var self = this; + var record = $tableRow.data('record'); + + //Create edit form + var $editForm = $('
    '); + + //Create input fields + for (var i = 0; i < self._fieldList.length; i++) { + + var fieldName = self._fieldList[i]; + var field = self.options.fields[fieldName]; + var fieldValue = record[fieldName]; + + if (field.key == true) { + if (field.edit != true) { + //Create hidden field for key + $editForm.append(self._createInputForHidden(fieldName, fieldValue)); + continue; + } else { + //Create a special hidden field for key (since key is be editable) + $editForm.append(self._createInputForHidden('jtRecordKey', fieldValue)); + } + } + + //Do not create element for non-editable fields + if (field.edit == false) { + continue; + } + + //Hidden field + if (field.type == 'hidden') { + $editForm.append(self._createInputForHidden(fieldName, fieldValue)); + continue; + } + + //Create a container div for this input field and add to form + var $fieldContainer = $('
    ').appendTo($editForm); + + //Create a label for input + $fieldContainer.append(self._createInputLabelForRecordField(fieldName)); + + //Create input element with it's current value + var currentValue = self._getValueForRecordField(record, fieldName); + $fieldContainer.append( + self._createInputForRecordField({ + fieldName: fieldName, + value: currentValue, + record: record, + formType: 'edit', + form: $editForm + })); + } + + self._makeCascadeDropDowns($editForm, record, 'edit'); + + $editForm.submit(function () { + self._onSaveClickedOnEditForm(); + return false; + }); + + //Open dialog + self._$editingRow = $tableRow; + self._$editDiv.append($editForm).dialog('open'); + self._trigger("formCreated", null, { form: $editForm, formType: 'edit', record: record, row: $tableRow }); + }, + + /* Saves editing form to the server and updates the record on the table. + *************************************************************************/ + _saveEditForm: function ($editForm, $saveButton) { + var self = this; + + var completeEdit = function (data) { + if (data.Result != 'OK') { + self._showError(data.Message); + self._setEnabledOfDialogButton($saveButton, true, self.options.messages.save); + return; + } + + var record = self._$editingRow.data('record'); + + self._updateRecordValuesFromForm(record, $editForm); + self._updateRecordValuesFromServerResponse(record, data); + self._updateRowTexts(self._$editingRow); + + self._$editingRow.attr('data-record-key', self._getKeyValueOfRecord(record)); + + self._onRecordUpdated(self._$editingRow, data); + + if (self.options.animationsEnabled) { + self._showUpdateAnimationForRow(self._$editingRow); + } + + self._$editDiv.dialog("close"); + }; + + + //updateAction may be a function, check if it is + if ($.isFunction(self.options.actions.updateAction)) { + + //Execute the function + var funcResult = self.options.actions.updateAction($editForm.serialize()); + + //Check if result is a jQuery Deferred object + if (self._isDeferredObject(funcResult)) { + //Wait promise + funcResult.done(function (data) { + completeEdit(data); + }).fail(function () { + self._showError(self.options.messages.serverCommunicationError); + self._setEnabledOfDialogButton($saveButton, true, self.options.messages.save); + }); + } else { //assume it returned the creation result + completeEdit(funcResult); + } + + } else { //Assume it's a URL string + + //Make an Ajax call to update record + self._submitFormUsingAjax( + self.options.actions.updateAction, + $editForm.serialize(), + function(data) { + completeEdit(data); + }, + function() { + self._showError(self.options.messages.serverCommunicationError); + self._setEnabledOfDialogButton($saveButton, true, self.options.messages.save); + }); + } + + }, + + /* This method ensures updating of current record with server response, + * if server sends a Record object as response to updateAction. + *************************************************************************/ + _updateRecordValuesFromServerResponse: function (record, serverResponse) { + if (!serverResponse || !serverResponse.Record) { + return; + } + + $.extend(true, record, serverResponse.Record); + }, + + /* Gets text for a field of a record according to it's type. + *************************************************************************/ + _getValueForRecordField: function (record, fieldName) { + var field = this.options.fields[fieldName]; + var fieldValue = record[fieldName]; + if (field.type == 'date') { + return this._getDisplayTextForDateRecordField(field, fieldValue); + } else { + return fieldValue; + } + }, + + /* Updates cells of a table row's text values from row's record values. + *************************************************************************/ + _updateRowTexts: function ($tableRow) { + var record = $tableRow.data('record'); + var $columns = $tableRow.find('td'); + for (var i = 0; i < this._columnList.length; i++) { + var displayItem = this._getDisplayTextForRecordField(record, this._columnList[i]); + if ((displayItem != "") && (displayItem == 0)) displayItem = "0"; + $columns.eq(this._firstDataColumnOffset + i).html(displayItem || ''); + } + + this._onRowUpdated($tableRow); + }, + + /* Shows 'updated' animation for a table row. + *************************************************************************/ + _showUpdateAnimationForRow: function ($tableRow) { + var className = 'jtable-row-updated'; + if (this.options.jqueryuiTheme) { + className = className + ' ui-state-highlight'; + } + + $tableRow.stop(true, true).addClass(className, 'slow', '', function () { + $tableRow.removeClass(className, 5000); + }); + }, + + /************************************************************************ + * EVENT RAISING METHODS * + *************************************************************************/ + + _onRowUpdated: function ($row) { + this._trigger("rowUpdated", null, { row: $row, record: $row.data('record') }); + }, + + _onRecordUpdated: function ($row, data) { + this._trigger("recordUpdated", null, { record: $row.data('record'), row: $row, serverResponse: data }); + } + + }); + +})(jQuery); + + +/************************************************************************ +* DELETION extension for jTable * +*************************************************************************/ +(function ($) { + + //Reference to base object members + var base = { + _create: $.hik.jtable.prototype._create, + _addColumnsToHeaderRow: $.hik.jtable.prototype._addColumnsToHeaderRow, + _addCellsToRowUsingRecord: $.hik.jtable.prototype._addCellsToRowUsingRecord + }; + + //extension members + $.extend(true, $.hik.jtable.prototype, { + + /************************************************************************ + * DEFAULT OPTIONS / EVENTS * + *************************************************************************/ + options: { + + //Options + deleteConfirmation: true, + + //Events + recordDeleted: function (event, data) { }, + + //Localization + messages: { + deleteConfirmation: 'This record will be deleted. Are you sure?', + deleteText: 'Delete', + deleting: 'Deleting', + canNotDeletedRecords: 'Can not delete {0} of {1} records!', + deleteProggress: 'Deleting {0} of {1} records, processing...' + } + }, + + /************************************************************************ + * PRIVATE FIELDS * + *************************************************************************/ + + _$deleteRecordDiv: null, //Reference to the adding new record dialog div (jQuery object) + _$deletingRow: null, //Reference to currently deleting row (jQuery object) + + /************************************************************************ + * CONSTRUCTOR * + *************************************************************************/ + + /* Overrides base method to do deletion-specific constructions. + *************************************************************************/ + _create: function () { + base._create.apply(this, arguments); + this._createDeleteDialogDiv(); + }, + + /* Creates and prepares delete record confirmation dialog div. + *************************************************************************/ + _createDeleteDialogDiv: function () { + var self = this; + + //Check if deleteAction is supplied + if (!self.options.actions.deleteAction) { + return; + } + + //Create div element for delete confirmation dialog + self._$deleteRecordDiv = $('

    ').appendTo(self._$mainContainer); + + //Prepare dialog + self._$deleteRecordDiv.dialog({ + autoOpen: false, + show: self.options.dialogShowEffect, + hide: self.options.dialogHideEffect, + modal: true, + title: self.options.messages.areYouSure, + buttons: + [{ //cancel button + text: self.options.messages.cancel, + click: function () { + self._$deleteRecordDiv.dialog("close"); + } + }, {//delete button + id: 'DeleteDialogButton', + text: self.options.messages.deleteText, + click: function () { + + //row maybe removed by another source, if so, do nothing + if (self._$deletingRow.hasClass('jtable-row-removed')) { + self._$deleteRecordDiv.dialog('close'); + return; + } + + var $deleteButton = self._$deleteRecordDiv.parent().find('#DeleteDialogButton'); + self._setEnabledOfDialogButton($deleteButton, false, self.options.messages.deleting); + self._deleteRecordFromServer( + self._$deletingRow, + function () { + self._removeRowsFromTableWithAnimation(self._$deletingRow); + self._$deleteRecordDiv.dialog('close'); + }, + function (message) { //error + self._showError(message); + self._setEnabledOfDialogButton($deleteButton, true, self.options.messages.deleteText); + } + ); + } + }], + close: function () { + var $deleteButton = self._$deleteRecordDiv.parent().find('#DeleteDialogButton'); + self._setEnabledOfDialogButton($deleteButton, true, self.options.messages.deleteText); + } + }); + }, + + /************************************************************************ + * PUBLIC METHODS * + *************************************************************************/ + + /* This method is used to delete one or more rows from server and the table. + *************************************************************************/ + deleteRows: function ($rows) { + var self = this; + + if ($rows.length <= 0) { + self._logWarn('No rows specified to jTable deleteRows method.'); + return; + } + + if (self._isBusy()) { + self._logWarn('Can not delete rows since jTable is busy!'); + return; + } + + //Deleting just one row + if ($rows.length == 1) { + self._deleteRecordFromServer( + $rows, + function () { //success + self._removeRowsFromTableWithAnimation($rows); + }, + function (message) { //error + self._showError(message); + } + ); + + return; + } + + //Deleting multiple rows + self._showBusy(self._formatString(self.options.messages.deleteProggress, 0, $rows.length)); + + //This method checks if deleting of all records is completed + var completedCount = 0; + var isCompleted = function () { + return (completedCount >= $rows.length); + }; + + //This method is called when deleting of all records completed + var completed = function () { + var $deletedRows = $rows.filter('.jtable-row-ready-to-remove'); + if ($deletedRows.length < $rows.length) { + self._showError(self._formatString(self.options.messages.canNotDeletedRecords, $rows.length - $deletedRows.length, $rows.length)); + } + + if ($deletedRows.length > 0) { + self._removeRowsFromTableWithAnimation($deletedRows); + } + + self._hideBusy(); + }; + + //Delete all rows + var deletedCount = 0; + $rows.each(function () { + var $row = $(this); + self._deleteRecordFromServer( + $row, + function () { //success + ++deletedCount; ++completedCount; + $row.addClass('jtable-row-ready-to-remove'); + self._showBusy(self._formatString(self.options.messages.deleteProggress, deletedCount, $rows.length)); + if (isCompleted()) { + completed(); + } + }, + function () { //error + ++completedCount; + if (isCompleted()) { + completed(); + } + } + ); + }); + }, + + /* Deletes a record from the table (optionally from the server also). + *************************************************************************/ + deleteRecord: function (options) { + var self = this; + options = $.extend({ + clientOnly: false, + animationsEnabled: self.options.animationsEnabled, + url: self.options.actions.deleteAction, + success: function () { }, + error: function () { } + }, options); + + if (options.key == undefined) { + self._logWarn('options parameter in deleteRecord method must contain a key property.'); + return; + } + + var $deletingRow = self.getRowByKey(options.key); + if ($deletingRow == null) { + self._logWarn('Can not found any row by key: ' + options.key); + return; + } + + if (options.clientOnly) { + self._removeRowsFromTableWithAnimation($deletingRow, options.animationsEnabled); + options.success(); + return; + } + + self._deleteRecordFromServer( + $deletingRow, + function (data) { //success + self._removeRowsFromTableWithAnimation($deletingRow, options.animationsEnabled); + options.success(data); + }, + function (message) { //error + self._showError(message); + options.error(message); + }, + options.url + ); + }, + + /************************************************************************ + * OVERRIDED METHODS * + *************************************************************************/ + + /* Overrides base method to add a 'deletion column cell' to header row. + *************************************************************************/ + _addColumnsToHeaderRow: function ($tr) { + base._addColumnsToHeaderRow.apply(this, arguments); + if (this.options.actions.deleteAction != undefined) { + $tr.append(this._createEmptyCommandHeader()); + } + }, + + /* Overrides base method to add a 'delete command cell' to a row. + *************************************************************************/ + _addCellsToRowUsingRecord: function ($row) { + base._addCellsToRowUsingRecord.apply(this, arguments); + + var self = this; + if (self.options.actions.deleteAction != undefined) { + var $span = $('').html(self.options.messages.deleteText); + var $button = $('') + .addClass('jtable-command-button jtable-delete-command-button') + .append($span) + .click(function (e) { + e.preventDefault(); + e.stopPropagation(); + self._deleteButtonClickedForRow($row); + }); + $('') + .addClass('jtable-command-column') + .append($button) + .appendTo($row); + } + }, + + /************************************************************************ + * PRIVATE METHODS * + *************************************************************************/ + + /* This method is called when user clicks delete button on a row. + *************************************************************************/ + _deleteButtonClickedForRow: function ($row) { + var self = this; + + var deleteConfirm; + var deleteConfirmMessage = self.options.messages.deleteConfirmation; + + //If options.deleteConfirmation is function then call it + if ($.isFunction(self.options.deleteConfirmation)) { + var data = { row: $row, record: $row.data('record'), deleteConfirm: true, deleteConfirmMessage: deleteConfirmMessage, cancel: false, cancelMessage: null }; + self.options.deleteConfirmation(data); + + //If delete progress is cancelled + if (data.cancel) { + + //If a canlellation reason is specified + if (data.cancelMessage) { + self._showError(data.cancelMessage); //TODO: show warning/stop message instead of error (also show warning/error ui icon)! + } + + return; + } + + deleteConfirmMessage = data.deleteConfirmMessage; + deleteConfirm = data.deleteConfirm; + } else { + deleteConfirm = self.options.deleteConfirmation; + } + + if (deleteConfirm != false) { + //Confirmation + self._$deleteRecordDiv.find('.jtable-delete-confirm-message').html(deleteConfirmMessage); + self._showDeleteDialog($row); + } else { + //No confirmation + self._deleteRecordFromServer( + $row, + function () { //success + self._removeRowsFromTableWithAnimation($row); + }, + function (message) { //error + self._showError(message); + } + ); + } + }, + + /* Shows delete comfirmation dialog. + *************************************************************************/ + _showDeleteDialog: function ($row) { + this._$deletingRow = $row; + this._$deleteRecordDiv.dialog('open'); + }, + + /* Performs an ajax call to server to delete record + * and removes row of the record from table if ajax call success. + *************************************************************************/ + _deleteRecordFromServer: function ($row, success, error, url) { + var self = this; + + var completeDelete = function(data) { + if (data.Result != 'OK') { + $row.data('deleting', false); + if (error) { + error(data.Message); + } + + return; + } + + self._trigger("recordDeleted", null, { record: $row.data('record'), row: $row, serverResponse: data }); + + if (success) { + success(data); + } + }; + + //Check if it is already being deleted right now + if ($row.data('deleting') == true) { + return; + } + + $row.data('deleting', true); + + var postData = {}; + postData[self._keyField] = self._getKeyValueOfRecord($row.data('record')); + + //deleteAction may be a function, check if it is + if (!url && $.isFunction(self.options.actions.deleteAction)) { + + //Execute the function + var funcResult = self.options.actions.deleteAction(postData); + + //Check if result is a jQuery Deferred object + if (self._isDeferredObject(funcResult)) { + //Wait promise + funcResult.done(function (data) { + completeDelete(data); + }).fail(function () { + $row.data('deleting', false); + if (error) { + error(self.options.messages.serverCommunicationError); + } + }); + } else { //assume it returned the deletion result + completeDelete(funcResult); + } + + } else { //Assume it's a URL string + //Make ajax call to delete the record from server + this._ajax({ + url: (url || self.options.actions.deleteAction), + data: postData, + success: function (data) { + completeDelete(data); + }, + error: function () { + $row.data('deleting', false); + if (error) { + error(self.options.messages.serverCommunicationError); + } + } + }); + + } + }, + + /* Removes a row from table after a 'deleting' animation. + *************************************************************************/ + _removeRowsFromTableWithAnimation: function ($rows, animationsEnabled) { + var self = this; + + if (animationsEnabled == undefined) { + animationsEnabled = self.options.animationsEnabled; + } + + if (animationsEnabled) { + var className = 'jtable-row-deleting'; + if (this.options.jqueryuiTheme) { + className = className + ' ui-state-disabled'; + } + + //Stop current animation (if does exists) and begin 'deleting' animation. + $rows.stop(true, true).addClass(className, 'slow', '').promise().done(function () { + self._removeRowsFromTable($rows, 'deleted'); + }); + } else { + self._removeRowsFromTable($rows, 'deleted'); + } + } + + }); + +})(jQuery); + + +/************************************************************************ +* SELECTING extension for jTable * +*************************************************************************/ +(function ($) { + + //Reference to base object members + var base = { + _create: $.hik.jtable.prototype._create, + _addColumnsToHeaderRow: $.hik.jtable.prototype._addColumnsToHeaderRow, + _addCellsToRowUsingRecord: $.hik.jtable.prototype._addCellsToRowUsingRecord, + _onLoadingRecords: $.hik.jtable.prototype._onLoadingRecords, + _onRecordsLoaded: $.hik.jtable.prototype._onRecordsLoaded, + _onRowsRemoved: $.hik.jtable.prototype._onRowsRemoved + }; + + //extension members + $.extend(true, $.hik.jtable.prototype, { + + /************************************************************************ + * DEFAULT OPTIONS / EVENTS * + *************************************************************************/ + options: { + + //Options + selecting: false, + multiselect: false, + selectingCheckboxes: false, + selectOnRowClick: true, + + //Events + selectionChanged: function (event, data) { } + }, + + /************************************************************************ + * PRIVATE FIELDS * + *************************************************************************/ + + _selectedRecordIdsBeforeLoad: null, //This array is used to store selected row Id's to restore them after a page refresh (string array). + _$selectAllCheckbox: null, //Reference to the 'select/deselect all' checkbox (jQuery object) + _shiftKeyDown: false, //True, if shift key is currently down. + + /************************************************************************ + * CONSTRUCTOR * + *************************************************************************/ + + /* Overrides base method to do selecting-specific constructions. + *************************************************************************/ + _create: function () { + if (this.options.selecting && this.options.selectingCheckboxes) { + ++this._firstDataColumnOffset; + this._bindKeyboardEvents(); + } + + //Call base method + base._create.apply(this, arguments); + }, + + /* Registers to keyboard events those are needed for selection + *************************************************************************/ + _bindKeyboardEvents: function () { + var self = this; + //Register to events to set _shiftKeyDown value + $(document) + .keydown(function (event) { + switch (event.which) { + case 16: + self._shiftKeyDown = true; + break; + } + }) + .keyup(function (event) { + switch (event.which) { + case 16: + self._shiftKeyDown = false; + break; + } + }); + }, + + /************************************************************************ + * PUBLIC METHODS * + *************************************************************************/ + + /* Gets jQuery selection for currently selected rows. + *************************************************************************/ + selectedRows: function () { + return this._getSelectedRows(); + }, + + /* Makes row/rows 'selected'. + *************************************************************************/ + selectRows: function ($rows) { + this._selectRows($rows); + this._onSelectionChanged(); //TODO: trigger only if selected rows changes? + }, + + /************************************************************************ + * OVERRIDED METHODS * + *************************************************************************/ + + /* Overrides base method to add a 'select column' to header row. + *************************************************************************/ + _addColumnsToHeaderRow: function ($tr) { + if (this.options.selecting && this.options.selectingCheckboxes) { + if (this.options.multiselect) { + $tr.append(this._createSelectAllHeader()); + } else { + $tr.append(this._createEmptyCommandHeader()); + } + } + + base._addColumnsToHeaderRow.apply(this, arguments); + }, + + /* Overrides base method to add a 'delete command cell' to a row. + *************************************************************************/ + _addCellsToRowUsingRecord: function ($row) { + if (this.options.selecting) { + this._makeRowSelectable($row); + } + + base._addCellsToRowUsingRecord.apply(this, arguments); + }, + + /* Overrides base event to store selection list + *************************************************************************/ + _onLoadingRecords: function () { + if (this.options.selecting) { + this._storeSelectionList(); + } + + base._onLoadingRecords.apply(this, arguments); + }, + + /* Overrides base event to restore selection list + *************************************************************************/ + _onRecordsLoaded: function () { + if (this.options.selecting) { + this._restoreSelectionList(); + } + + base._onRecordsLoaded.apply(this, arguments); + }, + + /* Overrides base event to check is any selected row is being removed. + *************************************************************************/ + _onRowsRemoved: function ($rows, reason) { + if (this.options.selecting && (reason != 'reloading') && ($rows.filter('.jtable-row-selected').length > 0)) { + this._onSelectionChanged(); + } + + base._onRowsRemoved.apply(this, arguments); + }, + + /************************************************************************ + * PRIVATE METHODS * + *************************************************************************/ + + /* Creates a header column to select/deselect all rows. + *************************************************************************/ + _createSelectAllHeader: function () { + var self = this; + + var $columnHeader = $('') + .addClass('jtable-command-column-header jtable-column-header-selecting'); + this._jqueryuiThemeAddClass($columnHeader, 'ui-state-default'); + + var $headerContainer = $('
    ') + .addClass('jtable-column-header-container') + .appendTo($columnHeader); + + self._$selectAllCheckbox = $('') + .appendTo($headerContainer) + .click(function () { + if (self._$tableRows.length <= 0) { + self._$selectAllCheckbox.attr('checked', false); + return; + } + + var allRows = self._$tableBody.find('>tr.jtable-data-row'); + if (self._$selectAllCheckbox.is(':checked')) { + self._selectRows(allRows); + } else { + self._deselectRows(allRows); + } + + self._onSelectionChanged(); + }); + + return $columnHeader; + }, + + /* Stores Id's of currently selected records to _selectedRecordIdsBeforeLoad. + *************************************************************************/ + _storeSelectionList: function () { + var self = this; + + if (!self.options.selecting) { + return; + } + + self._selectedRecordIdsBeforeLoad = []; + self._getSelectedRows().each(function () { + self._selectedRecordIdsBeforeLoad.push(self._getKeyValueOfRecord($(this).data('record'))); + }); + }, + + /* Selects rows whose Id is in _selectedRecordIdsBeforeLoad; + *************************************************************************/ + _restoreSelectionList: function () { + var self = this; + + if (!self.options.selecting) { + return; + } + + var selectedRowCount = 0; + for (var i = 0; i < self._$tableRows.length; ++i) { + var recordId = self._getKeyValueOfRecord(self._$tableRows[i].data('record')); + if ($.inArray(recordId, self._selectedRecordIdsBeforeLoad) > -1) { + self._selectRows(self._$tableRows[i]); + ++selectedRowCount; + } + } + + if (self._selectedRecordIdsBeforeLoad.length > 0 && self._selectedRecordIdsBeforeLoad.length != selectedRowCount) { + self._onSelectionChanged(); + } + + self._selectedRecordIdsBeforeLoad = []; + self._refreshSelectAllCheckboxState(); + }, + + /* Gets all selected rows. + *************************************************************************/ + _getSelectedRows: function () { + return this._$tableBody + .find('>tr.jtable-row-selected'); + }, + + /* Adds selectable feature to a row. + *************************************************************************/ + _makeRowSelectable: function ($row) { + var self = this; + + //Select/deselect on row click + if (self.options.selectOnRowClick) { + $row.click(function () { + self._invertRowSelection($row); + }); + } + + //'select/deselect' checkbox column + if (self.options.selectingCheckboxes) { + var $cell = $('').addClass('jtable-selecting-column'); + var $selectCheckbox = $('').appendTo($cell); + if (!self.options.selectOnRowClick) { + $selectCheckbox.click(function () { + self._invertRowSelection($row); + }); + } + + $row.append($cell); + } + }, + + /* Inverts selection state of a single row. + *************************************************************************/ + _invertRowSelection: function ($row) { + if ($row.hasClass('jtable-row-selected')) { + this._deselectRows($row); + } else { + //Shift key? + if (this._shiftKeyDown) { + var rowIndex = this._findRowIndex($row); + //try to select row and above rows until first selected row + var beforeIndex = this._findFirstSelectedRowIndexBeforeIndex(rowIndex) + 1; + if (beforeIndex > 0 && beforeIndex < rowIndex) { + this._selectRows(this._$tableBody.find('tr').slice(beforeIndex, rowIndex + 1)); + } else { + //try to select row and below rows until first selected row + var afterIndex = this._findFirstSelectedRowIndexAfterIndex(rowIndex) - 1; + if (afterIndex > rowIndex) { + this._selectRows(this._$tableBody.find('tr').slice(rowIndex, afterIndex + 1)); + } else { + //just select this row + this._selectRows($row); + } + } + } else { + this._selectRows($row); + } + } + + this._onSelectionChanged(); + }, + + /* Search for a selected row (that is before given row index) to up and returns it's index + *************************************************************************/ + _findFirstSelectedRowIndexBeforeIndex: function (rowIndex) { + for (var i = rowIndex - 1; i >= 0; --i) { + if (this._$tableRows[i].hasClass('jtable-row-selected')) { + return i; + } + } + + return -1; + }, + + /* Search for a selected row (that is after given row index) to down and returns it's index + *************************************************************************/ + _findFirstSelectedRowIndexAfterIndex: function (rowIndex) { + for (var i = rowIndex + 1; i < this._$tableRows.length; ++i) { + if (this._$tableRows[i].hasClass('jtable-row-selected')) { + return i; + } + } + + return -1; + }, + + /* Makes row/rows 'selected'. + *************************************************************************/ + _selectRows: function ($rows) { + if (!this.options.multiselect) { + this._deselectRows(this._getSelectedRows()); + } + + $rows.addClass('jtable-row-selected'); + this._jqueryuiThemeAddClass($rows, 'ui-state-highlight'); + + if (this.options.selectingCheckboxes) { + $rows.find('>td.jtable-selecting-column >input').prop('checked', true); + } + + this._refreshSelectAllCheckboxState(); + }, + + /* Makes row/rows 'non selected'. + *************************************************************************/ + _deselectRows: function ($rows) { + $rows.removeClass('jtable-row-selected ui-state-highlight'); + if (this.options.selectingCheckboxes) { + $rows.find('>td.jtable-selecting-column >input').prop('checked', false); + } + + this._refreshSelectAllCheckboxState(); + }, + + /* Updates state of the 'select/deselect' all checkbox according to count of selected rows. + *************************************************************************/ + _refreshSelectAllCheckboxState: function () { + if (!this.options.selectingCheckboxes || !this.options.multiselect) { + return; + } + + var totalRowCount = this._$tableRows.length; + var selectedRowCount = this._getSelectedRows().length; + + if (selectedRowCount == 0) { + this._$selectAllCheckbox.prop('indeterminate', false); + this._$selectAllCheckbox.attr('checked', false); + } else if (selectedRowCount == totalRowCount) { + this._$selectAllCheckbox.prop('indeterminate', false); + this._$selectAllCheckbox.attr('checked', true); + } else { + this._$selectAllCheckbox.attr('checked', false); + this._$selectAllCheckbox.prop('indeterminate', true); + } + }, + + /************************************************************************ + * EVENT RAISING METHODS * + *************************************************************************/ + + _onSelectionChanged: function () { + this._trigger("selectionChanged", null, {}); + } + + }); + +})(jQuery); + + +/************************************************************************ +* PAGING extension for jTable * +*************************************************************************/ +(function ($) { + + //Reference to base object members + var base = { + load: $.hik.jtable.prototype.load, + _create: $.hik.jtable.prototype._create, + _setOption: $.hik.jtable.prototype._setOption, + _createRecordLoadUrl: $.hik.jtable.prototype._createRecordLoadUrl, + _createJtParamsForLoading: $.hik.jtable.prototype._createJtParamsForLoading, + _addRowToTable: $.hik.jtable.prototype._addRowToTable, + _addRow: $.hik.jtable.prototype._addRow, + _removeRowsFromTable: $.hik.jtable.prototype._removeRowsFromTable, + _onRecordsLoaded: $.hik.jtable.prototype._onRecordsLoaded + }; + + //extension members + $.extend(true, $.hik.jtable.prototype, { + + /************************************************************************ + * DEFAULT OPTIONS / EVENTS * + *************************************************************************/ + options: { + paging: false, + pageList: 'normal', //possible values: 'minimal', 'normal' + pageSize: 10, + pageSizes: [10, 25, 50, 100, 250, 500], + pageSizeChangeArea: true, + gotoPageArea: 'combobox', //possible values: 'textbox', 'combobox', 'none' + + messages: { + pagingInfo: 'Showing {0}-{1} of {2}', + pageSizeChangeLabel: 'Row count', + gotoPageLabel: 'Go to page' + } + }, + + /************************************************************************ + * PRIVATE FIELDS * + *************************************************************************/ + + _$bottomPanel: null, //Reference to the panel at the bottom of the table (jQuery object) + _$pagingListArea: null, //Reference to the page list area in to bottom panel (jQuery object) + _$pageSizeChangeArea: null, //Reference to the page size change area in to bottom panel (jQuery object) + _$pageInfoSpan: null, //Reference to the paging info area in to bottom panel (jQuery object) + _$gotoPageArea: null, //Reference to 'Go to page' input area in to bottom panel (jQuery object) + _$gotoPageInput: null, //Reference to 'Go to page' input in to bottom panel (jQuery object) + _totalRecordCount: 0, //Total count of records on all pages + _currentPageNo: 1, //Current page number + + /************************************************************************ + * CONSTRUCTOR AND INITIALIZING METHODS * + *************************************************************************/ + + /* Overrides base method to do paging-specific constructions. + *************************************************************************/ + _create: function() { + base._create.apply(this, arguments); + if (this.options.paging) { + this._loadPagingSettings(); + this._createBottomPanel(); + this._createPageListArea(); + this._createGotoPageInput(); + this._createPageSizeSelection(); + } + }, + + /* Loads user preferences for paging. + *************************************************************************/ + _loadPagingSettings: function() { + if (!this.options.saveUserPreferences) { + return; + } + + var pageSize = this._getCookie('page-size'); + if (pageSize) { + this.options.pageSize = this._normalizeNumber(pageSize, 1, 1000000, this.options.pageSize); + } + }, + + /* Creates bottom panel and adds to the page. + *************************************************************************/ + _createBottomPanel: function() { + this._$bottomPanel = $('
    ') + .addClass('jtable-bottom-panel') + .insertAfter(this._$table); + + this._jqueryuiThemeAddClass(this._$bottomPanel, 'ui-state-default'); + + $('
    ').addClass('jtable-left-area').appendTo(this._$bottomPanel); + $('
    ').addClass('jtable-right-area').appendTo(this._$bottomPanel); + }, + + /* Creates page list area. + *************************************************************************/ + _createPageListArea: function() { + this._$pagingListArea = $('') + .addClass('jtable-page-list') + .appendTo(this._$bottomPanel.find('.jtable-left-area')); + + this._$pageInfoSpan = $('') + .addClass('jtable-page-info') + .appendTo(this._$bottomPanel.find('.jtable-right-area')); + }, + + /* Creates page list change area. + *************************************************************************/ + _createPageSizeSelection: function() { + var self = this; + + if (!self.options.pageSizeChangeArea) { + return; + } + + //Add current page size to page sizes list if not contains it + if (self._findIndexInArray(self.options.pageSize, self.options.pageSizes) < 0) { + self.options.pageSizes.push(parseInt(self.options.pageSize)); + self.options.pageSizes.sort(function(a, b) { return a - b; }); + } + + //Add a span to contain page size change items + self._$pageSizeChangeArea = $('') + .addClass('jtable-page-size-change') + .appendTo(self._$bottomPanel.find('.jtable-left-area')); + + //Page size label + self._$pageSizeChangeArea.append('' + self.options.messages.pageSizeChangeLabel + ': '); + + //Page size change combobox + var $pageSizeChangeCombobox = $('').appendTo(self._$pageSizeChangeArea); + + //Add page sizes to the combobox + for (var i = 0; i < self.options.pageSizes.length; i++) { + $pageSizeChangeCombobox.append(''); + } + + //Select current page size + $pageSizeChangeCombobox.val(self.options.pageSize); + + //Change page size on combobox change + $pageSizeChangeCombobox.change(function() { + self._changePageSize(parseInt($(this).val())); + }); + }, + + /* Creates go to page area. + *************************************************************************/ + _createGotoPageInput: function() { + var self = this; + + if (!self.options.gotoPageArea || self.options.gotoPageArea == 'none') { + return; + } + + //Add a span to contain goto page items + this._$gotoPageArea = $('') + .addClass('jtable-goto-page') + .appendTo(self._$bottomPanel.find('.jtable-left-area')); + + //Goto page label + this._$gotoPageArea.append('' + self.options.messages.gotoPageLabel + ': '); + + //Goto page input + if (self.options.gotoPageArea == 'combobox') { + + self._$gotoPageInput = $('') + .appendTo(this._$gotoPageArea) + .data('pageCount', 1) + .change(function() { + self._changePage(parseInt($(this).val())); + }); + self._$gotoPageInput.append(''); + + } else { //textbox + + self._$gotoPageInput = $('') + .appendTo(this._$gotoPageArea) + .keypress(function(event) { + if (event.which == 13) { //enter + event.preventDefault(); + self._changePage(parseInt(self._$gotoPageInput.val())); + } else if (event.which == 43) { // + + event.preventDefault(); + self._changePage(parseInt(self._$gotoPageInput.val()) + 1); + } else if (event.which == 45) { // - + event.preventDefault(); + self._changePage(parseInt(self._$gotoPageInput.val()) - 1); + } else { + //Allow only digits + var isValid = ( + (47 < event.keyCode && event.keyCode < 58 && event.shiftKey == false && event.altKey == false) + || (event.keyCode == 8) + || (event.keyCode == 9) + ); + + if (!isValid) { + event.preventDefault(); + } + } + }); + + } + }, + + /* Refreshes the 'go to page' input. + *************************************************************************/ + _refreshGotoPageInput: function() { + if (!this.options.gotoPageArea || this.options.gotoPageArea == 'none') { + return; + } + + if (this._totalRecordCount <= 0) { + this._$gotoPageArea.hide(); + } else { + this._$gotoPageArea.show(); + } + + if (this.options.gotoPageArea == 'combobox') { + var oldPageCount = this._$gotoPageInput.data('pageCount'); + var currentPageCount = this._calculatePageCount(); + if (oldPageCount != currentPageCount) { + this._$gotoPageInput.empty(); + + //Skip some pages is there are too many pages + var pageStep = 1; + if (currentPageCount > 10000) { + pageStep = 100; + } else if (currentPageCount > 5000) { + pageStep = 10; + } else if (currentPageCount > 2000) { + pageStep = 5; + } else if (currentPageCount > 1000) { + pageStep = 2; + } + + for (var i = pageStep; i <= currentPageCount; i += pageStep) { + this._$gotoPageInput.append(''); + } + + this._$gotoPageInput.data('pageCount', currentPageCount); + } + } + + //same for 'textbox' and 'combobox' + this._$gotoPageInput.val(this._currentPageNo); + }, + + /************************************************************************ + * OVERRIDED METHODS * + *************************************************************************/ + + /* Overrides load method to set current page to 1. + *************************************************************************/ + load: function() { + this._currentPageNo = 1; + + base.load.apply(this, arguments); + }, + + /* Used to change options dynamically after initialization. + *************************************************************************/ + _setOption: function(key, value) { + base._setOption.apply(this, arguments); + + if (key == 'pageSize') { + this._changePageSize(parseInt(value)); + } + }, + + /* Changes current page size with given value. + *************************************************************************/ + _changePageSize: function(pageSize) { + if (pageSize == this.options.pageSize) { + return; + } + + this.options.pageSize = pageSize; + + //Normalize current page + var pageCount = this._calculatePageCount(); + if (this._currentPageNo > pageCount) { + this._currentPageNo = pageCount; + } + if (this._currentPageNo <= 0) { + this._currentPageNo = 1; + } + + //if user sets one of the options on the combobox, then select it. + var $pageSizeChangeCombobox = this._$bottomPanel.find('.jtable-page-size-change select'); + if ($pageSizeChangeCombobox.length > 0) { + if (parseInt($pageSizeChangeCombobox.val()) != pageSize) { + var selectedOption = $pageSizeChangeCombobox.find('option[value=' + pageSize + ']'); + if (selectedOption.length > 0) { + $pageSizeChangeCombobox.val(pageSize); + } + } + } + + this._savePagingSettings(); + this._reloadTable(); + }, + + /* Saves user preferences for paging + *************************************************************************/ + _savePagingSettings: function() { + if (!this.options.saveUserPreferences) { + return; + } + + this._setCookie('page-size', this.options.pageSize); + }, + + /* Overrides _createRecordLoadUrl method to add paging info to URL. + *************************************************************************/ + _createRecordLoadUrl: function() { + var loadUrl = base._createRecordLoadUrl.apply(this, arguments); + loadUrl = this._addPagingInfoToUrl(loadUrl, this._currentPageNo); + return loadUrl; + }, + + /* Overrides _createJtParamsForLoading method to add paging parameters to jtParams object. + *************************************************************************/ + _createJtParamsForLoading: function () { + var jtParams = base._createJtParamsForLoading.apply(this, arguments); + + if (this.options.paging) { + jtParams.jtStartIndex = (this._currentPageNo - 1) * this.options.pageSize; + jtParams.jtPageSize = this.options.pageSize; + } + + return jtParams; + }, + + /* Overrides _addRowToTable method to re-load table when a new row is created. + * NOTE: THIS METHOD IS DEPRECATED AND WILL BE REMOVED FROM FEATURE RELEASES. + * USE _addRow METHOD. + *************************************************************************/ + _addRowToTable: function ($tableRow, index, isNewRow) { + if (isNewRow && this.options.paging) { + this._reloadTable(); + return; + } + + base._addRowToTable.apply(this, arguments); + }, + + /* Overrides _addRow method to re-load table when a new row is created. + *************************************************************************/ + _addRow: function ($row, options) { + if (options && options.isNewRow && this.options.paging) { + this._reloadTable(); + return; + } + + base._addRow.apply(this, arguments); + }, + + /* Overrides _removeRowsFromTable method to re-load table when a row is removed from table. + *************************************************************************/ + _removeRowsFromTable: function ($rows, reason) { + base._removeRowsFromTable.apply(this, arguments); + + if (this.options.paging) { + if (this._$tableRows.length <= 0 && this._currentPageNo > 1) { + --this._currentPageNo; + } + + this._reloadTable(); + } + }, + + /* Overrides _onRecordsLoaded method to to do paging specific tasks. + *************************************************************************/ + _onRecordsLoaded: function (data) { + if (this.options.paging) { + this._totalRecordCount = data.TotalRecordCount; + this._createPagingList(); + this._createPagingInfo(); + this._refreshGotoPageInput(); + } + + base._onRecordsLoaded.apply(this, arguments); + }, + + /************************************************************************ + * PRIVATE METHODS * + *************************************************************************/ + + /* Adds jtStartIndex and jtPageSize parameters to a URL as query string. + *************************************************************************/ + _addPagingInfoToUrl: function (url, pageNumber) { + if (!this.options.paging) { + return url; + } + + var jtStartIndex = (pageNumber - 1) * this.options.pageSize; + var jtPageSize = this.options.pageSize; + + return (url + (url.indexOf('?') < 0 ? '?' : '&') + 'jtStartIndex=' + jtStartIndex + '&jtPageSize=' + jtPageSize); + }, + + /* Creates and shows the page list. + *************************************************************************/ + _createPagingList: function () { + if (this.options.pageSize <= 0) { + return; + } + + this._$pagingListArea.empty(); + if (this._totalRecordCount <= 0) { + return; + } + + var pageCount = this._calculatePageCount(); + + this._createFirstAndPreviousPageButtons(); + if (this.options.pageList == 'normal') { + this._createPageNumberButtons(this._calculatePageNumbers(pageCount)); + } + this._createLastAndNextPageButtons(pageCount); + this._bindClickEventsToPageNumberButtons(); + }, + + /* Creates and shows previous and first page links. + *************************************************************************/ + _createFirstAndPreviousPageButtons: function () { + var $first = $('') + .addClass('jtable-page-number-first') + .html('<<') + .data('pageNumber', 1) + .appendTo(this._$pagingListArea); + + var $previous = $('') + .addClass('jtable-page-number-previous') + .html('<') + .data('pageNumber', this._currentPageNo - 1) + .appendTo(this._$pagingListArea); + + this._jqueryuiThemeAddClass($first, 'ui-button ui-state-default', 'ui-state-hover'); + this._jqueryuiThemeAddClass($previous, 'ui-button ui-state-default', 'ui-state-hover'); + + if (this._currentPageNo <= 1) { + $first.addClass('jtable-page-number-disabled'); + $previous.addClass('jtable-page-number-disabled'); + this._jqueryuiThemeAddClass($first, 'ui-state-disabled'); + this._jqueryuiThemeAddClass($previous, 'ui-state-disabled'); + } + }, + + /* Creates and shows next and last page links. + *************************************************************************/ + _createLastAndNextPageButtons: function (pageCount) { + var $next = $('') + .addClass('jtable-page-number-next') + .html('>') + .data('pageNumber', this._currentPageNo + 1) + .appendTo(this._$pagingListArea); + var $last = $('') + .addClass('jtable-page-number-last') + .html('>>') + .data('pageNumber', pageCount) + .appendTo(this._$pagingListArea); + + this._jqueryuiThemeAddClass($next, 'ui-button ui-state-default', 'ui-state-hover'); + this._jqueryuiThemeAddClass($last, 'ui-button ui-state-default', 'ui-state-hover'); + + if (this._currentPageNo >= pageCount) { + $next.addClass('jtable-page-number-disabled'); + $last.addClass('jtable-page-number-disabled'); + this._jqueryuiThemeAddClass($next, 'ui-state-disabled'); + this._jqueryuiThemeAddClass($last, 'ui-state-disabled'); + } + }, + + /* Creates and shows page number links for given number array. + *************************************************************************/ + _createPageNumberButtons: function (pageNumbers) { + var previousNumber = 0; + for (var i = 0; i < pageNumbers.length; i++) { + //Create "..." between page numbers if needed + if ((pageNumbers[i] - previousNumber) > 1) { + $('') + .addClass('jtable-page-number-space') + .html('...') + .appendTo(this._$pagingListArea); + } + + this._createPageNumberButton(pageNumbers[i]); + previousNumber = pageNumbers[i]; + } + }, + + /* Creates a page number link and adds to paging area. + *************************************************************************/ + _createPageNumberButton: function (pageNumber) { + var $pageNumber = $('') + .addClass('jtable-page-number') + .html(pageNumber) + .data('pageNumber', pageNumber) + .appendTo(this._$pagingListArea); + + this._jqueryuiThemeAddClass($pageNumber, 'ui-button ui-state-default', 'ui-state-hover'); + + if (this._currentPageNo == pageNumber) { + $pageNumber.addClass('jtable-page-number-active jtable-page-number-disabled'); + this._jqueryuiThemeAddClass($pageNumber, 'ui-state-active'); + } + }, + + /* Calculates total page count according to page size and total record count. + *************************************************************************/ + _calculatePageCount: function () { + var pageCount = Math.floor(this._totalRecordCount / this.options.pageSize); + if (this._totalRecordCount % this.options.pageSize != 0) { + ++pageCount; + } + + return pageCount; + }, + + /* Calculates page numbers and returns an array of these numbers. + *************************************************************************/ + _calculatePageNumbers: function (pageCount) { + if (pageCount <= 4) { + //Show all pages + var pageNumbers = []; + for (var i = 1; i <= pageCount; ++i) { + pageNumbers.push(i); + } + + return pageNumbers; + } else { + //show first three, last three, current, previous and next page numbers + var shownPageNumbers = [1, 2, pageCount - 1, pageCount]; + var previousPageNo = this._normalizeNumber(this._currentPageNo - 1, 1, pageCount, 1); + var nextPageNo = this._normalizeNumber(this._currentPageNo + 1, 1, pageCount, 1); + + this._insertToArrayIfDoesNotExists(shownPageNumbers, previousPageNo); + this._insertToArrayIfDoesNotExists(shownPageNumbers, this._currentPageNo); + this._insertToArrayIfDoesNotExists(shownPageNumbers, nextPageNo); + + shownPageNumbers.sort(function (a, b) { return a - b; }); + return shownPageNumbers; + } + }, + + /* Creates and shows paging informations. + *************************************************************************/ + _createPagingInfo: function () { + if (this._totalRecordCount <= 0) { + this._$pageInfoSpan.empty(); + return; + } + + var startNo = (this._currentPageNo - 1) * this.options.pageSize + 1; + var endNo = this._currentPageNo * this.options.pageSize; + endNo = this._normalizeNumber(endNo, startNo, this._totalRecordCount, 0); + + if (endNo >= startNo) { + var pagingInfoMessage = this._formatString(this.options.messages.pagingInfo, startNo, endNo, this._totalRecordCount); + this._$pageInfoSpan.html(pagingInfoMessage); + } + }, + + /* Binds click events of all page links to change the page. + *************************************************************************/ + _bindClickEventsToPageNumberButtons: function () { + var self = this; + self._$pagingListArea + .find('.jtable-page-number,.jtable-page-number-previous,.jtable-page-number-next,.jtable-page-number-first,.jtable-page-number-last') + .not('.jtable-page-number-disabled') + .click(function (e) { + e.preventDefault(); + self._changePage($(this).data('pageNumber')); + }); + }, + + /* Changes current page to given value. + *************************************************************************/ + _changePage: function (pageNo) { + pageNo = this._normalizeNumber(pageNo, 1, this._calculatePageCount(), 1); + if (pageNo == this._currentPageNo) { + this._refreshGotoPageInput(); + return; + } + + this._currentPageNo = pageNo; + this._reloadTable(); + } + + }); + +})(jQuery); + + +/************************************************************************ +* SORTING extension for jTable * +*************************************************************************/ +(function ($) { + + //Reference to base object members + var base = { + _initializeFields: $.hik.jtable.prototype._initializeFields, + _normalizeFieldOptions: $.hik.jtable.prototype._normalizeFieldOptions, + _createHeaderCellForField: $.hik.jtable.prototype._createHeaderCellForField, + _createRecordLoadUrl: $.hik.jtable.prototype._createRecordLoadUrl, + _createJtParamsForLoading: $.hik.jtable.prototype._createJtParamsForLoading + }; + + //extension members + $.extend(true, $.hik.jtable.prototype, { + + /************************************************************************ + * DEFAULT OPTIONS / EVENTS * + *************************************************************************/ + options: { + sorting: false, + multiSorting: false, + defaultSorting: '' + }, + + /************************************************************************ + * PRIVATE FIELDS * + *************************************************************************/ + + _lastSorting: null, //Last sorting of the table + + /************************************************************************ + * OVERRIDED METHODS * + *************************************************************************/ + + /* Overrides base method to create sorting array. + *************************************************************************/ + _initializeFields: function () { + base._initializeFields.apply(this, arguments); + + this._lastSorting = []; + if (this.options.sorting) { + this._buildDefaultSortingArray(); + } + }, + + /* Overrides _normalizeFieldOptions method to normalize sorting option for fields. + *************************************************************************/ + _normalizeFieldOptions: function (fieldName, props) { + base._normalizeFieldOptions.apply(this, arguments); + props.sorting = (props.sorting != false); + }, + + /* Overrides _createHeaderCellForField to make columns sortable. + *************************************************************************/ + _createHeaderCellForField: function (fieldName, field) { + var $headerCell = base._createHeaderCellForField.apply(this, arguments); + if (this.options.sorting && field.sorting) { + this._makeColumnSortable($headerCell, fieldName); + } + + return $headerCell; + }, + + /* Overrides _createRecordLoadUrl to add sorting specific info to URL. + *************************************************************************/ + _createRecordLoadUrl: function () { + var loadUrl = base._createRecordLoadUrl.apply(this, arguments); + loadUrl = this._addSortingInfoToUrl(loadUrl); + return loadUrl; + }, + + /************************************************************************ + * PRIVATE METHODS * + *************************************************************************/ + + /* Builds the sorting array according to defaultSorting string + *************************************************************************/ + _buildDefaultSortingArray: function () { + var self = this; + + $.each(self.options.defaultSorting.split(","), function (orderIndex, orderValue) { + $.each(self.options.fields, function (fieldName, fieldProps) { + if (fieldProps.sorting) { + var colOffset = orderValue.indexOf(fieldName); + if (colOffset > -1) { + if (orderValue.toUpperCase().indexOf(' DESC', colOffset) > -1) { + self._lastSorting.push({ + fieldName: fieldName, + sortOrder: 'DESC' + }); + } else { + self._lastSorting.push({ + fieldName: fieldName, + sortOrder: 'ASC' + }); + } + } + } + }); + }); + }, + + /* Makes a column sortable. + *************************************************************************/ + _makeColumnSortable: function ($columnHeader, fieldName) { + var self = this; + + $columnHeader + .addClass('jtable-column-header-sortable') + .click(function (e) { + e.preventDefault(); + + if (!self.options.multiSorting || !e.ctrlKey) { + self._lastSorting = []; //clear previous sorting + } + + self._sortTableByColumn($columnHeader); + }); + + //Set default sorting + $.each(this._lastSorting, function (sortIndex, sortField) { + if (sortField.fieldName == fieldName) { + if (sortField.sortOrder == 'DESC') { + $columnHeader.addClass('jtable-column-header-sorted-desc'); + } else { + $columnHeader.addClass('jtable-column-header-sorted-asc'); + } + } + }); + }, + + /* Sorts table according to a column header. + *************************************************************************/ + _sortTableByColumn: function ($columnHeader) { + //Remove sorting styles from all columns except this one + if (this._lastSorting.length == 0) { + $columnHeader.siblings().removeClass('jtable-column-header-sorted-asc jtable-column-header-sorted-desc'); + } + + //If current sorting list includes this column, remove it from the list + for (var i = 0; i < this._lastSorting.length; i++) { + if (this._lastSorting[i].fieldName == $columnHeader.data('fieldName')) { + this._lastSorting.splice(i--, 1); + } + } + + //Sort ASC or DESC according to current sorting state + if ($columnHeader.hasClass('jtable-column-header-sorted-asc')) { + $columnHeader.removeClass('jtable-column-header-sorted-asc').addClass('jtable-column-header-sorted-desc'); + this._lastSorting.push({ + 'fieldName': $columnHeader.data('fieldName'), + sortOrder: 'DESC' + }); + } else { + $columnHeader.removeClass('jtable-column-header-sorted-desc').addClass('jtable-column-header-sorted-asc'); + this._lastSorting.push({ + 'fieldName': $columnHeader.data('fieldName'), + sortOrder: 'ASC' + }); + } + + //Load current page again + this._reloadTable(); + }, + + /* Adds jtSorting parameter to a URL as query string. + *************************************************************************/ + _addSortingInfoToUrl: function (url) { + if (!this.options.sorting || this._lastSorting.length == 0) { + return url; + } + + var sorting = []; + $.each(this._lastSorting, function (idx, value) { + sorting.push(value.fieldName + ' ' + value.sortOrder); + }); + + return (url + (url.indexOf('?') < 0 ? '?' : '&') + 'jtSorting=' + sorting.join(",")); + }, + + /* Overrides _createJtParamsForLoading method to add sorging parameters to jtParams object. + *************************************************************************/ + _createJtParamsForLoading: function () { + var jtParams = base._createJtParamsForLoading.apply(this, arguments); + + if (this.options.sorting && this._lastSorting.length) { + var sorting = []; + $.each(this._lastSorting, function (idx, value) { + sorting.push(value.fieldName + ' ' + value.sortOrder); + }); + + jtParams.jtSorting = sorting.join(","); + } + + return jtParams; + } + + }); + +})(jQuery); + +/************************************************************************ +* DYNAMIC COLUMNS extension for jTable * +* (Show/hide/resize columns) * +*************************************************************************/ +(function ($) { + + //Reference to base object members + var base = { + _create: $.hik.jtable.prototype._create, + _normalizeFieldOptions: $.hik.jtable.prototype._normalizeFieldOptions, + _createHeaderCellForField: $.hik.jtable.prototype._createHeaderCellForField, + _createCellForRecordField: $.hik.jtable.prototype._createCellForRecordField + }; + + //extension members + $.extend(true, $.hik.jtable.prototype, { + + /************************************************************************ + * DEFAULT OPTIONS / EVENTS * + *************************************************************************/ + + options: { + tableId: undefined, + columnResizable: true, + columnSelectable: true + }, + + /************************************************************************ + * PRIVATE FIELDS * + *************************************************************************/ + + _$columnSelectionDiv: null, + _$columnResizeBar: null, + _cookieKeyPrefix: null, + _currentResizeArgs: null, + + /************************************************************************ + * OVERRIDED METHODS * + *************************************************************************/ + + /* Overrides _addRowToTableHead method. + *************************************************************************/ + + _create: function () { + base._create.apply(this, arguments); + + this._createColumnResizeBar(); + this._createColumnSelection(); + + if (this.options.saveUserPreferences) { + this._loadColumnSettings(); + } + + this._normalizeColumnWidths(); + }, + + /* Normalizes some options for a field (sets default values). + *************************************************************************/ + _normalizeFieldOptions: function (fieldName, props) { + base._normalizeFieldOptions.apply(this, arguments); + + //columnResizable + if (this.options.columnResizable) { + props.columnResizable = (props.columnResizable != false); + } + + //visibility + if (!props.visibility) { + props.visibility = 'visible'; + } + }, + + /* Overrides _createHeaderCellForField to make columns dynamic. + *************************************************************************/ + _createHeaderCellForField: function (fieldName, field) { + var $headerCell = base._createHeaderCellForField.apply(this, arguments); + + //Make data columns resizable except the last one + if (this.options.columnResizable && field.columnResizable && (fieldName != this._columnList[this._columnList.length - 1])) { + this._makeColumnResizable($headerCell); + } + + //Hide column if needed + if (field.visibility == 'hidden') { + $headerCell.hide(); + } + + return $headerCell; + }, + + /* Overrides _createHeaderCellForField to decide show or hide a column. + *************************************************************************/ + _createCellForRecordField: function (record, fieldName) { + var $column = base._createCellForRecordField.apply(this, arguments); + + var field = this.options.fields[fieldName]; + if (field.visibility == 'hidden') { + $column.hide(); + } + + return $column; + }, + + /************************************************************************ + * PUBLIC METHODS * + *************************************************************************/ + + /* Changes visibility of a column. + *************************************************************************/ + changeColumnVisibility: function (columnName, visibility) { + this._changeColumnVisibilityInternal(columnName, visibility); + this._normalizeColumnWidths(); + if (this.options.saveUserPreferences) { + this._saveColumnSettings(); + } + }, + + /************************************************************************ + * PRIVATE METHODS * + *************************************************************************/ + + /* Changes visibility of a column. + *************************************************************************/ + _changeColumnVisibilityInternal: function (columnName, visibility) { + //Check if there is a column with given name + var columnIndex = this._columnList.indexOf(columnName); + if (columnIndex < 0) { + this._logWarn('Column "' + columnName + '" does not exist in fields!'); + return; + } + + //Check if visibility value is valid + if (['visible', 'hidden', 'fixed'].indexOf(visibility) < 0) { + this._logWarn('Visibility value is not valid: "' + visibility + '"! Options are: visible, hidden, fixed.'); + return; + } + + //Get the field + var field = this.options.fields[columnName]; + if (field.visibility == visibility) { + return; //No action if new value is same as old one. + } + + //Hide or show the column if needed + var columnIndexInTable = this._firstDataColumnOffset + columnIndex + 1; + if (field.visibility != 'hidden' && visibility == 'hidden') { + this._$table + .find('>thead >tr >th:nth-child(' + columnIndexInTable + '),>tbody >tr >td:nth-child(' + columnIndexInTable + ')') + .hide(); + } else if (field.visibility == 'hidden' && visibility != 'hidden') { + this._$table + .find('>thead >tr >th:nth-child(' + columnIndexInTable + '),>tbody >tr >td:nth-child(' + columnIndexInTable + ')') + .show() + .css('display', 'table-cell'); + } + + field.visibility = visibility; + }, + + /* Prepares dialog to change settings. + *************************************************************************/ + _createColumnSelection: function () { + var self = this; + + //Create a div for dialog and add to container element + this._$columnSelectionDiv = $('
    ') + .addClass('jtable-column-selection-container') + .appendTo(self._$mainContainer); + + this._$table.children('thead').bind('contextmenu', function (e) { + if (!self.options.columnSelectable) { + return; + } + + e.preventDefault(); + + //Make an overlay div to disable page clicks + $('
    ') + .addClass('jtable-contextmenu-overlay') + .click(function () { + $(this).remove(); + self._$columnSelectionDiv.hide(); + }) + .bind('contextmenu', function () { return false; }) + .appendTo(document.body); + + self._fillColumnSelection(); + + //Calculate position of column selection list and show it + + var containerOffset = self._$mainContainer.offset(); + var selectionDivTop = e.pageY - containerOffset.top; + var selectionDivLeft = e.pageX - containerOffset.left; + + var selectionDivMinWidth = 100; //in pixels + var containerWidth = self._$mainContainer.width(); + + //If user clicks right area of header of the table, show list at a little left + if ((containerWidth > selectionDivMinWidth) && (selectionDivLeft > (containerWidth - selectionDivMinWidth))) { + selectionDivLeft = containerWidth - selectionDivMinWidth; + } + + self._$columnSelectionDiv.css({ + left: selectionDivLeft, + top: selectionDivTop, + 'min-width': selectionDivMinWidth + 'px' + }).show(); + }); + }, + + /* Prepares content of settings dialog. + *************************************************************************/ + _fillColumnSelection: function () { + var self = this; + + var $columnsUl = $('
      ') + .addClass('jtable-column-select-list'); + for (var i = 0; i < this._columnList.length; i++) { + var columnName = this._columnList[i]; + var field = this.options.fields[columnName]; + + //Crete li element + var $columnLi = $('
    • ').appendTo($columnsUl); + + //Create label for the checkbox + var $label = $('') + .append($('' + (field.title || columnName) + '')) + .appendTo($columnLi); + + //Create checkbox + var $checkbox = $('') + .prependTo($label) + .click(function () { + var $clickedCheckbox = $(this); + var clickedColumnName = $clickedCheckbox.attr('name'); + var clickedField = self.options.fields[clickedColumnName]; + if (clickedField.visibility == 'fixed') { + return; + } + + self.changeColumnVisibility(clickedColumnName, $clickedCheckbox.is(':checked') ? 'visible' : 'hidden'); + }); + + //Check, if column if shown + if (field.visibility != 'hidden') { + $checkbox.attr('checked', 'checked'); + } + + //Disable, if column is fixed + if (field.visibility == 'fixed') { + $checkbox.attr('disabled', 'disabled'); + } + } + + this._$columnSelectionDiv.html($columnsUl); + }, + + /* creates a vertical bar that is shown while resizing columns. + *************************************************************************/ + _createColumnResizeBar: function () { + this._$columnResizeBar = $('
      ') + .addClass('jtable-column-resize-bar') + .appendTo(this._$mainContainer) + .hide(); + }, + + /* Makes a column sortable. + *************************************************************************/ + _makeColumnResizable: function ($columnHeader) { + var self = this; + + //Create a handler to handle mouse click event + $('
      ') + .addClass('jtable-column-resize-handler') + .appendTo($columnHeader.find('.jtable-column-header-container')) //Append the handler to the column + .mousedown(function (downevent) { //handle mousedown event for the handler + downevent.preventDefault(); + downevent.stopPropagation(); + + var mainContainerOffset = self._$mainContainer.offset(); + + //Get a reference to the next column + var $nextColumnHeader = $columnHeader.nextAll('th.jtable-column-header:visible:first'); + if (!$nextColumnHeader.length) { + return; + } + + //Store some information to be used on resizing + var minimumColumnWidth = 10; //A column's width can not be smaller than 10 pixel. + self._currentResizeArgs = { + currentColumnStartWidth: $columnHeader.outerWidth(), + minWidth: minimumColumnWidth, + maxWidth: $columnHeader.outerWidth() + $nextColumnHeader.outerWidth() - minimumColumnWidth, + mouseStartX: downevent.pageX, + minResizeX: function () { return this.mouseStartX - (this.currentColumnStartWidth - this.minWidth); }, + maxResizeX: function () { return this.mouseStartX + (this.maxWidth - this.currentColumnStartWidth); } + }; + + //Handle mouse move event to move resizing bar + var resizeonmousemove = function (moveevent) { + if (!self._currentResizeArgs) { + return; + } + + var resizeBarX = self._normalizeNumber(moveevent.pageX, self._currentResizeArgs.minResizeX(), self._currentResizeArgs.maxResizeX()); + self._$columnResizeBar.css('left', (resizeBarX - mainContainerOffset.left) + 'px'); + }; + + //Handle mouse up event to finish resizing of the column + var resizeonmouseup = function (upevent) { + if (!self._currentResizeArgs) { + return; + } + + $(document).unbind('mousemove', resizeonmousemove); + $(document).unbind('mouseup', resizeonmouseup); + + self._$columnResizeBar.hide(); + + //Calculate new widths in pixels + var mouseChangeX = upevent.pageX - self._currentResizeArgs.mouseStartX; + var currentColumnFinalWidth = self._normalizeNumber(self._currentResizeArgs.currentColumnStartWidth + mouseChangeX, self._currentResizeArgs.minWidth, self._currentResizeArgs.maxWidth); + var nextColumnFinalWidth = $nextColumnHeader.outerWidth() + (self._currentResizeArgs.currentColumnStartWidth - currentColumnFinalWidth); + + //Calculate widths as percent + var pixelToPercentRatio = $columnHeader.data('width-in-percent') / self._currentResizeArgs.currentColumnStartWidth; + $columnHeader.data('width-in-percent', currentColumnFinalWidth * pixelToPercentRatio); + $nextColumnHeader.data('width-in-percent', nextColumnFinalWidth * pixelToPercentRatio); + + //Set new widths to columns (resize!) + $columnHeader.css('width', $columnHeader.data('width-in-percent') + '%'); + $nextColumnHeader.css('width', $nextColumnHeader.data('width-in-percent') + '%'); + + //Normalize all column widths + self._normalizeColumnWidths(); + + //Finish resizing + self._currentResizeArgs = null; + + //Save current preferences + if (self.options.saveUserPreferences) { + self._saveColumnSettings(); + } + }; + + //Show vertical resize bar + self._$columnResizeBar + .show() + .css({ + top: ($columnHeader.offset().top - mainContainerOffset.top) + 'px', + left: (downevent.pageX - mainContainerOffset.left) + 'px', + height: (self._$table.outerHeight()) + 'px' + }); + + //Bind events + $(document).bind('mousemove', resizeonmousemove); + $(document).bind('mouseup', resizeonmouseup); + }); + }, + + /* Normalizes column widths as percent for current view. + *************************************************************************/ + _normalizeColumnWidths: function () { + + //Set command column width + var commandColumnHeaders = this._$table + .find('>thead th.jtable-command-column-header') + .data('width-in-percent', 1) + .css('width', '1%'); + + //Find data columns + var headerCells = this._$table.find('>thead th.jtable-column-header'); + + //Calculate total width of data columns + var totalWidthInPixel = 0; + headerCells.each(function () { + var $cell = $(this); + if ($cell.is(':visible')) { + totalWidthInPixel += $cell.outerWidth(); + } + }); + + //Calculate width of each column + var columnWidhts = {}; + var availableWidthInPercent = 100.0 - commandColumnHeaders.length; + headerCells.each(function () { + var $cell = $(this); + if ($cell.is(':visible')) { + var fieldName = $cell.data('fieldName'); + var widthInPercent = $cell.outerWidth() * availableWidthInPercent / totalWidthInPixel; + columnWidhts[fieldName] = widthInPercent; + } + }); + + //Set width of each column + headerCells.each(function () { + var $cell = $(this); + if ($cell.is(':visible')) { + var fieldName = $cell.data('fieldName'); + $cell.data('width-in-percent', columnWidhts[fieldName]).css('width', columnWidhts[fieldName] + '%'); + } + }); + }, + + /* Saves field setting to cookie. + * Saved setting will be a string like that: + * fieldName1=visible;23|fieldName2=hidden;17|... + *************************************************************************/ + _saveColumnSettings: function () { + var self = this; + var fieldSettings = ''; + this._$table.find('>thead >tr >th.jtable-column-header').each(function () { + var $cell = $(this); + var fieldName = $cell.data('fieldName'); + var columnWidth = $cell.data('width-in-percent'); + var fieldVisibility = self.options.fields[fieldName].visibility; + var fieldSetting = fieldName + "=" + fieldVisibility + ';' + columnWidth; + fieldSettings = fieldSettings + fieldSetting + '|'; + }); + + this._setCookie('column-settings', fieldSettings.substr(0, fieldSettings.length - 1)); + }, + + /* Loads field settings from cookie that is saved by _saveFieldSettings method. + *************************************************************************/ + _loadColumnSettings: function () { + var self = this; + var columnSettingsCookie = this._getCookie('column-settings'); + if (!columnSettingsCookie) { + return; + } + + var columnSettings = {}; + $.each(columnSettingsCookie.split('|'), function (inx, fieldSetting) { + var splitted = fieldSetting.split('='); + var fieldName = splitted[0]; + var settings = splitted[1].split(';'); + columnSettings[fieldName] = { + columnVisibility: settings[0], + columnWidth: settings[1] + }; + }); + + var headerCells = this._$table.find('>thead >tr >th.jtable-column-header'); + headerCells.each(function () { + var $cell = $(this); + var fieldName = $cell.data('fieldName'); + var field = self.options.fields[fieldName]; + if (columnSettings[fieldName]) { + if (field.visibility != 'fixed') { + self._changeColumnVisibilityInternal(fieldName, columnSettings[fieldName].columnVisibility); + } + + $cell.data('width-in-percent', columnSettings[fieldName].columnWidth).css('width', columnSettings[fieldName].columnWidth + '%'); + } + }); + } + + }); + +})(jQuery); + + +/************************************************************************ +* MASTER/CHILD tables extension for jTable * +*************************************************************************/ +(function ($) { + + //Reference to base object members + var base = { + _removeRowsFromTable: $.hik.jtable.prototype._removeRowsFromTable + }; + + //extension members + $.extend(true, $.hik.jtable.prototype, { + + /************************************************************************ + * DEFAULT OPTIONS / EVENTS * + *************************************************************************/ + options: { + openChildAsAccordion: false + }, + + /************************************************************************ + * PUBLIC METHODS * + *************************************************************************/ + + /* Creates and opens a new child table for given row. + *************************************************************************/ + openChildTable: function ($row, tableOptions, opened) { + var self = this; + + //Apply theming as same as parent table unless explicitily set + if (tableOptions.jqueryuiTheme == undefined) { + tableOptions.jqueryuiTheme = self.options.jqueryuiTheme; + } + + //Show close button as default + tableOptions.showCloseButton = (tableOptions.showCloseButton != false); + + //Close child table when close button is clicked (default behavior) + if (tableOptions.showCloseButton && !tableOptions.closeRequested) { + tableOptions.closeRequested = function () { + self.closeChildTable($row); + }; + } + + //If accordion style, close open child table (if it does exists) + if (self.options.openChildAsAccordion) { + $row.siblings('.jtable-data-row').each(function () { + self.closeChildTable($(this)); + }); + } + + //Close child table for this row and open new one for child table + self.closeChildTable($row, function () { + var $childRowColumn = self.getChildRow($row).children('td').empty(); + var $childTableContainer = $('
      ') + .addClass('jtable-child-table-container') + .appendTo($childRowColumn); + $childRowColumn.data('childTable', $childTableContainer); + $childTableContainer.jtable(tableOptions); + self.openChildRow($row); + $childTableContainer.hide().slideDown('fast', function () { + if (opened) { + opened({ + childTable: $childTableContainer + }); + } + }); + }); + }, + + /* Closes child table for given row. + *************************************************************************/ + closeChildTable: function ($row, closed) { + var self = this; + + var $childRowColumn = this.getChildRow($row).children('td'); + var $childTable = $childRowColumn.data('childTable'); + if (!$childTable) { + if (closed) { + closed(); + } + + return; + } + + $childRowColumn.data('childTable', null); + $childTable.slideUp('fast', function () { + $childTable.jtable('destroy'); + $childTable.remove(); + self.closeChildRow($row); + if (closed) { + closed(); + } + }); + }, + + /* Returns a boolean value indicates that if a child row is open for given row. + *************************************************************************/ + isChildRowOpen: function ($row) { + return (this.getChildRow($row).is(':visible')); + }, + + /* Gets child row for given row, opens it if it's closed (Creates if needed). + *************************************************************************/ + getChildRow: function ($row) { + return $row.data('childRow') || this._createChildRow($row); + }, + + /* Creates and opens child row for given row. + *************************************************************************/ + openChildRow: function ($row) { + var $childRow = this.getChildRow($row); + if (!$childRow.is(':visible')) { + $childRow.show(); + } + + return $childRow; + }, + + /* Closes child row if it's open. + *************************************************************************/ + closeChildRow: function ($row) { + var $childRow = this.getChildRow($row); + if ($childRow.is(':visible')) { + $childRow.hide(); + } + }, + + /************************************************************************ + * OVERRIDED METHODS * + *************************************************************************/ + + /* Overrides _removeRowsFromTable method to remove child rows of deleted rows. + *************************************************************************/ + _removeRowsFromTable: function ($rows, reason) { + //var self = this; + + if (reason == 'deleted') { + $rows.each(function () { + var $row = $(this); + var $childRow = $row.data('childRow'); + if ($childRow) { + //self.closeChildTable($row); //Removed since it causes "Uncaught Error: cannot call methods on jtable prior to initialization; attempted to call method 'destroy'" + $childRow.remove(); + } + }); + } + + base._removeRowsFromTable.apply(this, arguments); + }, + + /************************************************************************ + * PRIVATE METHODS * + *************************************************************************/ + + /* Creates a child row for a row, hides and returns it. + *************************************************************************/ + _createChildRow: function ($row) { + var totalColumnCount = this._$table.find('thead th').length; + var $childRow = $('') + .addClass('jtable-child-row') + .append(''); + $row.after($childRow); + $row.data('childRow', $childRow); + $childRow.hide(); + return $childRow; + } + + }); + +})(jQuery); + diff --git a/lib/jquery.jtable.min.js b/lib/jquery.jtable.min.js new file mode 100644 index 0000000..e010c83 --- /dev/null +++ b/lib/jquery.jtable.min.js @@ -0,0 +1,157 @@ +/* +jTable 2.4.0 +http://www.jtable.org +--------------------------------------------------------------------------- +Copyright (C) 2011-2014 by Halil İbrahim Kalkan (http://www.halilibrahimkalkan.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ +(function(c){var g;c(window).on("beforeunload",function(){g=!0});c(window).on("unload",function(){g=!1});c.widget("hik.jtable",{options:{actions:{},fields:{},animationsEnabled:!0,defaultDateFormat:"yy-mm-dd",dialogShowEffect:"fade",dialogHideEffect:"fade",showCloseButton:!1,loadingAnimationDelay:500,saveUserPreferences:!0,jqueryuiTheme:!1,unAuthorizedRequestRedirectUrl:null,ajaxSettings:{type:"POST",dataType:"json"},toolbar:{hoverAnimation:!0,hoverAnimationDuration:60,hoverAnimationEasing:void 0, +items:[]},closeRequested:function(a,b){},formCreated:function(a,b){},formSubmitting:function(a,b){},formClosed:function(a,b){},loadingRecords:function(a,b){},recordsLoaded:function(a,b){},rowInserted:function(a,b){},rowsRemoved:function(a,b){},messages:{serverCommunicationError:"An error occured while communicating to the server.",loadingMessage:"Loading records...",noDataAvailable:"No data available!",areYouSure:"Are you sure?",save:"Save",saving:"Saving",cancel:"Cancel",error:"Error",close:"Close", +cannotLoadOptionsFor:"Can not load options for field {0}"}},_$mainContainer:null,_$titleDiv:null,_$toolbarDiv:null,_$table:null,_$tableBody:null,_$tableRows:null,_$busyDiv:null,_$busyMessageDiv:null,_$errorDialogDiv:null,_columnList:null,_fieldList:null,_keyField:null,_firstDataColumnOffset:0,_lastPostData:null,_cache:null,_create:function(){this._normalizeFieldsOptions();this._initializeFields();this._createFieldAndColumnList();this._createMainContainer();this._createTableTitle();this._createToolBar(); +this._createTable();this._createBusyPanel();this._createErrorDialogDiv();this._addNoDataRow();this._cookieKeyPrefix=this._generateCookieKeyPrefix()},_normalizeFieldsOptions:function(){var a=this;c.each(a.options.fields,function(b,d){a._normalizeFieldOptions(b,d)})},_normalizeFieldOptions:function(a,b){void 0==b.listClass&&(b.listClass="");void 0==b.inputClass&&(b.inputClass="");if(b.dependsOn&&"string"===c.type(b.dependsOn)){var d=b.dependsOn.split(",");b.dependsOn=[];for(var f=0;f").addClass("jtable-main-container").appendTo(this.element);this._jqueryuiThemeAddClass(this._$mainContainer,"ui-widget")}, +_createTableTitle:function(){var a=this;if(a.options.title){var b=c("
      ").addClass("jtable-title").appendTo(a._$mainContainer);a._jqueryuiThemeAddClass(b,"ui-widget-header");c("
      ").addClass("jtable-title-text").appendTo(b).append(a.options.title);if(a.options.showCloseButton){var d=c("").html(a.options.messages.close);c("").addClass("jtable-command-button jtable-close-button").attr("title",a.options.messages.close).append(d).appendTo(b).click(function(d){d.preventDefault(); +d.stopPropagation();a._onCloseRequested()})}a._$titleDiv=b}},_createTable:function(){this._$table=c("
      ").addClass("jtable").appendTo(this._$mainContainer);this.options.tableId&&this._$table.attr("id",this.options.tableId);this._jqueryuiThemeAddClass(this._$table,"ui-widget-content");this._createTableHead();this._createTableBody()},_createTableHead:function(){var a=c("").appendTo(this._$table);this._addRowToTableHead(a)},_addRowToTableHead:function(a){a=c("").appendTo(a); +this._addColumnsToHeaderRow(a)},_addColumnsToHeaderRow:function(a){for(var b=0;b").addClass("jtable-column-header-text").html(b.title),d=c("
      ").addClass("jtable-column-header-container").append(d),d=c("").addClass("jtable-column-header").addClass(b.listClass).css("width",b.width).data("fieldName", +a).append(d);this._jqueryuiThemeAddClass(d,"ui-state-default");return d},_createEmptyCommandHeader:function(){var a=c("").addClass("jtable-command-column-header").css("width","1%");this._jqueryuiThemeAddClass(a,"ui-state-default");return a},_createTableBody:function(){this._$tableBody=c("").appendTo(this._$table)},_createBusyPanel:function(){this._$busyMessageDiv=c("
      ").addClass("jtable-busy-message").prependTo(this._$mainContainer);this._$busyDiv=c("
      ").addClass("jtable-busy-panel-background").prependTo(this._$mainContainer); +this._jqueryuiThemeAddClass(this._$busyMessageDiv,"ui-widget-header");this._hideBusy()},_createErrorDialogDiv:function(){var a=this;a._$errorDialogDiv=c("
      ").appendTo(a._$mainContainer);a._$errorDialogDiv.dialog({autoOpen:!1,show:a.options.dialogShowEffect,hide:a.options.dialogHideEffect,modal:!0,title:a.options.messages.error,buttons:[{text:a.options.messages.close,click:function(){a._$errorDialogDiv.dialog("close")}}]})},load:function(a,b){this._lastPostData=a;this._reloadTable(b)},reload:function(a){this._reloadTable(a)}, +getRowByKey:function(a){for(var b=0;b").addClass("jtable-data-row").attr("data-record-key",this._getKeyValueOfRecord(a)).data("record",a);this._addCellsToRowUsingRecord(a);return a},_addCellsToRowUsingRecord:function(a){for(var b=a.data("record"),d=0;d").addClass(this.options.fields[b].listClass).append(this._getDisplayTextForRecordField(a,b))},_addRecordsToTable:function(a){var b=this;c.each(a,function(a,f){b._addRow(b._createRowFromRecord(f))});b._refreshRowStyles()},_addRowToTable:function(a,b,d,f){b={index:this._normalizeNumber(b,0,this._$tableRows.length,this._$tableRows.length)};!0==d&&(b.isNewRow=!0);!1==f&&(b.animationsEnabled=!1);this._addRow(a,b)},_addRow:function(a,b){b=c.extend({index:this._$tableRows.length,isNewRow:!1, +animationsEnabled:!0},b);0>=this._$tableRows.length&&this._removeNoDataRow();b.index=this._normalizeNumber(b.index,0,this._$tableRows.length,this._$tableRows.length);b.index==this._$tableRows.length?(this._$tableBody.append(a),this._$tableRows.push(a)):0==b.index?(this._$tableBody.prepend(a),this._$tableRows.unshift(a)):(this._$tableRows[b.index-1].after(a),this._$tableRows.splice(b.index,0,a));this._onRowInserted(a,b.isNewRow);b.isNewRow&&(this._refreshRowStyles(),this.options.animationsEnabled&& +b.animationsEnabled&&this._showNewRowAnimation(a))},_showNewRowAnimation:function(a){var b="jtable-row-created";this.options.jqueryuiTheme&&(b+=" ui-state-highlight");a.addClass(b,"slow","",function(){a.removeClass(b,5E3)})},_removeRowsFromTable:function(a,b){var d=this;0>=a.length||(a.addClass("jtable-row-removed").remove(),a.each(function(){var a=d._findRowIndex(c(this));0<=a&&d._$tableRows.splice(a,1)}),d._onRowsRemoved(a,b),0==d._$tableRows.length&&d._addNoDataRow(),d._refreshRowStyles())},_findRowIndex:function(a){return this._findIndexInArray(a, +this._$tableRows,function(a,d){return a.data("record")==d.data("record")})},_removeAllRows:function(a){if(!(0>=this._$tableRows.length)){var b=this._$tableBody.find("tr.jtable-data-row");this._$tableBody.empty();this._$tableRows=[];this._onRowsRemoved(b,a);this._addNoDataRow()}},_addNoDataRow:function(){if(!(0tr.jtable-no-data-row").length)){var a=c("").addClass("jtable-no-data-row").appendTo(this._$tableBody),b=this._$table.find("thead th").length;c("").attr("colspan", +b).html(this.options.messages.noDataAvailable).appendTo(a)}},_removeNoDataRow:function(){this._$tableBody.find(".jtable-no-data-row").remove()},_refreshRowStyles:function(){for(var a=0;a").addClass("jtable-toolbar").appendTo(this._$titleDiv);for(var a=0;a").addClass("jtable-toolbar-item").appendTo(this._$toolbarDiv);this._jqueryuiThemeAddClass(b,"ui-widget ui-state-default ui-corner-all","ui-state-hover");a.cssClass&&b.addClass(a.cssClass);a.tooltip&&b.attr("title",a.tooltip);if(a.icon){var d=c('').appendTo(b);!0!==a.icon&&c.type("string"===a.icon)&&d.css("background",'url("'+a.icon+'")')}a.text&&c('').html(a.text).addClass("jtable-toolbar-item-text").appendTo(b); +a.click&&b.click(function(){a.click()});var f=void 0,e=void 0;this.options.toolbar.hoverAnimation&&(f=this.options.toolbar.hoverAnimationDuration,e=this.options.toolbar.hoverAnimationEasing);b.hover(function(){b.addClass("jtable-toolbar-item-hover",f,e)},function(){b.removeClass("jtable-toolbar-item-hover",f,e)});return b},_showError:function(a){this._$errorDialogDiv.html(a).dialog("open")},_setBusyTimer:null,_showBusy:function(a,b){var d=this;d._$busyDiv.width(d._$mainContainer.width()).height(d._$mainContainer.height()).addClass("jtable-busy-panel-background-invisible").show(); +var f=function(){d._$busyDiv.removeClass("jtable-busy-panel-background-invisible");d._$busyMessageDiv.html(a).show()};b?d._setBusyTimer||(d._setBusyTimer=setTimeout(f,b)):f()},_hideBusy:function(){clearTimeout(this._setBusyTimer);this._setBusyTimer=null;this._$busyDiv.hide();this._$busyMessageDiv.html("").hide()},_isBusy:function(){return this._$busyMessageDiv.is(":visible")},_jqueryuiThemeAddClass:function(a,b,d){this.options.jqueryuiTheme&&(a.addClass(b),d&&a.hover(function(){a.addClass(d)},function(){a.removeClass(d)}))}, +_performAjaxCall:function(a,b,d,f,e){this._ajax({url:a,data:b,async:d,success:f,error:e})},_unAuthorizedRequestHandler:function(){this.options.unAuthorizedRequestRedirectUrl?location.href=this.options.unAuthorizedRequestRedirectUrl:location.reload(!0)},_ajax:function(a){var b=this,d={statusCode:{401:function(){b._unAuthorizedRequestHandler()}}},d=c.extend(d,this.options.ajaxSettings,a);d.success=function(d){d&&!0==d.UnAuthorizedRequest&&b._unAuthorizedRequestHandler();a.success&&a.success(d)};d.error= +function(d,b,h){g?d.abort():a.error&&a.error(arguments)};d.complete=function(){a.complete&&a.complete()};c.ajax(d)},_getKeyValueOfRecord:function(a){return a[this._keyField]},_setCookie:function(a,b){a=this._cookieKeyPrefix+a;var d=new Date;d.setDate(d.getDate()+30);document.cookie=encodeURIComponent(a)+"="+encodeURIComponent(b)+"; expires="+d.toUTCString()},_getCookie:function(a){a=this._cookieKeyPrefix+a;for(var b=document.cookie.split("; "),d=0;da.indexOf("."))return c[a];var b=a.substring(0,a.indexOf(".")),d=a.substring(a.indexOf(".")+1);return this._getPropertyOfObject(c[b],d)},_setPropertyOfObject:function(c,a,b){if(0>a.indexOf("."))c[a]=b;else{var d=a.substring(0,a.indexOf("."));a=a.substring(a.indexOf(".")+1);this._setPropertyOfObject(c[d],a,b)}},_insertToArrayIfDoesNotExists:function(g,a){0>c.inArray(a,g)&&g.push(a)},_findIndexInArray:function(c, +a,b){b||(b=function(a,d){return a==d});for(var d=0;db?b:c},_formatString:function(){if(0==arguments.length)return null;for(var c=arguments[0],a=1;ad?Math.ceil(d):Math.floor(d);for(0>d&&(d+=b);d").addClass("jtable-input-label").html(this.options.fields[g].inputTitle||this.options.fields[g].title)},_createInputForRecordField:function(g){var a=g.fieldName,b=g.value,d=g.record,f=g.formType;g=g.form;var e=this.options.fields[a];if(void 0==b||null==b)b=e.defaultValue;return e.input?(b=c(e.input({value:b, +record:d,formType:f,form:g})),b.attr("id")||b.attr("id","Edit-"+a),c("
      ").addClass("jtable-input jtable-custom-input").append(b)):"date"==e.type?this._createDateInputForField(e,a,b):"textarea"==e.type?this._createTextAreaForField(e,a,b):"password"==e.type?this._createPasswordInputForField(e,a,b):"checkbox"==e.type?this._createCheckboxForField(e,a,b):e.options?"radiobutton"==e.type?this._createRadioButtonListForField(e,a,b,d,f):this._createDropDownListForField(e,a,b,d,f,g):this._createTextInputForField(e, +a,b)},_createInputForHidden:function(g,a){void 0==a&&(a="");return c('').val(a)},_createDateInputForField:function(g,a,b){a=c('');void 0!=b&&a.val(b);a.datepicker({dateFormat:g.displayFormat||this.options.defaultDateFormat});return c("
      ").addClass("jtable-input jtable-date-input").append(a)},_createTextAreaForField:function(g,a,b){g=c('');void 0!=b&&g.val(b);return c("
      ").addClass("jtable-input jtable-textarea-input").append(g)},_createTextInputForField:function(g,a,b){g=c('');void 0!=b&&g.val(b);return c("
      ").addClass("jtable-input jtable-text-input").append(g)},_createPasswordInputForField:function(g,a,b){g=c('');void 0!=b&&g.val(b);return c("
      ").addClass("jtable-input jtable-password-input").append(g)},_createCheckboxForField:function(g,a,b){var d=this;void 0==b&&(b=d._getCheckBoxPropertiesForFieldByState(a,!1).Value);var f=c("
      ").addClass("jtable-input jtable-checkbox-input"),e=c('').appendTo(f);void 0!=b&&e.val(b);var h=c(""+(g.formText||d._getCheckBoxTextForFieldByValue(a,b))+"").appendTo(f); +d._getIsCheckBoxSelectedForFieldByValue(a,b)&&e.attr("checked","checked");var k=function(){var b=d._getCheckBoxPropertiesForFieldByState(a,e.is(":checked"));e.attr("value",b.Value);h.html(g.formText||b.DisplayText)};e.click(function(){k()});!1!=g.setOnTextClick&&h.addClass("jtable-option-text-clickable").click(function(){e.is(":checked")?e.attr("checked",!1):e.attr("checked",!0);k()});return f},_createDropDownListForField:function(g,a,b,d,f,e){var h=c("
      ").addClass("jtable-input jtable-dropdown-input"), +k=c('').appendTo(h);g=this._getOptionsForField(a,{record:d,source:f,form:e,dependedValues:this._createDependedValuesUsingForm(e,g.dependsOn)});this._fillDropDownListWithOptions(k,g,b);return h},_fillDropDownListWithOptions:function(g,a,b){g.empty();for(var d=0;d"+a[d].DisplayText+"").val(a[d].Value).appendTo(g)},_createDependedValuesUsingForm:function(c, +a){if(!a)return{};for(var b={},d=0;d=e.length||(b[f]=e.val())}return b},_createRadioButtonListForField:function(g,a,b,d,f){var e=c("
      ").addClass("jtable-input jtable-radiobuttonlist-input");d=this._getOptionsForField(a,{record:d,source:f});c.each(d,function(d,f){var l=c('
      ').addClass("jtable-radio-input").appendTo(e),m=c('").val(f.Value).appendTo(l),l=c("").html(f.DisplayText).appendTo(l);!1!=g.setOnTextClick&&l.addClass("jtable-option-text-clickable").click(function(){m.is(":checked")||m.attr("checked",!0)})});return e},_getCheckBoxTextForFieldByValue:function(c,a){return this.options.fields[c].values[a]},_getIsCheckBoxSelectedForFieldByValue:function(c,a){return this._createCheckBoxStateArrayForFieldWithCaching(c)[1].Value.toString()==a.toString()},_getCheckBoxPropertiesForFieldByState:function(c, +a){return this._createCheckBoxStateArrayForFieldWithCaching(c)[a?1:0]},_createCheckBoxStateArrayForFieldWithCaching:function(c){var a="checkbox_"+c;this._cache[a]||(this._cache[a]=this._createCheckBoxStateArrayForField(c));return this._cache[a]},_createCheckBoxStateArrayForField:function(g){var a=[],b=0;c.each(this.options.fields[g].values,function(d,f){2>b++&&a.push({Value:d,DisplayText:f})});return a},_makeCascadeDropDowns:function(g,a,b){var d=this;g.find("select").each(function(){var f=c(this), +e=f.attr("name");if(e){var h=d.options.fields[e];h.dependsOn&&c.each(h.dependsOn,function(c,l){g.find("select[name="+l+"]").change(function(){var c={record:a,source:b,form:g,dependedValues:{}};c.dependedValues=d._createDependedValuesUsingForm(g,h.dependsOn);c=d._getOptionsForField(e,c);d._fillDropDownListWithOptions(f,c,void 0);f.change()})})}})},_updateRecordValuesFromForm:function(g,a){for(var b=0;b=e.length))if("date"==f.type)if(e=e.val()){f=f.displayFormat||this.options.defaultDateFormat;try{var h=c.datepicker.parseDate(f,e);g[d]="/Date("+h.getTime()+")/"}catch(k){this._logWarn("Date format is incorrect for field "+d+": "+e),g[d]=void 0}}else this._logDebug("Date is empty for "+d),g[d]=void 0;else f.options&&"radiobutton"==f.type?(f=e.filter(":checked"),g[d]=f.length?f.val():void 0):g[d]=e.val()}}},_setEnabledOfDialogButton:function(c,a,b){c&&(!1!=a?c.removeAttr("disabled").removeClass("ui-state-disabled"): +c.attr("disabled","disabled").addClass("ui-state-disabled"),b&&c.find("span").text(b))}})})(jQuery); +(function(c){var g=c.hik.jtable.prototype._create;c.extend(!0,c.hik.jtable.prototype,{options:{recordAdded:function(a,b){},messages:{addNewRecord:"Add new record"}},_$addRecordDiv:null,_create:function(){g.apply(this,arguments);this.options.actions.createAction&&this._createAddRecordDialogDiv()},_createAddRecordDialogDiv:function(){var a=this;a._$addRecordDiv=c("
      ").appendTo(a._$mainContainer);a._$addRecordDiv.dialog({autoOpen:!1,show:a.options.dialogShowEffect,hide:a.options.dialogHideEffect, +width:"auto",minWidth:"300",modal:!0,title:a.options.messages.addNewRecord,buttons:[{text:a.options.messages.cancel,click:function(){a._$addRecordDiv.dialog("close")}},{id:"AddRecordDialogSaveButton",text:a.options.messages.save,click:function(){a._onSaveClickedOnCreateForm()}}],close:function(){var b=a._$addRecordDiv.find("form").first(),d=a._$addRecordDiv.parent().find("#AddRecordDialogSaveButton");a._trigger("formClosed",null,{form:b,formType:"create"});a._setEnabledOfDialogButton(d,!0,a.options.messages.save); +b.remove()}});a.options.addRecordButton?a.options.addRecordButton.click(function(b){b.preventDefault();a._showAddRecordForm()}):a._addToolBarItem({icon:!0,cssClass:"jtable-toolbar-item-add-record",text:a.options.messages.addNewRecord,click:function(){a._showAddRecordForm()}})},_onSaveClickedOnCreateForm:function(){var a=this._$addRecordDiv.parent().find("#AddRecordDialogSaveButton"),b=this._$addRecordDiv.find("form");!1!=this._trigger("formSubmitting",null,{form:b,formType:"create"})&&(this._setEnabledOfDialogButton(a, +!1,this.options.messages.saving),this._saveAddRecordForm(b,a))},showCreateForm:function(){this._showAddRecordForm()},addRecord:function(a){var b=this;a=c.extend({clientOnly:!1,animationsEnabled:b.options.animationsEnabled,success:function(){},error:function(){}},a);if(a.record)if(a.clientOnly)b._addRow(b._createRowFromRecord(a.record),{isNewRow:!0,animationsEnabled:a.animationsEnabled}),a.success();else{var d=function(d){"OK"!=d.Result?(b._showError(d.Message),a.error(d)):d.Record?(b._onRecordAdded(d), +b._addRow(b._createRowFromRecord(d.Record),{isNewRow:!0,animationsEnabled:a.animationsEnabled}),a.success(d)):(b._logError("Server must return the created Record object."),a.error(d))};if(!a.url&&c.isFunction(b.options.actions.createAction)){var f=b.options.actions.createAction(c.param(a.record));b._isDeferredObject(f)?f.done(function(a){d(a)}).fail(function(){b._showError(b.options.messages.serverCommunicationError);a.error()}):d(f)}else b._submitFormUsingAjax(a.url||b.options.actions.createAction, +c.param(a.record),function(a){d(a)},function(){b._showError(b.options.messages.serverCommunicationError);a.error()})}else b._logWarn("options parameter in addRecord method must contain a record property.")},_showAddRecordForm:function(){for(var a=this,b=c('
      '),d=0;d").addClass("jtable-input-field-container").appendTo(b),e.append(a._createInputLabelForRecordField(f)),e.append(a._createInputForRecordField({fieldName:f,formType:"create",form:b}))))}a._makeCascadeDropDowns(b,void 0,"create");b.submit(function(){a._onSaveClickedOnCreateForm();return!1});a._$addRecordDiv.append(b).dialog("open");a._trigger("formCreated",null,{form:b,formType:"create"})},_saveAddRecordForm:function(a,b){var d=this,f=function(a){"OK"!=a.Result?(d._showError(a.Message), +d._setEnabledOfDialogButton(b,!0,d.options.messages.save)):a.Record?(d._onRecordAdded(a),d._addRow(d._createRowFromRecord(a.Record),{isNewRow:!0}),d._$addRecordDiv.dialog("close")):(d._logError("Server must return the created Record object."),d._setEnabledOfDialogButton(b,!0,d.options.messages.save))};a.data("submitting",!0);if(c.isFunction(d.options.actions.createAction)){var e=d.options.actions.createAction(a.serialize());d._isDeferredObject(e)?e.done(function(a){f(a)}).fail(function(){d._showError(d.options.messages.serverCommunicationError); +d._setEnabledOfDialogButton(b,!0,d.options.messages.save)}):f(e)}else d._submitFormUsingAjax(d.options.actions.createAction,a.serialize(),function(a){f(a)},function(){d._showError(d.options.messages.serverCommunicationError);d._setEnabledOfDialogButton(b,!0,d.options.messages.save)})},_onRecordAdded:function(a){this._trigger("recordAdded",null,{record:a.Record,serverResponse:a})}})})(jQuery); +(function(c){var g=c.hik.jtable.prototype._create,a=c.hik.jtable.prototype._addColumnsToHeaderRow,b=c.hik.jtable.prototype._addCellsToRowUsingRecord;c.extend(!0,c.hik.jtable.prototype,{options:{recordUpdated:function(a,b){},rowUpdated:function(a,b){},messages:{editRecord:"Edit Record"}},_$editDiv:null,_$editingRow:null,_create:function(){g.apply(this,arguments);this.options.actions.updateAction&&this._createEditDialogDiv()},_createEditDialogDiv:function(){var a=this;a._$editDiv=c("
      ").appendTo(a._$mainContainer); +a._$editDiv.dialog({autoOpen:!1,show:a.options.dialogShowEffect,hide:a.options.dialogHideEffect,width:"auto",minWidth:"300",modal:!0,title:a.options.messages.editRecord,buttons:[{text:a.options.messages.cancel,click:function(){a._$editDiv.dialog("close")}},{id:"EditDialogSaveButton",text:a.options.messages.save,click:function(){a._onSaveClickedOnEditForm()}}],close:function(){var b=a._$editDiv.find("form:first"),c=a._$editDiv.parent().find("#EditDialogSaveButton");a._trigger("formClosed",null,{form:b, +formType:"edit",row:a._$editingRow});a._setEnabledOfDialogButton(c,!0,a.options.messages.save);b.remove()}})},_onSaveClickedOnEditForm:function(){if(this._$editingRow.hasClass("jtable-row-removed"))this._$editDiv.dialog("close");else{var a=this._$editDiv.parent().find("#EditDialogSaveButton"),b=this._$editDiv.find("form");!1!=this._trigger("formSubmitting",null,{form:b,formType:"edit",row:this._$editingRow})&&(this._setEnabledOfDialogButton(a,!1,this.options.messages.saving),this._saveEditForm(b, +a))}},updateRecord:function(a){var b=this;a=c.extend({clientOnly:!1,animationsEnabled:b.options.animationsEnabled,success:function(){},error:function(){}},a);if(a.record){var e=b._getKeyValueOfRecord(a.record);if(void 0==e||null==e)b._logWarn("options parameter in updateRecord method must contain a record that contains the key field property.");else{var h=b.getRowByKey(e);if(null==h)b._logWarn('Can not found any row by key "'+e+'" on the table. Updating row must be visible on the table.');else if(a.clientOnly)c.extend(h.data("record"), +a.record),b._updateRowTexts(h),b._onRecordUpdated(h,null),a.animationsEnabled&&b._showUpdateAnimationForRow(h),a.success();else{var k=function(e){"OK"!=e.Result?(b._showError(e.Message),a.error(e)):(c.extend(h.data("record"),a.record),b._updateRecordValuesFromServerResponse(h.data("record"),e),b._updateRowTexts(h),b._onRecordUpdated(h,e),a.animationsEnabled&&b._showUpdateAnimationForRow(h),a.success(e))};!a.url&&c.isFunction(b.options.actions.updateAction)?(e=b.options.actions.updateAction(c.param(a.record)), +b._isDeferredObject(e)?e.done(function(a){k(a)}).fail(function(){b._showError(b.options.messages.serverCommunicationError);a.error()}):k(e)):b._submitFormUsingAjax(a.url||b.options.actions.updateAction,c.param(a.record),function(a){k(a)},function(){b._showError(b.options.messages.serverCommunicationError);a.error()})}}}else b._logWarn("options parameter in updateRecord method must contain a record property.")},_addColumnsToHeaderRow:function(d){a.apply(this,arguments);void 0!=this.options.actions.updateAction&& +d.append(this._createEmptyCommandHeader())},_addCellsToRowUsingRecord:function(a){var f=this;b.apply(this,arguments);if(void 0!=f.options.actions.updateAction){var e=c("").html(f.options.messages.editRecord),e=c('').addClass("jtable-command-button jtable-edit-command-button").append(e).click(function(b){b.preventDefault();b.stopPropagation();f._showEditForm(a)});c("").addClass("jtable-command-column").append(e).appendTo(a)}}, +_showEditForm:function(a){for(var b=this,e=a.data("record"),h=c('
      '),k=0;k
      ').appendTo(h),m.append(b._createInputLabelForRecordField(l)), +n=b._getValueForRecordField(e,l),m.append(b._createInputForRecordField({fieldName:l,value:n,record:e,formType:"edit",form:h}))))}b._makeCascadeDropDowns(h,e,"edit");h.submit(function(){b._onSaveClickedOnEditForm();return!1});b._$editingRow=a;b._$editDiv.append(h).dialog("open");b._trigger("formCreated",null,{form:h,formType:"edit",record:e,row:a})},_saveEditForm:function(a,b){var e=this,h=function(c){if("OK"!=c.Result)e._showError(c.Message),e._setEnabledOfDialogButton(b,!0,e.options.messages.save); +else{var h=e._$editingRow.data("record");e._updateRecordValuesFromForm(h,a);e._updateRecordValuesFromServerResponse(h,c);e._updateRowTexts(e._$editingRow);e._$editingRow.attr("data-record-key",e._getKeyValueOfRecord(h));e._onRecordUpdated(e._$editingRow,c);e.options.animationsEnabled&&e._showUpdateAnimationForRow(e._$editingRow);e._$editDiv.dialog("close")}};if(c.isFunction(e.options.actions.updateAction)){var k=e.options.actions.updateAction(a.serialize());e._isDeferredObject(k)?k.done(function(a){h(a)}).fail(function(){e._showError(e.options.messages.serverCommunicationError); +e._setEnabledOfDialogButton(b,!0,e.options.messages.save)}):h(k)}else e._submitFormUsingAjax(e.options.actions.updateAction,a.serialize(),function(a){h(a)},function(){e._showError(e.options.messages.serverCommunicationError);e._setEnabledOfDialogButton(b,!0,e.options.messages.save)})},_updateRecordValuesFromServerResponse:function(a,b){b&&b.Record&&c.extend(!0,a,b.Record)},_getValueForRecordField:function(a,b){var c=this.options.fields[b],h=a[b];return"date"==c.type?this._getDisplayTextForDateRecordField(c, +h):h},_updateRowTexts:function(a){for(var b=a.data("record"),c=a.find("td"),h=0;h

      ').appendTo(a._$mainContainer),a._$deleteRecordDiv.dialog({autoOpen:!1,show:a.options.dialogShowEffect,hide:a.options.dialogHideEffect,modal:!0,title:a.options.messages.areYouSure, +buttons:[{text:a.options.messages.cancel,click:function(){a._$deleteRecordDiv.dialog("close")}},{id:"DeleteDialogButton",text:a.options.messages.deleteText,click:function(){if(a._$deletingRow.hasClass("jtable-row-removed"))a._$deleteRecordDiv.dialog("close");else{var b=a._$deleteRecordDiv.parent().find("#DeleteDialogButton");a._setEnabledOfDialogButton(b,!1,a.options.messages.deleting);a._deleteRecordFromServer(a._$deletingRow,function(){a._removeRowsFromTableWithAnimation(a._$deletingRow);a._$deleteRecordDiv.dialog("close")}, +function(c){a._showError(c);a._setEnabledOfDialogButton(b,!0,a.options.messages.deleteText)})}}}],close:function(){var b=a._$deleteRecordDiv.parent().find("#DeleteDialogButton");a._setEnabledOfDialogButton(b,!0,a.options.messages.deleteText)}}))},deleteRows:function(a){var b=this;if(0>=a.length)b._logWarn("No rows specified to jTable deleteRows method.");else if(b._isBusy())b._logWarn("Can not delete rows since jTable is busy!");else if(1==a.length)b._deleteRecordFromServer(a,function(){b._removeRowsFromTableWithAnimation(a)}, +function(a){b._showError(a)});else{b._showBusy(b._formatString(b.options.messages.deleteProggress,0,a.length));var e=0,h=function(){var c=a.filter(".jtable-row-ready-to-remove");c.length=a.length&&h()},function(){++e;e>=a.length&&h()})})}},deleteRecord:function(a){var b=this;a=c.extend({clientOnly:!1,animationsEnabled:b.options.animationsEnabled,url:b.options.actions.deleteAction,success:function(){},error:function(){}},a);if(void 0==a.key)b._logWarn("options parameter in deleteRecord method must contain a key property.");else{var e=b.getRowByKey(a.key);null==e?b._logWarn("Can not found any row by key: "+a.key):a.clientOnly?(b._removeRowsFromTableWithAnimation(e,a.animationsEnabled), +a.success()):b._deleteRecordFromServer(e,function(c){b._removeRowsFromTableWithAnimation(e,a.animationsEnabled);a.success(c)},function(c){b._showError(c);a.error(c)},a.url)}},_addColumnsToHeaderRow:function(b){a.apply(this,arguments);void 0!=this.options.actions.deleteAction&&b.append(this._createEmptyCommandHeader())},_addCellsToRowUsingRecord:function(a){b.apply(this,arguments);var f=this;if(void 0!=f.options.actions.deleteAction){var e=c("").html(f.options.messages.deleteText),e=c('').addClass("jtable-command-button jtable-delete-command-button").append(e).click(function(b){b.preventDefault();b.stopPropagation();f._deleteButtonClickedForRow(a)});c("").addClass("jtable-command-column").append(e).appendTo(a)}},_deleteButtonClickedForRow:function(a){var b=this,e,h=b.options.messages.deleteConfirmation;if(c.isFunction(b.options.deleteConfirmation)){e={row:a,record:a.data("record"),deleteConfirm:!0,deleteConfirmMessage:h,cancel:!1, +cancelMessage:null};b.options.deleteConfirmation(e);if(e.cancel){e.cancelMessage&&b._showError(e.cancelMessage);return}h=e.deleteConfirmMessage;e=e.deleteConfirm}else e=b.options.deleteConfirmation;!1!=e?(b._$deleteRecordDiv.find(".jtable-delete-confirm-message").html(h),b._showDeleteDialog(a)):b._deleteRecordFromServer(a,function(){b._removeRowsFromTableWithAnimation(a)},function(a){b._showError(a)})},_showDeleteDialog:function(a){this._$deletingRow=a;this._$deleteRecordDiv.dialog("open")},_deleteRecordFromServer:function(a, +b,e,h){var k=this,g=function(c){"OK"!=c.Result?(a.data("deleting",!1),e&&e(c.Message)):(k._trigger("recordDeleted",null,{record:a.data("record"),row:a,serverResponse:c}),b&&b(c))};if(!0!=a.data("deleting")){a.data("deleting",!0);var m={};m[k._keyField]=k._getKeyValueOfRecord(a.data("record"));!h&&c.isFunction(k.options.actions.deleteAction)?(h=k.options.actions.deleteAction(m),k._isDeferredObject(h)?h.done(function(a){g(a)}).fail(function(){a.data("deleting",!1);e&&e(k.options.messages.serverCommunicationError)}): +g(h)):this._ajax({url:h||k.options.actions.deleteAction,data:m,success:function(a){g(a)},error:function(){a.data("deleting",!1);e&&e(k.options.messages.serverCommunicationError)}})}},_removeRowsFromTableWithAnimation:function(a,b){var c=this;void 0==b&&(b=c.options.animationsEnabled);if(b){var h="jtable-row-deleting";this.options.jqueryuiTheme&&(h+=" ui-state-disabled");a.stop(!0,!0).addClass(h,"slow","").promise().done(function(){c._removeRowsFromTable(a,"deleted")})}else c._removeRowsFromTable(a, +"deleted")}})})(jQuery); +(function(c){var g=c.hik.jtable.prototype._create,a=c.hik.jtable.prototype._addColumnsToHeaderRow,b=c.hik.jtable.prototype._addCellsToRowUsingRecord,d=c.hik.jtable.prototype._onLoadingRecords,f=c.hik.jtable.prototype._onRecordsLoaded,e=c.hik.jtable.prototype._onRowsRemoved;c.extend(!0,c.hik.jtable.prototype,{options:{selecting:!1,multiselect:!1,selectingCheckboxes:!1,selectOnRowClick:!0,selectionChanged:function(a,b){}},_selectedRecordIdsBeforeLoad:null,_$selectAllCheckbox:null,_shiftKeyDown:!1,_create:function(){this.options.selecting&& +this.options.selectingCheckboxes&&(++this._firstDataColumnOffset,this._bindKeyboardEvents());g.apply(this,arguments)},_bindKeyboardEvents:function(){var a=this;c(document).keydown(function(b){switch(b.which){case 16:a._shiftKeyDown=!0}}).keyup(function(b){switch(b.which){case 16:a._shiftKeyDown=!1}})},selectedRows:function(){return this._getSelectedRows()},selectRows:function(a){this._selectRows(a);this._onSelectionChanged()},_addColumnsToHeaderRow:function(b){this.options.selecting&&this.options.selectingCheckboxes&& +(this.options.multiselect?b.append(this._createSelectAllHeader()):b.append(this._createEmptyCommandHeader()));a.apply(this,arguments)},_addCellsToRowUsingRecord:function(a){this.options.selecting&&this._makeRowSelectable(a);b.apply(this,arguments)},_onLoadingRecords:function(){this.options.selecting&&this._storeSelectionList();d.apply(this,arguments)},_onRecordsLoaded:function(){this.options.selecting&&this._restoreSelectionList();f.apply(this,arguments)},_onRowsRemoved:function(a,b){this.options.selecting&& +"reloading"!=b&&0').addClass("jtable-command-column-header jtable-column-header-selecting");this._jqueryuiThemeAddClass(b,"ui-state-default");var d=c("
      ").addClass("jtable-column-header-container").appendTo(b);a._$selectAllCheckbox=c('').appendTo(d).click(function(){if(0>=a._$tableRows.length)a._$selectAllCheckbox.attr("checked", +!1);else{var b=a._$tableBody.find(">tr.jtable-data-row");a._$selectAllCheckbox.is(":checked")?a._selectRows(b):a._deselectRows(b);a._onSelectionChanged()}});return b},_storeSelectionList:function(){var a=this;a.options.selecting&&(a._selectedRecordIdsBeforeLoad=[],a._getSelectedRows().each(function(){a._selectedRecordIdsBeforeLoad.push(a._getKeyValueOfRecord(c(this).data("record")))}))},_restoreSelectionList:function(){if(this.options.selecting){for(var a=0,b=0;btr.jtable-row-selected")},_makeRowSelectable:function(a){var b=this;b.options.selectOnRowClick&& +a.click(function(){b._invertRowSelection(a)});if(b.options.selectingCheckboxes){var d=c("").addClass("jtable-selecting-column"),e=c('').appendTo(d);b.options.selectOnRowClick||e.click(function(){b._invertRowSelection(a)});a.append(d)}},_invertRowSelection:function(a){if(a.hasClass("jtable-row-selected"))this._deselectRows(a);else if(this._shiftKeyDown){var b=this._findRowIndex(a),c=this._findFirstSelectedRowIndexBeforeIndex(b)+1;0b?this._selectRows(this._$tableBody.find("tr").slice(b,c+1)):this._selectRows(a))}else this._selectRows(a);this._onSelectionChanged()},_findFirstSelectedRowIndexBeforeIndex:function(a){for(a-=1;0<=a;--a)if(this._$tableRows[a].hasClass("jtable-row-selected"))return a;return-1},_findFirstSelectedRowIndexAfterIndex:function(a){for(a+=1;atd.jtable-selecting-column >input").prop("checked",!0);this._refreshSelectAllCheckboxState()},_deselectRows:function(a){a.removeClass("jtable-row-selected ui-state-highlight");this.options.selectingCheckboxes&&a.find(">td.jtable-selecting-column >input").prop("checked",!1);this._refreshSelectAllCheckboxState()},_refreshSelectAllCheckboxState:function(){if(this.options.selectingCheckboxes&& +this.options.multiselect){var a=this._$tableRows.length,b=this._getSelectedRows().length;0==b?(this._$selectAllCheckbox.prop("indeterminate",!1),this._$selectAllCheckbox.attr("checked",!1)):b==a?(this._$selectAllCheckbox.prop("indeterminate",!1),this._$selectAllCheckbox.attr("checked",!0)):(this._$selectAllCheckbox.attr("checked",!1),this._$selectAllCheckbox.prop("indeterminate",!0))}},_onSelectionChanged:function(){this._trigger("selectionChanged",null,{})}})})(jQuery); +(function(c){var g=c.hik.jtable.prototype.load,a=c.hik.jtable.prototype._create,b=c.hik.jtable.prototype._setOption,d=c.hik.jtable.prototype._createRecordLoadUrl,f=c.hik.jtable.prototype._createJtParamsForLoading,e=c.hik.jtable.prototype._addRowToTable,h=c.hik.jtable.prototype._addRow,k=c.hik.jtable.prototype._removeRowsFromTable,l=c.hik.jtable.prototype._onRecordsLoaded;c.extend(!0,c.hik.jtable.prototype,{options:{paging:!1,pageList:"normal",pageSize:10,pageSizes:[10,25,50,100,250,500],pageSizeChangeArea:!0, +gotoPageArea:"combobox",messages:{pagingInfo:"Showing {0}-{1} of {2}",pageSizeChangeLabel:"Row count",gotoPageLabel:"Go to page"}},_$bottomPanel:null,_$pagingListArea:null,_$pageSizeChangeArea:null,_$pageInfoSpan:null,_$gotoPageArea:null,_$gotoPageInput:null,_totalRecordCount:0,_currentPageNo:1,_create:function(){a.apply(this,arguments);this.options.paging&&(this._loadPagingSettings(),this._createBottomPanel(),this._createPageListArea(),this._createGotoPageInput(),this._createPageSizeSelection())}, +_loadPagingSettings:function(){if(this.options.saveUserPreferences){var a=this._getCookie("page-size");a&&(this.options.pageSize=this._normalizeNumber(a,1,1E6,this.options.pageSize))}},_createBottomPanel:function(){this._$bottomPanel=c("
      ").addClass("jtable-bottom-panel").insertAfter(this._$table);this._jqueryuiThemeAddClass(this._$bottomPanel,"ui-state-default");c("
      ").addClass("jtable-left-area").appendTo(this._$bottomPanel);c("
      ").addClass("jtable-right-area").appendTo(this._$bottomPanel)}, +_createPageListArea:function(){this._$pagingListArea=c("").addClass("jtable-page-list").appendTo(this._$bottomPanel.find(".jtable-left-area"));this._$pageInfoSpan=c("").addClass("jtable-page-info").appendTo(this._$bottomPanel.find(".jtable-right-area"))},_createPageSizeSelection:function(){var a=this;if(a.options.pageSizeChangeArea){0>a._findIndexInArray(a.options.pageSize,a.options.pageSizes)&&(a.options.pageSizes.push(parseInt(a.options.pageSize)),a.options.pageSizes.sort(function(a, +b){return a-b}));a._$pageSizeChangeArea=c("").addClass("jtable-page-size-change").appendTo(a._$bottomPanel.find(".jtable-left-area"));a._$pageSizeChangeArea.append(""+a.options.messages.pageSizeChangeLabel+": ");for(var b=c("").appendTo(a._$pageSizeChangeArea),d=0;d'+a.options.pageSizes[d]+"");b.val(a.options.pageSize);b.change(function(){a._changePageSize(parseInt(c(this).val()))})}}, +_createGotoPageInput:function(){var a=this;a.options.gotoPageArea&&"none"!=a.options.gotoPageArea&&(this._$gotoPageArea=c("").addClass("jtable-goto-page").appendTo(a._$bottomPanel.find(".jtable-left-area")),this._$gotoPageArea.append(""+a.options.messages.gotoPageLabel+": "),"combobox"==a.options.gotoPageArea?(a._$gotoPageInput=c("").appendTo(this._$gotoPageArea).data("pageCount",1).change(function(){a._changePage(parseInt(c(this).val()))}),a._$gotoPageInput.append('')): +a._$gotoPageInput=c('').appendTo(this._$gotoPageArea).keypress(function(b){13==b.which?(b.preventDefault(),a._changePage(parseInt(a._$gotoPageInput.val()))):43==b.which?(b.preventDefault(),a._changePage(parseInt(a._$gotoPageInput.val())+1)):45==b.which?(b.preventDefault(),a._changePage(parseInt(a._$gotoPageInput.val())-1)):47b.keyCode&&!1==b.shiftKey&&!1==b.altKey||8==b.keyCode||9==b.keyCode||b.preventDefault()}))},_refreshGotoPageInput:function(){if(this.options.gotoPageArea&& +"none"!=this.options.gotoPageArea){0>=this._totalRecordCount?this._$gotoPageArea.hide():this._$gotoPageArea.show();if("combobox"==this.options.gotoPageArea){var a=this._$gotoPageInput.data("pageCount"),b=this._calculatePageCount();if(a!=b){this._$gotoPageInput.empty();a=1;1E4'+c+"");this._$gotoPageInput.data("pageCount",b)}}this._$gotoPageInput.val(this._currentPageNo)}},load:function(){this._currentPageNo= +1;g.apply(this,arguments)},_setOption:function(a,c){b.apply(this,arguments);"pageSize"==a&&this._changePageSize(parseInt(c))},_changePageSize:function(a){if(a!=this.options.pageSize){this.options.pageSize=a;var b=this._calculatePageCount();this._currentPageNo>b&&(this._currentPageNo=b);0>=this._currentPageNo&&(this._currentPageNo=1);b=this._$bottomPanel.find(".jtable-page-size-change select");0=this._$tableRows.length&&1a.indexOf("?")?"?":"&")+"jtStartIndex="+c+"&jtPageSize="+d},_createPagingList:function(){if(!(0>=this.options.pageSize||(this._$pagingListArea.empty(),0>=this._totalRecordCount))){var a=this._calculatePageCount();this._createFirstAndPreviousPageButtons();"normal"==this.options.pageList&&this._createPageNumberButtons(this._calculatePageNumbers(a));this._createLastAndNextPageButtons(a); +this._bindClickEventsToPageNumberButtons()}},_createFirstAndPreviousPageButtons:function(){var a=c("").addClass("jtable-page-number-first").html("<<").data("pageNumber",1).appendTo(this._$pagingListArea),b=c("").addClass("jtable-page-number-previous").html("<").data("pageNumber",this._currentPageNo-1).appendTo(this._$pagingListArea);this._jqueryuiThemeAddClass(a,"ui-button ui-state-default","ui-state-hover");this._jqueryuiThemeAddClass(b,"ui-button ui-state-default", +"ui-state-hover");1>=this._currentPageNo&&(a.addClass("jtable-page-number-disabled"),b.addClass("jtable-page-number-disabled"),this._jqueryuiThemeAddClass(a,"ui-state-disabled"),this._jqueryuiThemeAddClass(b,"ui-state-disabled"))},_createLastAndNextPageButtons:function(a){var b=c("").addClass("jtable-page-number-next").html(">").data("pageNumber",this._currentPageNo+1).appendTo(this._$pagingListArea),d=c("").addClass("jtable-page-number-last").html(">>").data("pageNumber", +a).appendTo(this._$pagingListArea);this._jqueryuiThemeAddClass(b,"ui-button ui-state-default","ui-state-hover");this._jqueryuiThemeAddClass(d,"ui-button ui-state-default","ui-state-hover");this._currentPageNo>=a&&(b.addClass("jtable-page-number-disabled"),d.addClass("jtable-page-number-disabled"),this._jqueryuiThemeAddClass(b,"ui-state-disabled"),this._jqueryuiThemeAddClass(d,"ui-state-disabled"))},_createPageNumberButtons:function(a){for(var b=0,d=0;d").addClass("jtable-page-number-space").html("...").appendTo(this._$pagingListArea), +this._createPageNumberButton(a[d]),b=a[d]},_createPageNumberButton:function(a){var b=c("").addClass("jtable-page-number").html(a).data("pageNumber",a).appendTo(this._$pagingListArea);this._jqueryuiThemeAddClass(b,"ui-button ui-state-default","ui-state-hover");this._currentPageNo==a&&(b.addClass("jtable-page-number-active jtable-page-number-disabled"),this._jqueryuiThemeAddClass(b,"ui-state-active"))},_calculatePageCount:function(){var a=Math.floor(this._totalRecordCount/this.options.pageSize); +0!=this._totalRecordCount%this.options.pageSize&&++a;return a},_calculatePageNumbers:function(a){if(4>=a){for(var b=[],c=1;c<=a;++c)b.push(c);return b}b=[1,2,a-1,a];c=this._normalizeNumber(this._currentPageNo-1,1,a,1);a=this._normalizeNumber(this._currentPageNo+1,1,a,1);this._insertToArrayIfDoesNotExists(b,c);this._insertToArrayIfDoesNotExists(b,this._currentPageNo);this._insertToArrayIfDoesNotExists(b,a);b.sort(function(a,b){return a-b});return b},_createPagingInfo:function(){if(0>=this._totalRecordCount)this._$pageInfoSpan.empty(); +else{var a=(this._currentPageNo-1)*this.options.pageSize+1,b=this._currentPageNo*this.options.pageSize,b=this._normalizeNumber(b,a,this._totalRecordCount,0);b>=a&&(a=this._formatString(this.options.messages.pagingInfo,a,b,this._totalRecordCount),this._$pageInfoSpan.html(a))}},_bindClickEventsToPageNumberButtons:function(){var a=this;a._$pagingListArea.find(".jtable-page-number,.jtable-page-number-previous,.jtable-page-number-next,.jtable-page-number-first,.jtable-page-number-last").not(".jtable-page-number-disabled").click(function(b){b.preventDefault(); +a._changePage(c(this).data("pageNumber"))})},_changePage:function(a){a=this._normalizeNumber(a,1,this._calculatePageCount(),1);a==this._currentPageNo?this._refreshGotoPageInput():(this._currentPageNo=a,this._reloadTable())}})})(jQuery); +(function(c){var g=c.hik.jtable.prototype._initializeFields,a=c.hik.jtable.prototype._normalizeFieldOptions,b=c.hik.jtable.prototype._createHeaderCellForField,d=c.hik.jtable.prototype._createRecordLoadUrl,f=c.hik.jtable.prototype._createJtParamsForLoading;c.extend(!0,c.hik.jtable.prototype,{options:{sorting:!1,multiSorting:!1,defaultSorting:""},_lastSorting:null,_initializeFields:function(){g.apply(this,arguments);this._lastSorting=[];this.options.sorting&&this._buildDefaultSortingArray()},_normalizeFieldOptions:function(b, +c){a.apply(this,arguments);c.sorting=!1!=c.sorting},_createHeaderCellForField:function(a,c){var d=b.apply(this,arguments);this.options.sorting&&c.sorting&&this._makeColumnSortable(d,a);return d},_createRecordLoadUrl:function(){var a=d.apply(this,arguments);return a=this._addSortingInfoToUrl(a)},_buildDefaultSortingArray:function(){var a=this;c.each(a.options.defaultSorting.split(","),function(b,d){c.each(a.options.fields,function(b,c){if(c.sorting){var f=d.indexOf(b);-1a.indexOf("?")?"?":"&")+"jtSorting="+b.join(",")},_createJtParamsForLoading:function(){var a=f.apply(this,arguments);if(this.options.sorting&&this._lastSorting.length){var b=[];c.each(this._lastSorting,function(a, +c){b.push(c.fieldName+" "+c.sortOrder)});a.jtSorting=b.join(",")}return a}})})(jQuery); +(function(c){var g=c.hik.jtable.prototype._create,a=c.hik.jtable.prototype._normalizeFieldOptions,b=c.hik.jtable.prototype._createHeaderCellForField,d=c.hik.jtable.prototype._createCellForRecordField;c.extend(!0,c.hik.jtable.prototype,{options:{tableId:void 0,columnResizable:!0,columnSelectable:!0},_$columnSelectionDiv:null,_$columnResizeBar:null,_cookieKeyPrefix:null,_currentResizeArgs:null,_create:function(){g.apply(this,arguments);this._createColumnResizeBar();this._createColumnSelection();this.options.saveUserPreferences&& +this._loadColumnSettings();this._normalizeColumnWidths()},_normalizeFieldOptions:function(b,c){a.apply(this,arguments);this.options.columnResizable&&(c.columnResizable=!1!=c.columnResizable);c.visibility||(c.visibility="visible")},_createHeaderCellForField:function(a,c){var d=b.apply(this,arguments);this.options.columnResizable&&c.columnResizable&&a!=this._columnList[this._columnList.length-1]&&this._makeColumnResizable(d);"hidden"==c.visibility&&d.hide();return d},_createCellForRecordField:function(a, +b){var c=d.apply(this,arguments);"hidden"==this.options.fields[b].visibility&&c.hide();return c},changeColumnVisibility:function(a,b){this._changeColumnVisibilityInternal(a,b);this._normalizeColumnWidths();this.options.saveUserPreferences&&this._saveColumnSettings()},_changeColumnVisibilityInternal:function(a,b){var c=this._columnList.indexOf(a);if(0>c)this._logWarn('Column "'+a+'" does not exist in fields!');else if(0>["visible","hidden","fixed"].indexOf(b))this._logWarn('Visibility value is not valid: "'+ +b+'"! Options are: visible, hidden, fixed.');else{var d=this.options.fields[a];d.visibility!=b&&(c=this._firstDataColumnOffset+c+1,"hidden"!=d.visibility&&"hidden"==b?this._$table.find(">thead >tr >th:nth-child("+c+"),>tbody >tr >td:nth-child("+c+")").hide():"hidden"==d.visibility&&"hidden"!=b&&this._$table.find(">thead >tr >th:nth-child("+c+"),>tbody >tr >td:nth-child("+c+")").show().css("display","table-cell"),d.visibility=b)}},_createColumnSelection:function(){var a=this;this._$columnSelectionDiv= +c("
      ").addClass("jtable-column-selection-container").appendTo(a._$mainContainer);this._$table.children("thead").bind("contextmenu",function(b){if(a.options.columnSelectable){b.preventDefault();c("
      ").addClass("jtable-contextmenu-overlay").click(function(){c(this).remove();a._$columnSelectionDiv.hide()}).bind("contextmenu",function(){return!1}).appendTo(document.body);a._fillColumnSelection();var d=a._$mainContainer.offset(),g=b.pageY-d.top;b=b.pageX-d.left;d=a._$mainContainer.width(); +100d-100&&(b=d-100);a._$columnSelectionDiv.css({left:b,top:g,"min-width":"100px"}).show()}})},_fillColumnSelection:function(){for(var a=this,b=c("
        ").addClass("jtable-column-select-list"),d=0;d").appendTo(b),m=c('').append(c(""+(l.title||g)+"")).appendTo(m),g=c('').prependTo(m).click(function(){var b=c(this),d=b.attr("name"); +"fixed"!=a.options.fields[d].visibility&&a.changeColumnVisibility(d,b.is(":checked")?"visible":"hidden")});"hidden"!=l.visibility&&g.attr("checked","checked");"fixed"==l.visibility&&g.attr("disabled","disabled")}this._$columnSelectionDiv.html(b)},_createColumnResizeBar:function(){this._$columnResizeBar=c("
        ").addClass("jtable-column-resize-bar").appendTo(this._$mainContainer).hide()},_makeColumnResizable:function(a){var b=this;c("
        ").addClass("jtable-column-resize-handler").appendTo(a.find(".jtable-column-header-container")).mousedown(function(d){d.preventDefault(); +d.stopPropagation();var g=b._$mainContainer.offset(),l=a.nextAll("th.jtable-column-header:visible:first");if(l.length){b._currentResizeArgs={currentColumnStartWidth:a.outerWidth(),minWidth:10,maxWidth:a.outerWidth()+l.outerWidth()-10,mouseStartX:d.pageX,minResizeX:function(){return this.mouseStartX-(this.currentColumnStartWidth-this.minWidth)},maxResizeX:function(){return this.mouseStartX+(this.maxWidth-this.currentColumnStartWidth)}};var m=function(a){b._currentResizeArgs&&(a=b._normalizeNumber(a.pageX, +b._currentResizeArgs.minResizeX(),b._currentResizeArgs.maxResizeX()),b._$columnResizeBar.css("left",a-g.left+"px"))},n=function(d){if(b._currentResizeArgs){c(document).unbind("mousemove",m);c(document).unbind("mouseup",n);b._$columnResizeBar.hide();d=b._normalizeNumber(b._currentResizeArgs.currentColumnStartWidth+(d.pageX-b._currentResizeArgs.mouseStartX),b._currentResizeArgs.minWidth,b._currentResizeArgs.maxWidth);var g=l.outerWidth()+(b._currentResizeArgs.currentColumnStartWidth-d),h=a.data("width-in-percent")/ +b._currentResizeArgs.currentColumnStartWidth;a.data("width-in-percent",d*h);l.data("width-in-percent",g*h);a.css("width",a.data("width-in-percent")+"%");l.css("width",l.data("width-in-percent")+"%");b._normalizeColumnWidths();b._currentResizeArgs=null;b.options.saveUserPreferences&&b._saveColumnSettings()}};b._$columnResizeBar.show().css({top:a.offset().top-g.top+"px",left:d.pageX-g.left+"px",height:b._$table.outerHeight()+"px"});c(document).bind("mousemove",m);c(document).bind("mouseup",n)}})},_normalizeColumnWidths:function(){var a= +this._$table.find(">thead th.jtable-command-column-header").data("width-in-percent",1).css("width","1%"),b=this._$table.find(">thead th.jtable-column-header"),d=0;b.each(function(){var a=c(this);a.is(":visible")&&(d+=a.outerWidth())});var g={},l=100-a.length;b.each(function(){var a=c(this);if(a.is(":visible")){var b=a.data("fieldName"),a=a.outerWidth()*l/d;g[b]=a}});b.each(function(){var a=c(this);if(a.is(":visible")){var b=a.data("fieldName");a.data("width-in-percent",g[b]).css("width",g[b]+"%")}})}, +_saveColumnSettings:function(){var a=this,b="";this._$table.find(">thead >tr >th.jtable-column-header").each(function(){var d=c(this),g=d.data("fieldName"),d=d.data("width-in-percent");b=b+(g+"="+a.options.fields[g].visibility+";"+d)+"|"});this._setCookie("column-settings",b.substr(0,b.length-1))},_loadColumnSettings:function(){var a=this,b=this._getCookie("column-settings");if(b){var d={};c.each(b.split("|"),function(a,b){var c=b.split("="),e=c[0],c=c[1].split(";");d[e]={columnVisibility:c[0],columnWidth:c[1]}}); +this._$table.find(">thead >tr >th.jtable-column-header").each(function(){var b=c(this),e=b.data("fieldName"),g=a.options.fields[e];d[e]&&("fixed"!=g.visibility&&a._changeColumnVisibilityInternal(e,d[e].columnVisibility),b.data("width-in-percent",d[e].columnWidth).css("width",d[e].columnWidth+"%"))})}}})})(jQuery); +(function(c){var g=c.hik.jtable.prototype._removeRowsFromTable;c.extend(!0,c.hik.jtable.prototype,{options:{openChildAsAccordion:!1},openChildTable:function(a,b,d){var f=this;void 0==b.jqueryuiTheme&&(b.jqueryuiTheme=f.options.jqueryuiTheme);b.showCloseButton=!1!=b.showCloseButton;b.showCloseButton&&!b.closeRequested&&(b.closeRequested=function(){f.closeChildTable(a)});f.options.openChildAsAccordion&&a.siblings(".jtable-data-row").each(function(){f.closeChildTable(c(this))});f.closeChildTable(a,function(){var e= +f.getChildRow(a).children("td").empty(),g=c("
        ").addClass("jtable-child-table-container").appendTo(e);e.data("childTable",g);g.jtable(b);f.openChildRow(a);g.hide().slideDown("fast",function(){d&&d({childTable:g})})})},closeChildTable:function(a,b){var c=this,f=this.getChildRow(a).children("td"),e=f.data("childTable");e?(f.data("childTable",null),e.slideUp("fast",function(){e.jtable("destroy");e.remove();c.closeChildRow(a);b&&b()})):b&&b()},isChildRowOpen:function(a){return this.getChildRow(a).is(":visible")}, +getChildRow:function(a){return a.data("childRow")||this._createChildRow(a)},openChildRow:function(a){a=this.getChildRow(a);a.is(":visible")||a.show();return a},closeChildRow:function(a){a=this.getChildRow(a);a.is(":visible")&&a.hide()},_removeRowsFromTable:function(a,b){"deleted"==b&&a.each(function(){var a=c(this).data("childRow");a&&a.remove()});g.apply(this,arguments)},_createChildRow:function(a){var b=this._$table.find("thead th").length,b=c("").addClass("jtable-child-row").append('');a.after(b);a.data("childRow",b);b.hide();return b}})})(jQuery); \ No newline at end of file diff --git a/lib/localization/jquery.jtable.ar.js b/lib/localization/jquery.jtable.ar.js new file mode 100644 index 0000000..4e53256 --- /dev/null +++ b/lib/localization/jquery.jtable.ar.js @@ -0,0 +1,30 @@ +/* + jTable localization file for 'French' language. + Author: Guillaume Vernet +*/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: 'خطأ الإتصال بالخادم', + loadingMessage: 'تحميل البيانات ...', + noDataAvailable: 'لا توجد بيانات !', + addNewRecord: 'إضافة', + editRecord: 'تعديل', + areYouSure: 'هل انت متاكد؟', + deleteConfirmation: 'هل تريد حذف السجل فعلا؟', + save: 'حفظ', + saving: 'جاري الحفظ ...', + cancel: 'إلغاء', + deleteText: 'حذف', + deleting: 'جاري الحذف ...', + error: 'خطأ', + close: 'إغلاق', + cannotLoadOptionsFor: ' {0} تعذر تحميل البيانات من الحقل ', + pagingInfo: 'عرض {0} إلى {1} من {2}', + canNotDeletedRecords: 'لا يمكن حذف {0} من {1} سجل(سجلات) !', + deleteProggress: 'جاري حذف {0} من {1} سجل (سجلات) ...', + pageSizeChangeLabel: 'رقم السجل', + gotoPageLabel: 'اذهب إلى الصفحة' + }); + +})(jQuery); diff --git a/lib/localization/jquery.jtable.bd.js b/lib/localization/jquery.jtable.bd.js new file mode 100644 index 0000000..5c880d6 --- /dev/null +++ b/lib/localization/jquery.jtable.bd.js @@ -0,0 +1,30 @@ +/* + jTable localization file for 'Bengali' language. + Author: Abu Naim Mohammad Nazmul Huda +*/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: 'সার্ভারে যোগাযোগ ত্রুটি', + loadingMessage: 'বার্তা বোঝাই করা হচ্ছে', + noDataAvailable: 'কোন তথ্য পাওযা যাচ্ছে না', + addNewRecord: 'নতুন তথ্য যোগ করুন', + editRecord: 'তথ্য সম্পাদন/সংশোধন করুন', + areYouSure: 'আপনি কি নিশ্চিত?', + deleteConfirmation: 'মুছে ফেলা নিশ্চিতকরণ', + save: 'রক্ষা করা', + saving: 'রক্ষা করা হচ্ছে', + cancel: 'বাতিল করা', + deleteText: 'পাঠ মুছে দিন', + deleting: 'মুছে ফেলা হচ্ছে', + error: 'ভুল', + close: 'ঘনিষ্ঠ', + cannotLoadOptionsFor: 'বিকল্প বোঝাই করা যাবে না', + pagingInfo: 'পত্রাঙ্ক তথ্য', + canNotDeletedRecords: 'তথ্য মুছে ফেলা যাবে না', + deleteProggress: 'অগ্রগতি মুছে ফেলা', + pageSizeChangeLabel: 'পাতার আয়তন পরিবর্তন মোড়ক', + gotoPageLabel: 'পাতা মোড়কে যান' + }); + +})(jQuery); diff --git a/lib/localization/jquery.jtable.ca.js b/lib/localization/jquery.jtable.ca.js new file mode 100644 index 0000000..4e58119 --- /dev/null +++ b/lib/localization/jquery.jtable.ca.js @@ -0,0 +1,30 @@ +/* + jTable localization file for 'Catalan' language. + Author: Manel Zaera +*/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: 'Ha hagut un error en la comunicació amb el servidor.', + loadingMessage: 'Carregant registres...', + noDataAvailable: 'No hi ha dades disponibles', + addNewRecord: 'Crea un nou registre', + editRecord: 'Edita registre', + areYouSure: 'Esteu segur?', + deleteConfirmation: 'El registre s\'eliminarà. Esteu segur?', + save: 'Desa', + saving: 'Desant', + cancel: 'Cancel·a', + deleteText: 'Elimina', + deleting: 'Eliminant', + error: 'Error', + close: 'Tanca', + cannotLoadOptionsFor: 'No es poden carregar les opcions per al camp {0}', + pagingInfo: 'Visualitzant registres {0} a {1} de {2}', + canNotDeletedRecords: 'No es pot(den) eliminar registre(s) {0} de {1}', + deleteProggress: 'Eliminant {0} de {1} registres...', + pageSizeChangeLabel: 'Registres per pàgina', + gotoPageLabel: 'Ves a la pàgina' + }); + +})(jQuery); diff --git a/lib/localization/jquery.jtable.cz.js b/lib/localization/jquery.jtable.cz.js new file mode 100644 index 0000000..36403c7 --- /dev/null +++ b/lib/localization/jquery.jtable.cz.js @@ -0,0 +1,30 @@ +/* +jTable localization file for 'Czech' language. +Author: Jakub Stajner +*/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: 'Chyba připojení k serveru.', + loadingMessage: 'Načítám...', + noDataAvailable: 'Žádné záznamy', + addNewRecord: 'Přidat nový záznam', + editRecord: 'Upravit', + areYouSure: 'Jsi si jistý?', + deleteConfirmation: 'Opravdu smazat?', + save: 'Uložit', + saving: 'Ukládám...', + cancel: 'Zrušit', + deleteText: 'Smazat', + deleting: 'Mažu...', + error: 'Chyba', + close: 'Zavřít', + cannotLoadOptionsFor: 'Nastavení pro {0} nelze načíst', + pagingInfo: 'Zobrazeno {0} - {1} z {2}', + canNotDeletedRecords: '{0} z {1} záznamů nemohlo být odstraněno!', + deleteProggress: 'Odstraňuje se {0} z {1} ...', + pageSizeChangeLabel: 'Záznamů na stránku', + gotoPageLabel: 'Jdi na stránku' + }); + +})(jQuery); diff --git a/lib/localization/jquery.jtable.de.js b/lib/localization/jquery.jtable.de.js new file mode 100644 index 0000000..d089714 --- /dev/null +++ b/lib/localization/jquery.jtable.de.js @@ -0,0 +1,30 @@ +/* + jTable localization file for 'German' language. + Author: Max Grass +*/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: 'Bei der Verbindung mit dem Server ist ein Fehler aufgetreten.', + loadingMessage: 'Wird geladen...', + noDataAvailable: 'Keine Einträge', + addNewRecord: 'Neuen Eintrag hinzufügen', + editRecord: 'Bearbeiten', + areYouSure: 'Sicher?', + deleteConfirmation: 'Eintrag wirklich löschen?', + save: 'Speichern', + saving: 'Wird gespeichert...', + cancel: 'Abbrechen', + deleteText: 'Löschen', + deleting: 'Wird gelöscht...', + error: 'Fehler', + close: 'Schließen', + cannotLoadOptionsFor: 'Die Einstellungen für {0} konnten nicht geladen werden', + pagingInfo: '{0} - {1} von {2} wird angezeigt', + canNotDeletedRecords: '{0} von {1} Einträge konnten nicht gelöscht werden!', + deleteProggress: '{0} von {1} wird gelöscht...', + pageSizeChangeLabel: 'Anzahl der Einträge', + gotoPageLabel: 'Auf der Seite' + }); + +})(jQuery); diff --git a/lib/localization/jquery.jtable.el.js b/lib/localization/jquery.jtable.el.js new file mode 100644 index 0000000..4c1c4e1 --- /dev/null +++ b/lib/localization/jquery.jtable.el.js @@ -0,0 +1,29 @@ +/* + jTable localization file for 'Greek' language. + Author: Nouvakis Petros +*/ +(function ($) { + +$.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: 'Παρουσιάστηκε σφάλμα στην προσπάθεια σύνδεσης στο διακομιστή.', + loadingMessage: 'φορτώνονται οι εγγραφές...', + noDataAvailable: 'Δεν υπάρχουν δεδομένα', + addNewRecord: 'Νέα εγγραφή', + editRecord: 'Διόρθωση', + areYouSure: 'Είστε σίγουρος;', + deleteConfirmation: 'Η εγγραφή θα διαγραφεί. Να προχωρήσω;', + save: 'Αποθήκευση', + saving: 'αποθηκεύονται οι εγγραφές...', + cancel: 'Άκυρο', + deleteText: 'Διαγραφή', + deleting: 'Διαγράφονται εγγραφές...', + error: 'ΛΑΘΟΣ', + close: 'Κλείσιμο', + cannotLoadOptionsFor: 'Δεν είναι δυνατή η φόρτωση επιλογών για το πεδίο {0}', + pagingInfo: 'Εμφανίζονται {0} - {1} από {2}', + canNotDeletedRecords: 'Δεν είναι δυνατή η διαγραφή {0} από {1}', + deleteProggress: 'Διαγράφεται {0} από {1}...', + pageSizeChangeLabel: 'Εγγραφές ανά σελίδα', + gotoPageLabel: 'Πήγαινε στη σελίδα' +}); +})(jQuery); \ No newline at end of file diff --git a/lib/localization/jquery.jtable.es.js b/lib/localization/jquery.jtable.es.js new file mode 100644 index 0000000..258d27c --- /dev/null +++ b/lib/localization/jquery.jtable.es.js @@ -0,0 +1,30 @@ +/* + jTable localization file for 'Spanish' language. + Author: Guillermo Bisheimer +*/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: 'Ocurrió un error en la comunicación con el servidor.', + loadingMessage: 'Cargando registros...', + noDataAvailable: 'No hay datos disponibles!', + addNewRecord: 'Crear nuevo registro', + editRecord: 'Editar registro', + areYouSure: '¿Está seguro?', + deleteConfirmation: 'El registro será eliminado. ¿Está seguro?', + save: 'Guardar', + saving: 'Guardando', + cancel: 'Cancelar', + deleteText: 'Eliminar', + deleting: 'Eliminando', + error: 'Error', + close: 'Cerrar', + cannotLoadOptionsFor: 'No se pueden cargar las opciones para el campo {0}', + pagingInfo: 'Mostrando registros {0} a {1} de {2}', + canNotDeletedRecords: 'No se puede borrar registro(s) {0} de {1}!', + deleteProggress: 'Eliminando {0} de {1} registros, procesando...', + pageSizeChangeLabel: 'Registros por página', + gotoPageLabel: 'Ir a página' + }); + +})(jQuery); diff --git a/lib/localization/jquery.jtable.fa.js b/lib/localization/jquery.jtable.fa.js new file mode 100644 index 0000000..9184c28 --- /dev/null +++ b/lib/localization/jquery.jtable.fa.js @@ -0,0 +1,30 @@ +/* + jTable localization file for 'Persian (Farsi)' language. + Author: Ehsan Chavoshi +*/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: 'خطا در برقراری ارتباط با سرور!', + loadingMessage: 'بارگزاری اطلاعات ...', + noDataAvailable: 'هیچ داده ای موجود نیست!!', + addNewRecord: 'رکورد جدید', + editRecord: 'ویرایش', + areYouSure: 'آیا اطمینان دارید ؟', + deleteConfirmation: 'آیا از حذف این رکورد اطمینان دارید ؟', + save: 'ذخیره', + saving: 'در حال ذخیره', + cancel: 'انصراف', + deleteText: 'حذف', + deleting: 'در حال حذف', + error: 'خطا', + close: 'بستن', + cannotLoadOptionsFor: 'امکان بارگذاری انتخابها نیست برای فیلد {0}', + pagingInfo: 'نمایش {0}-{1} از {2}', + canNotDeletedRecords: 'نمیتوان {0} از {1} رکورد را حذف کرد!', + deleteProggress: 'حذف {0} از {1} رکورد,در حال پردازش ...', + pageSizeChangeLabel: 'تعداد خطوط', + gotoPageLabel: 'برو به صفحه', + }); + +})(jQuery); diff --git a/lib/localization/jquery.jtable.fr.js b/lib/localization/jquery.jtable.fr.js new file mode 100644 index 0000000..084f307 --- /dev/null +++ b/lib/localization/jquery.jtable.fr.js @@ -0,0 +1,30 @@ +/* + jTable localization file for 'French' language. + Author: Guillaume Vernet +*/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: 'Erreur de communication avec le serveur.', + loadingMessage: 'Chargement des données...', + noDataAvailable: 'Aucune donnée !', + addNewRecord: 'Ajouter', + editRecord: 'Editer', + areYouSure: 'Etes-vous sûr ?', + deleteConfirmation: 'Cet enregistrement sera supprimé. Continuer ?', + save: 'Sauvegarder', + saving: 'Sauvegarde en cours...', + cancel: 'Annuler', + deleteText: 'Supprimer', + deleting: 'Supression en cours...', + error: 'Erreur', + close: 'Fermer', + cannotLoadOptionsFor: 'Impossible de charger les données du champ {0}', + pagingInfo: 'Afficher {0} à {1} de {2}', + canNotDeletedRecords: 'Impossible de supprimer {0} sur {1} enregistrement(s)!', + deleteProggress: 'Supression {0} sur {1} enregistrement(s), en cours d\'exécution...', + pageSizeChangeLabel: 'Nombre d\'enregistrement', + gotoPageLabel: 'Aller à la page' + }); + +})(jQuery); diff --git a/lib/localization/jquery.jtable.hr.js b/lib/localization/jquery.jtable.hr.js new file mode 100644 index 0000000..bac56a0 --- /dev/null +++ b/lib/localization/jquery.jtable.hr.js @@ -0,0 +1,30 @@ +/* + jTable localization file for 'Croatian' language. + Author: Nikola Novak +*/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: 'Greška prilikom komunikacije sa serverom.', + loadingMessage: 'Učitavanje zapisa...', + noDataAvailable: 'Nema dostupnih podataka', + addNewRecord: 'Dodaj zapis', + editRecord: 'Izmijeni zapis', + areYouSure: 'Jeste li sigurni?', + deleteConfirmation: 'Jeste li sigurni da želite obrisati ovaj zapis?', + save: 'Spremi', + saving: 'Spremanje', + cancel: 'Odustani', + deleteText: 'Obriši', + deleting: 'Brisanje', + error: 'Greška', + close: 'Zatvori', + cannotLoadOptionsFor: 'Ne mogu se učitati opcije za polje {0}', + pagingInfo: 'Prikazuje se {0}-{1} od {2}', + pageSizeChangeLabel: 'Broj zapisa', + gotoPageLabel: 'Idi na stranicu', + canNotDeletedRecords: 'Nije bilo moguće obrisati {0} od {1} zapisa!', + deleteProggress: 'Obrisano {0} od {1} zapisa, u tijeku...' + }); + +})(jQuery); \ No newline at end of file diff --git a/lib/localization/jquery.jtable.hu.js b/lib/localization/jquery.jtable.hu.js new file mode 100644 index 0000000..c5c4339 --- /dev/null +++ b/lib/localization/jquery.jtable.hu.js @@ -0,0 +1,30 @@ +/* + jTable localization file for 'Hungarian' language. + Author: Erik Berman +*/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: 'Adatbázis hiba', + loadingMessage: 'Adatok betöltése...', + noDataAvailable: 'Nincs elérhető adat!', + addNewRecord: '+ Új hozzáadása', + editRecord: 'Módosít', + areYouSure: 'Biztos benne?', + deleteConfirmation: 'Az adat véglegesen törlődik. Biztos benne?', + save: 'Mentés', + saving: 'Mentés', + cancel: 'Mégse', + deleteText: 'Töröl', + deleting: 'Törlés', + error: 'Hiba', + close: 'Bezár', + cannotLoadOptionsFor: '{0} mező opciói nem elérhetőek!', + pagingInfo: 'Megjelenítve: {0} - {1} / Összesen: {2}', + canNotDeletedRecords: '{1} tételből {0} nem törölhető!', + deleteProggress: '{1} tételből {0} törölve, feldolgozás...', + pageSizeChangeLabel: 'Row count', //New. Must be localized. + gotoPageLabel: 'Go to page' //New. Must be localized. +}); + +})(jQuery); diff --git a/lib/localization/jquery.jtable.id.js b/lib/localization/jquery.jtable.id.js new file mode 100644 index 0000000..0a7f58b --- /dev/null +++ b/lib/localization/jquery.jtable.id.js @@ -0,0 +1,31 @@ +/* + jTable localization file for 'Bahasa (Indonesian)' language. + Author: Heribertus Kristianto + Author: Willy Sudiarto Raharjo +*/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: 'Gagal terhubung ke server.', + loadingMessage: 'Proses membaca data...', + noDataAvailable: 'Data tidak tersedia', + addNewRecord: 'Tambah Data Baru', + editRecord: 'Ubah data', + areYouSure: 'Apakah Anda yakin?', + deleteConfirmation: 'Data akan dihapus, apakah Anda yakin?', + save: 'Simpan', + saving: 'Menyimpan...', + cancel: 'Batal', + deleteText: 'Hapus', + deleting: 'Menghapus...', + error: 'Kesalahan', + close: 'Tutup', + cannotLoadOptionsFor: 'Tidak dapat membaca opsi untuk kolom {0}', + pagingInfo: 'Menampilkan {0}-{1} dari {2}', + canNotDeletedRecords: 'Gagal menghapus {0} dari {1} data!', + deleteProggress: 'Menghapus {0} dari {1} data, memproses...', + pageSizeChangeLabel: 'Jumlah data', + gotoPageLabel: 'Ke halaman' + }); + +})(jQuery); diff --git a/lib/localization/jquery.jtable.it.js b/lib/localization/jquery.jtable.it.js new file mode 100644 index 0000000..1b2096a --- /dev/null +++ b/lib/localization/jquery.jtable.it.js @@ -0,0 +1,30 @@ +/* + jTable localization file for 'Italian' language. + Author: Mauro Rulli +*/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: 'Si è verificato un errore di comunicazione con il server.', + loadingMessage: 'Caricamento dei record...', + noDataAvailable: 'Non ci sono dati disponibili!', + addNewRecord: '+ Crea un nuovo record', + editRecord: 'Modifica record', + areYouSure: 'Sei sicuro?', + deleteConfirmation: 'Il record verrà eliminato. Sei sicuro?', + save: 'Salva', + saving: 'Salvataggio', + cancel: 'Annulla', + deleteText: 'Elimina', + deleting: 'Eliminazione', + error: 'Errore', + close: 'Chiudi', + cannotLoadOptionsFor: 'Opzioni non disponibili per il campo {0}', + pagingInfo: 'Visualizzazione record da {0} a {1} su {2}', + canNotDeletedRecords: 'Impossibile eliminare il record {0} di {1}!', + deleteProggress: 'Eliminazione di {0} di {1} record in corso...', + pageSizeChangeLabel: 'Righe per pagina', + gotoPageLabel: 'Vai alla pagina' + }); + +})(jQuery); \ No newline at end of file diff --git a/lib/localization/jquery.jtable.kr.js b/lib/localization/jquery.jtable.kr.js new file mode 100644 index 0000000..7aa2e74 --- /dev/null +++ b/lib/localization/jquery.jtable.kr.js @@ -0,0 +1,30 @@ +/* + jTable localization file for 'Korean' language. + Author: Donggill Shin +*/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: '서버와 통신 중에 오류가 발생했습니다.', + loadingMessage: '데이터를 불러오는 중입니다...', + noDataAvailable: '조회된 데이터가 없습니다.', + addNewRecord: '신규', + editRecord: '수정', + areYouSure: '계속하시겠습니까?', + deleteConfirmation: '자료가 삭제됩니다. 계속하시겠습니까?', + save: '저장', + saving: '저장 중입니다.', + cancel: '취소', + deleteText: '삭제', + deleting: '삭제 중입니다.', + error: '오류', + close: '닫기', + cannotLoadOptionsFor: '{0} 필드의 설정을 불러올 수 없습니다.', + pagingInfo: '전체 자료 {2}건 중 현재 {0}-{1} 조회 중', + canNotDeletedRecords: '{1}건의 자료 중 {0}건을 삭제할 수 없습니다.', + deleteProggress: '삭제중 {1}건 중 {0}번째 자료, 진행 중...', + pageSizeChangeLabel: '페이지당 조회수', + gotoPageLabel: '페이지 이동' + }); + +})(jQuery); diff --git a/lib/localization/jquery.jtable.lt.js b/lib/localization/jquery.jtable.lt.js new file mode 100644 index 0000000..6635c50 --- /dev/null +++ b/lib/localization/jquery.jtable.lt.js @@ -0,0 +1,30 @@ +/* + jTable localization file for 'Lithuanian' language. + Author: Vygandas Šimkus +*/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: 'Klaida bandant susisiekti su serveriu.', + loadingMessage: 'Informacija kraunama...', + noDataAvailable: 'Nėra duomenų!', + addNewRecord: '+ Pridėti naują', + editRecord: 'Redaguoti', + areYouSure: 'Ar tikrai?', + deleteConfirmation: 'Įrašas bus ištrintas. Ar tęsti?', + save: 'Išsaugoti', + saving: 'Saugojama', + cancel: 'Atšaukti', + deleteText: 'Ištrinti', + deleting: 'Trinama', + error: 'Klaida', + close: 'Uždaryti', + cannotLoadOptionsFor: 'Nepavyko užkrauti "{0}" pasirinkimo!', + pagingInfo: '{0}-{1} iš {2}', + canNotDeletedRecords: 'Nepavyko pašalinti {0} iš {1} įrašų!', + deleteProggress: 'Šalinamas {0} iš {1} įrašų, prašome palaukti...', + pageSizeChangeLabel: 'Eilutės', + gotoPageLabel: 'Į puslapį' + }); + +})(jQuery); diff --git a/lib/localization/jquery.jtable.nl-NL.js b/lib/localization/jquery.jtable.nl-NL.js new file mode 100644 index 0000000..942ef0f --- /dev/null +++ b/lib/localization/jquery.jtable.nl-NL.js @@ -0,0 +1,30 @@ +/* + jTable localization file for 'Dutch - The Netherlands' language. + Author: Bert Janssen +*/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: 'Fout bij het communiceren met de server', + loadingMessage: 'Laden...', + noDataAvailable: 'Geen gegevens beschikbaar!', + addNewRecord: '+ Toevoegen', + editRecord: 'Bewerken', + areYouSure: 'Weet u het zeker?', + deleteConfirmation: 'Gegevens verwijderen?', + save: 'Opslaan', + saving: 'Gegevens opslaan', + cancel: 'Annuleren', + deleteText: 'Wissen', + deleting: 'Gegevens wissen', + error: 'Er is een fout opgetreden!', + close: 'Sluiten', + cannotLoadOptionsFor: 'Kan de instellingen voor {0} niet laden', + pagingInfo: 'Pagina {0} tot {1} van {2}', + canNotDeletedRecords: 'Kan gegevens {0} van {1} niet wissen!', + deleteProggress: 'Gegevens {0} van {1} wissen...', + pageSizeChangeLabel: 'Row count', //New. Must be localized. + gotoPageLabel: 'Go to page' //New. Must be localized. +}); + +})(jQuery); diff --git a/lib/localization/jquery.jtable.no.js b/lib/localization/jquery.jtable.no.js new file mode 100644 index 0000000..d8eabb9 --- /dev/null +++ b/lib/localization/jquery.jtable.no.js @@ -0,0 +1,30 @@ +/* +jTable localization file for 'Norwegian' language. +Author: Tobias Flatin +*/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: 'En feil oppsto i kommunikasjonen med serveren.', + loadingMessage: 'Laster...', + noDataAvailable: 'Ingen data', + addNewRecord: 'Legg til ny post', + editRecord: 'Rediger post', + areYouSure: 'Er du sikker?', + deleteConfirmation: 'Denne posten kommer å slettes. Er du sikker?', + save: 'Lagre', + saving: 'Lagrer...', + cancel: 'Avbryt', + deleteText: 'Slett', + deleting: 'Sletter...', + error: 'Feil', + close: 'Lukk', + cannotLoadOptionsFor: 'Kan ikke laste alternativ for felt {0}', + pagingInfo: 'Viser {0} - {1} av {2}', + canNotDeletedRecords: 'Kan ikke slette {0} av {1} poster!', + deleteProggress: 'Slettet {0} av {1} poster, bearbeider...', + pageSizeChangeLabel: 'Antall poster per side', + gotoPageLabel: 'Gå til side' + }); + +})(jQuery); diff --git a/lib/localization/jquery.jtable.pl.js b/lib/localization/jquery.jtable.pl.js new file mode 100644 index 0000000..a8b37ed --- /dev/null +++ b/lib/localization/jquery.jtable.pl.js @@ -0,0 +1,30 @@ +/* + jTable localization file for 'Polish' language. + Author: Grzegorz Zbucki +*/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: 'Wystąpił błąd komunikacji z serwerem.', + loadingMessage: 'Ładowanie...', + noDataAvailable: 'Brak rekordów!', + addNewRecord: '+ Dodaj nowy wpis', + editRecord: 'Edytuj', + areYouSure: 'Czy jesteś tego pewien?', + deleteConfirmation: 'Ten wpis zostanie usunięty. Kontynuować?', + save: 'Zapisz', + saving: 'Zapisywanie', + cancel: 'Anuluj', + deleteText: 'Usuń', + deleting: 'Usuwanie', + error: 'Błąd', + close: 'Zamknij', + cannotLoadOptionsFor: 'Nie można wczytać opcji dla pola {0}!', + pagingInfo: 'Wyświetlanie od {0} do {1} z {2} rekordów', + canNotDeletedRecords: 'Nie można usunąć {0} z {1} rekordów!', + deleteProggress: 'Usunięto {0} z {1} rekordów, Trwa usuwanie...', + pageSizeChangeLabel: 'Liczba rekordów', + gotoPageLabel: 'Idź do strony' + }); + +})(jQuery); diff --git a/lib/localization/jquery.jtable.pt-BR.js b/lib/localization/jquery.jtable.pt-BR.js new file mode 100644 index 0000000..c4e1f21 --- /dev/null +++ b/lib/localization/jquery.jtable.pt-BR.js @@ -0,0 +1,30 @@ +/* + jTable localization file for 'Portuguese - Brazilian' language. + Authors: Renato Bigliazzi, Paulo Soriano +*/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: 'Erro durante comunicação com o servidor.', + loadingMessage: 'Carregando registros...', + noDataAvailable: 'Nenhum dado disponível!', + addNewRecord: 'Adicionar novo registro', + editRecord: 'Editar registro', + areYouSure: 'Você tem certeza?', + deleteConfirmation: 'Este registro será excluído. Você tem certeza?', + save: 'Salvar', + saving: 'Salvando...', + cancel: 'Cancelar', + deleteText: 'Excluir', + deleting: 'Excluindo...', + error: 'Erro', + close: 'Fechar', + cannotLoadOptionsFor: 'Não foi possível carregar opções para o campo {0}!', + pagingInfo: 'Exibindo {0}-{1} de {2}', + canNotDeletedRecords: 'Não foi possível excluir registro(s) {0} de {1}!', + deleteProggress: 'Excluindo {0} de {1} registros, processando...', + pageSizeChangeLabel: 'Linhas', + gotoPageLabel: 'Ir para página' + }); + +})(jQuery); diff --git a/lib/localization/jquery.jtable.pt-PT.js b/lib/localization/jquery.jtable.pt-PT.js new file mode 100644 index 0000000..aa8ead5 --- /dev/null +++ b/lib/localization/jquery.jtable.pt-PT.js @@ -0,0 +1,29 @@ +/* + jTable localization file for 'Portuguese - Portugal' language. +*/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: 'Erro na ligação ao servidor.', + loadingMessage: 'A ler dados ...', + noDataAvailable: 'Não existem dados!', + addNewRecord: 'Novo', + editRecord: 'Editar', + areYouSure: 'Tem a certeza?', + deleteConfirmation: 'Confirma eliminação?', + save: 'Salvar', + saving: 'A salvar ...', + cancel: 'Cancelar', + deleteText: 'Eliminar', + deleting: 'A eliminar ...', + error: 'Erro', + close: 'Fechar', + cannotLoadOptionsFor: 'Não foi possivel carregar opções para o campo {0}!', + pagingInfo: 'Registos {0} a {1} de {2}', + canNotDeletedRecords: 'Não foi possível eliminar o(s) registo(s) {0} de {1}!', + deleteProggress: 'A eliminar {0} de {1} registos ...', + pageSizeChangeLabel: 'Linhas', + gotoPageLabel: 'Ir para a página' + }); + +})(jQuery); diff --git a/lib/localization/jquery.jtable.ro.js b/lib/localization/jquery.jtable.ro.js new file mode 100644 index 0000000..02dc5ec --- /dev/null +++ b/lib/localization/jquery.jtable.ro.js @@ -0,0 +1,30 @@ +/* + jTable localization file for 'Romanian' language. + Author: Cristian CIOFU +*/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: 'Eroare la comunicarea cu serverul.', + loadingMessage: 'Încãrcare date...', + noDataAvailable: 'Nu existã înregistrãri !', + addNewRecord: 'Adauga', + editRecord: 'Editare', + areYouSure: 'Sunteti sigur ?', + deleteConfirmation: 'Înregistrarea va fi ştearsã. Continuaţi ?', + save: 'Salveaza', + saving: 'Salvare in curs...', + cancel: 'Anuleaza', + deleteText: 'Sterge', + deleting: 'Stergere in curs...', + error: 'Eroare', + close: 'Inchide', + cannotLoadOptionsFor: 'Imposibil de încãrcat datele câmpului {0}', + pagingInfo: 'Înregistrarile {0} - {1} din {2}', + canNotDeletedRecords: 'Imposibil de şters {0} din {1} înregistrãri!', + deleteProggress: 'Ştergere: {0} din {1} înregistrãri, în curs de execuţie...', + pageSizeChangeLabel: 'Numãr de înregistrãri', + gotoPageLabel: 'Mergi la pagina' + }); + +})(jQuery); diff --git a/lib/localization/jquery.jtable.ru.js b/lib/localization/jquery.jtable.ru.js new file mode 100644 index 0000000..734fb74 --- /dev/null +++ b/lib/localization/jquery.jtable.ru.js @@ -0,0 +1,31 @@ +/* + jTable localization file for 'Russian' language. + Author: Stanislav Reznikov + Updated: Andrei Lukovenko +*/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: 'Ошибка связи с сервером.', + loadingMessage: 'Загрузка...', + noDataAvailable: 'Данные отсутствуют', + addNewRecord: 'Добавить', + editRecord: 'Изменить', + areYouSure: 'Вы уверены?', + deleteConfirmation: 'Удалить запись?', + save: 'Сохранить', + saving: 'Сохранение...', + cancel: 'Отмена', + deleteText: 'Удалить', + deleting: 'Удаление...', + error: 'Ошибка', + close: 'Закрыть', + cannotLoadOptionsFor: 'Невозможно загрузить варианты для поля {0}', + pagingInfo: 'Записи с {0} по {1} из {2}', + canNotDeletedRecords: 'Невозможно удалить записи: {0} из {1}!', + deleteProggress: 'Удаление {0} из {1} записей...', + pageSizeChangeLabel: 'Строк', + gotoPageLabel: 'На страницу' + }); + +})(jQuery); diff --git a/lib/localization/jquery.jtable.se.js b/lib/localization/jquery.jtable.se.js new file mode 100644 index 0000000..91bcf8c --- /dev/null +++ b/lib/localization/jquery.jtable.se.js @@ -0,0 +1,30 @@ +/* + jTable localization file for 'Swedish' language. + Author: Mikael Holgersson +*/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: 'Ett fel uppstod i kommunikationen med servern.', + loadingMessage: 'Laddar...', + noDataAvailable: 'Data saknas', + addNewRecord: 'Lägg till ny post', + editRecord: 'Redigera post', + areYouSure: 'Är du säker?', + deleteConfirmation: 'Denna posten kommer att raderas. Är du säker?', + save: 'Spara', + saving: 'Sparar...', + cancel: 'Avbryt', + deleteText: 'Radera', + deleting: 'Raderar...', + error: 'Fel', + close: 'Stäng', + cannotLoadOptionsFor: 'Kan inte ladda alternativ för fält {0}', + pagingInfo: 'Visar {0} - {1} av {2}', + canNotDeletedRecords: 'Kan inte radera {0} av {1} poster!', + deleteProggress: 'Raderat {0} av {1} poster, bearbetar...', + pageSizeChangeLabel: 'Antal poster per sida', + gotoPageLabel: 'Gå till sida' + }); + +})(jQuery); diff --git a/lib/localization/jquery.jtable.tr.js b/lib/localization/jquery.jtable.tr.js new file mode 100644 index 0000000..95e0130 --- /dev/null +++ b/lib/localization/jquery.jtable.tr.js @@ -0,0 +1,30 @@ +/* + jTable localization file for 'Turkish' language. + Author: Halil İbrahim Kalkan +*/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: 'Sunucu ile iletişim kurulurken bir hata oluştu.', + loadingMessage: 'Kayıtlar yükleniyor...', + noDataAvailable: 'Hiç kayıt bulunmamaktadır!', + addNewRecord: 'Yeni kayıt ekle', + editRecord: 'Kayıt düzenle', + areYouSure: 'Emin misiniz?', + deleteConfirmation: 'Bu kayıt silinecektir. Emin misiniz?', + save: 'Kaydet', + saving: 'Kaydediyor', + cancel: 'İptal', + deleteText: 'Sil', + deleting: 'Siliyor', + error: 'Hata', + close: 'Kapat', + cannotLoadOptionsFor: '{0} alanı için seçenekler yüklenemedi!', + pagingInfo: 'Gösterilen: {0}-{1}, Toplam: {2}', + canNotDeletedRecords: '{1} kayıttan {0} adedi silinemedi!', + deleteProggress: '{1} kayıttan {0} adedi silindi, devam ediliyor...', + pageSizeChangeLabel: 'Satır sayısı', + gotoPageLabel: 'Sayfaya git' + }); + +})(jQuery); diff --git a/lib/localization/jquery.jtable.ua.js b/lib/localization/jquery.jtable.ua.js new file mode 100644 index 0000000..9f41b37 --- /dev/null +++ b/lib/localization/jquery.jtable.ua.js @@ -0,0 +1,30 @@ +/* + jTable localization file for 'Ukrainian' language. + Author: Volodymyr Sokolov +*/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: 'Помилка зв’язку з сервером.', + loadingMessage: 'Завантаження...', + noDataAvailable: 'Дані відсутні', + addNewRecord: 'Додати', + editRecord: 'Змінити', + areYouSure: 'Ви впевнені?', + deleteConfirmation: 'Видалити запис?', + save: 'Зберегти', + saving: 'Збереження...', + cancel: 'Відміна', + deleteText: 'Видалити', + deleting: 'Видалення...', + error: 'Помилка', + close: 'Закрити', + cannotLoadOptionsFor: 'Неможливо завантажити варіанти для поля {0}', + pagingInfo: 'Записи від {0} по {1} з {2}', + canNotDeletedRecords: 'Неможливо видалити записи: {0} з {1}!', + deleteProggress: 'Видалення {0} з {1} записів...', + pageSizeChangeLabel: 'Рядків', + gotoPageLabel: 'На сторінку' + }); + +})(jQuery); diff --git a/lib/localization/jquery.jtable.vi.js b/lib/localization/jquery.jtable.vi.js new file mode 100644 index 0000000..c324871 --- /dev/null +++ b/lib/localization/jquery.jtable.vi.js @@ -0,0 +1,28 @@ +/* + jTable localization file for 'Vietnamese' language. + Author: Lê Hoàng Hiếu +*/ +(function ($) { + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: 'Có lỗi khi giao tiếp với máy chủ.', + loadingMessage: 'Đang tải dữ liệu...', + noDataAvailable: 'Không có dữ liệu!', + addNewRecord: '+ Thêm dữ liệu', + editRecord: 'Chỉnh sửa', + areYouSure: 'Bạn có chắc không?', + deleteConfirmation: 'Dữ liệu này sẽ bị xóa! Bạn có chắc không?', + save: 'Lưu', + saving: 'Đang lưu', + cancel: 'Hủy', + deleteText: 'Xóa', + deleting: 'Đang xóa', + error: 'Lỗi', + close: 'Đóng', + cannotLoadOptionsFor: 'Không thể tải các tùy chọn cho trường {0}!', + pagingInfo: 'Hiện từ {0} đến {1} của {2} bản ghi', + canNotDeletedRecords: 'Không thể xóa {0} bản ghi của {1} bản ghi!', + deleteProggress: 'Đã xóa được {0} của {1} bản ghi. Đang xử lý...', + pageSizeChangeLabel: 'Số bản ghi', //New. Must be localized. + gotoPageLabel: 'Tới trang' //New. Must be localized. + }); +})(jQuery); diff --git a/lib/localization/jquery.jtable.zh-CN.js b/lib/localization/jquery.jtable.zh-CN.js new file mode 100644 index 0000000..17eeac7 --- /dev/null +++ b/lib/localization/jquery.jtable.zh-CN.js @@ -0,0 +1,30 @@ +/* + jTable localization file for 'Chinese' language. + Author: monkeycraps +*/ +(function ($) { + + $.extend(true, $.hik.jtable.prototype.options.messages, { + serverCommunicationError: '服务器请求错误。', + loadingMessage: '加载中...', + noDataAvailable: '没有数据!', + addNewRecord: '+ 新建', + editRecord: '编辑', + areYouSure: '确定?', + deleteConfirmation: '确定删除这行数据?', + save: '保存', + saving: '保存中', + cancel: '取消', + deleteText: '删除', + deleting: '删除中', + error: '错误', + close: '关闭', + cannotLoadOptionsFor: '无法加载对象属性 {0}', + pagingInfo: '显示 {0} 至 {1} 共 {2}', + canNotDeletedRecords: '删除失败 {0} 至 {1}!', + deleteProggress: '正在删除 {0} 至 {1} 记录, 进心中...', + pageSizeChangeLabel: '每页显示', + gotoPageLabel: '跳转到' + }); + +})(jQuery); diff --git a/lib/themes/basic/close.png b/lib/themes/basic/close.png new file mode 100644 index 0000000000000000000000000000000000000000..e22ed6f43fc38bc1468121f8ae1561e73571bbe9 GIT binary patch literal 3350 zcmd5JR( zlO9pldw?gGOyPN#E6|iniBcaxL=T87S_66Uz+sY5bxFr9b3=VK1{GQ%~7-Fd`PBDJJpQ2fcW!>1qZS-qM%(*pVjtOC7gn%JIC504SBTP)OM^B>$lEm{w z9z2!Mk!~dPRFOh6@>#?Aql(iMCHg0YGXY*vT1l~a5430OSyRrmEtUm>)C@}Oilt4HGG&IKOi3nh0{Eq9Kr5V~yGx%j$IhTl!Xb7k(=1Pm| zBA}Veno=-x9Evt3j*V}{^)8D@G*KOJ-Wbd9UN6shAEFtarY&@9!T2X|tcoV8AzezF zIg5lENIc__6`AK)Ce-5h205n17YZ|sKP)u+>5z~1aYBo~R&c=Fq*R zsK0@1hhjVptT2f2Htmuw<18}ubUtHcY=Q`4oZtYE5=0cF(mkpomBkAuMMdq@A#Or_ z;v;2BVk~$E%$t`fAZUnJj?NQjHB?1#!^Dm;%41bW}i0emb4?wH^`e4 z9&BbgMxec+X1jU?Kkn<^FfA}_owvCqR2up?;dsX|4A%bN3;)-`FImnp!pm;;8_0No zGLN7_Ve5_pHQC(4nDOjF)O?G@(mj3mc)a*fLA!?NI^AqID9P#Papi z+Cg4WTCCXe35X>WgTOD8$OqmF^(2AYxZ_~Bo)*K*i-#yDvA}0Z94pC`DVb-94jmE; zYg&}pD5xMOYBGStV~T;#%1k+?f}6$UL^WCL1JXfK&{ZTUp9iZyD;a>VU&*Ad8H9ik zRC?0Z9jHy$+~#utB}G(;Hk}9osANQh9gK1k3#67rha|HxMy(^9?=ZwThyj>1{y$>> zPMsa1<5q|z+t2WA6JKU z2ZiOCuV-%cwVyibnK;?A{KG}QW!qm{_h8fEM=NS_{OkRfd#`*}s^eA8O;;|QnxLM(O+>t-l%sV)AnwxuPb=SK4BiobT zt@)*!nmjt=#Y?WA77mTLK0kILbKvO8lloq6+o4};&R<>qUh>IzPo4+_mQ4AwcJArw z?12-XlAAVz>HCh~G7OdtuI+|f&dMD14e|DsJuBYt%w?|~suD>N9qXV}lwkfkt z`syz1y5JgpW5LfGhjyPcb`9TkdVRM_kYRc*S#VZb!5Eb0!jQ3+-<1e(oR^_n?3yDLVrVc?H$@6YB5(BxPq}0YHEO0D!h$;x*Hg=Kufz07*qo IM6N<$g7z7Pu>b%7 literal 0 HcmV?d00001 diff --git a/lib/themes/basic/column-desc.png b/lib/themes/basic/column-desc.png new file mode 100644 index 0000000000000000000000000000000000000000..d991088192cc4a64668dd8b57769bc488a90121b GIT binary patch literal 349 zcmV-j0iyniP)mBu>caE9qJNhf(8H;@c}7GAZA39 z0vRZV*8reqHmJXuakxwZJv^9@G_yec%}F58<$!9rU;->ilDt671H^v_L_NrLf|Gr^Z&n@*$F$26AEGxQ_!~U3TXc& z05OT{gC6IqF98TqNzQ_>ICGcwQ$Z8dmG6uciMtArRK|7X%c|8t%P0UjB}vl)_`S1;aH0!45Irsar%1~|UT3c5&9r3KO3$RlrIS=QuZ23+iL zV-MslnE(2XE3h_@Mc)%1yJ-aoJa98`(2&J&XXKoWi$ua1HwBlk&{DSPzRD!-)jqL} t5HS7)jjiNf6vS{5z3Y+!@4-`m0RVdZO_6Gl>{$Q+002ovPDHLkV1jq4jbP0l+XkKw!<{Z literal 0 HcmV?d00001 diff --git a/lib/themes/basic/edit.png b/lib/themes/basic/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..cd77c3008b7f0b1c6286ce52f38f9f0990c64368 GIT binary patch literal 590 zcmV-U0nlaF@BtDk)`UjWG*m4{RHzFr1gg*&n#{f9DwpP^2Y#5x zIp_b+j0TWQCf6*>s?q{N2z_~ZIosFQcL?|i5b5phIOVCH?H+%23&SuDN-0&lDwoTu zP$;NaES3RW023p_$14-j-~KJeZU>-RbzYBBsYEy&_E##E=cdw=d-wO8e|Y^|`SY(; z&GA36!{ICu5u}tVl}f3}i4mo~237i! zQ@J~xj{qG&)H*4p+LrwDjl+8qGF)S5PwgSD3SgMrfDLCXyV!i)oK+X1aql-bbH6hP8FDO4igFu*pJyNrfndl zWNGO;-QFL3NGvj~MF|~^AcSZsv<*ztv?o~mlHqph6RV!f90?r*pmtw_QmXFEo* td .jtable-command-button { + margin: 0px; + padding: 0px; + cursor: pointer; + border: none; + display: inline; +} +div.jtable-main-container table.jtable tbody tr > td .jtable-command-button span { + display: none; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-command-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column input { + cursor: pointer; +} +div.jtable-main-container table.jtable tbody tr.jtable-no-data-row { + text-align: center; +} +div.jtable-main-container > div.jtable-bottom-panel { + position: relative; + min-height: 24px; + text-align: left; +} +div.jtable-main-container > div.jtable-bottom-panel div.jtable-right-area { + right: 0px; + top: 0px; + bottom: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + display: inline-block; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + padding: 2px 5px; + display: inline-block; + cursor: pointer; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page input[type=text] { + width: 22px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + vertical-align: middle; +} +div.jtable-main-container div.jtable-column-resize-bar { + opacity: 0.5; + filter: alpha(opacity=50); + position: absolute; + display: none; + width: 1px; + background-color: #000; +} +div.jtable-main-container div.jtable-column-selection-container { + position: absolute; + display: none; + border: 1px solid #C8C8C8; + background: #fff; + color: #000; + z-index: 101; + padding: 5px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list { + margin: 0px; + padding: 0px; + list-style: none; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li { + margin: 0px; + padding: 2px 0px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span { + position: relative; + top: -1px; + margin-left: 4px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"] { + cursor: pointer; +} +form.jtable-dialog-form div.jtable-input-field-container { + padding: 2px 0px 3px 0px; + border-bottom: 1px solid #ddd; +} +form.jtable-dialog-form div.jtable-input-field-container:last-child { + border: none; +} +form.jtable-dialog-form div.jtable-input-label { + padding: 2px 3px; + font-size: 1.1em; + color: #666; +} +form.jtable-dialog-form div.jtable-input { + padding: 2px; +} +form.jtable-dialog-form div.jtable-date-input { + /* No additional style */ + +} +form.jtable-dialog-form div.jtable-text-input { + /* No additional style */ + +} +form.jtable-dialog-form span.jtable-option-text-clickable { + position: relative; + top: -2px; +} +form.jtable-dialog-form div.jtable-textarea-input textarea { + width: 300px; + min-height: 60px; +} +form.jtable-dialog-form div.jtable-checkbox-input span, +form.jtable-dialog-form div.jtable-radio-input span { + padding-left: 4px; +} +form.jtable-dialog-form div.jtable-radio-input input, +form.jtable-dialog-form div.jtable-checkbox-input input, +form.jtable-dialog-form span.jtable-option-text-clickable { + cursor: pointer; +} +div.jtable-busy-panel-background { + opacity: 0.1; + filter: alpha(opacity=50); + z-index: 998; + position: absolute; + background-color: #000; +} +div.jtable-busy-panel-background.jtable-busy-panel-background-invisible { + background-color: transparent; +} +div.jtable-busy-message { + cursor: wait; + z-index: 999; + position: absolute; + margin: 5px; +} +div.jtable-contextmenu-overlay { + position: fixed; + left: 0px; + top: 0px; + width: 100%; + height: 100%; + z-index: 100; +} +div.jtable-main-container div.jtable-title div.jtable-title-text { + font-size: 16px; + font-weight: bold; +} +div.jtable-main-container div.jtable-title .jtable-close-button { + background: url('close.png') no-repeat; + width: 16px; + height: 16px; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sortable div.jtable-column-header-container { + background: url('column-sortable.png') no-repeat right; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-asc div.jtable-column-header-container { + background: url('column-asc.png') no-repeat right; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-desc div.jtable-column-header-container { + background: url('column-desc.png') no-repeat right; +} +div.jtable-main-container table.jtable tbody > tr > td .jtable-edit-command-button { + background: url('edit.png') no-repeat; + width: 16px; + height: 16px; +} +div.jtable-main-container table.jtable tbody > tr > td .jtable-delete-command-button { + background: url('delete.png') no-repeat; + width: 16px; + height: 16px; +} +div.jtable-busy-message { + color: #000; + background-color: #ddd; + font-size: 1.25em; +} diff --git a/lib/themes/basic/jtable_basic.less b/lib/themes/basic/jtable_basic.less new file mode 100644 index 0000000..54e78bc --- /dev/null +++ b/lib/themes/basic/jtable_basic.less @@ -0,0 +1,83 @@ +/* These file is a start point for who wants to create a fully custom + * theme for jTable. jtable_theme_base.less (or css) file is needed + * for functionality of jTable. This file does not add any color or shape + * modifications. It just shows how to set icons. You can change them too. + * Halil ibrahim Kalkan / http://www.jtable.org + */ + +@import "../jtable_theme_base.less"; + +.jtable_theme_base; + +div.jtable-main-container +{ + div.jtable-title + { + div.jtable-title-text + { + font-size: 16px; + font-weight: bold; + } + + .jtable-close-button + { + background: url('close.png') no-repeat; + width: 16px; + height: 16px; + } + } + + table.jtable + { + thead + { + th + { + &.jtable-column-header-sortable div.jtable-column-header-container + { + background: url('column-sortable.png') no-repeat right; + } + + &.jtable-column-header-sorted-asc div.jtable-column-header-container + { + background: url('column-asc.png') no-repeat right; + } + + &.jtable-column-header-sorted-desc div.jtable-column-header-container + { + background: url('column-desc.png') no-repeat right; + } + } + } + + tbody + { + > tr + { + > td + { + .jtable-edit-command-button + { + background: url('edit.png') no-repeat; + width: 16px; + height: 16px; + } + + .jtable-delete-command-button + { + background: url('delete.png') no-repeat; + width: 16px; + height: 16px; + } + } + } + } + } +} + +div.jtable-busy-message +{ + color: #000; + background-color: #ddd; + font-size: 1.25em; +} diff --git a/lib/themes/basic/jtable_basic.min.css b/lib/themes/basic/jtable_basic.min.css new file mode 100644 index 0000000..d5aa3eb --- /dev/null +++ b/lib/themes/basic/jtable_basic.min.css @@ -0,0 +1 @@ +div.jtable-main-container{position:relative}div.jtable-main-container div.jtable-title{position:relative;text-align:left}div.jtable-main-container div.jtable-title .jtable-close-button{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute;display:inline-block;margin-right:5px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{position:relative;display:inline-block;margin:0 0 0 5px;cursor:pointer;font-size:.9em;padding:2px;vertical-align:bottom}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-icon{display:inline-block;margin:2px;vertical-align:middle;width:16px;height:16px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-text{display:inline-block;margin:2px;vertical-align:middle}div.jtable-main-container div.jtable-title .jtable-close-button+div.jtable-toolbar{margin-right:30px}div.jtable-main-container table.jtable{width:100%}div.jtable-main-container table.jtable thead th{vertical-align:middle;text-align:left}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container{position:relative}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{display:inline-block}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{position:absolute;height:24px;width:8px;right:-8px;top:-2px;z-index:2;cursor:col-resize}div.jtable-main-container table.jtable thead th.jtable-command-column-header{text-align:center}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting{text-align:center;width:1%}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting input{cursor:pointer}div.jtable-main-container table.jtable thead th.jtable-column-header-sortable{cursor:pointer}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button{margin:0;padding:0;cursor:pointer;border:none;display:inline}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button span{display:none}div.jtable-main-container table.jtable tbody tr>td.jtable-command-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column input{cursor:pointer}div.jtable-main-container table.jtable tbody tr.jtable-no-data-row{text-align:center}div.jtable-main-container>div.jtable-bottom-panel{position:relative;min-height:24px;text-align:left}div.jtable-main-container>div.jtable-bottom-panel div.jtable-right-area{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{display:inline-block}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{padding:2px 5px;display:inline-block;cursor:pointer}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{cursor:default}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page input[type=text]{width:22px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{vertical-align:middle}div.jtable-main-container div.jtable-column-resize-bar{opacity:.5;filter:alpha(opacity=50);position:absolute;display:none;width:1px;background-color:#000}div.jtable-main-container div.jtable-column-selection-container{position:absolute;display:none;border:1px solid #c8c8c8;background:#fff;color:#000;z-index:101;padding:5px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list{margin:0;padding:0;list-style:none}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li{margin:0;padding:2px 0}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span{position:relative;top:-1px;margin-left:4px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"]{cursor:pointer}form.jtable-dialog-form div.jtable-input-field-container{padding:2px 0 3px 0;border-bottom:1px solid #ddd}form.jtable-dialog-form div.jtable-input-field-container:last-child{border:none}form.jtable-dialog-form div.jtable-input-label{padding:2px 3px;font-size:1.1em;color:#666}form.jtable-dialog-form div.jtable-input{padding:2px}form.jtable-dialog-form div.jtable-date-input{}form.jtable-dialog-form div.jtable-text-input{}form.jtable-dialog-form span.jtable-option-text-clickable{position:relative;top:-2px}form.jtable-dialog-form div.jtable-textarea-input textarea{width:300px;min-height:60px}form.jtable-dialog-form div.jtable-checkbox-input span,form.jtable-dialog-form div.jtable-radio-input span{padding-left:4px}form.jtable-dialog-form div.jtable-radio-input input,form.jtable-dialog-form div.jtable-checkbox-input input,form.jtable-dialog-form span.jtable-option-text-clickable{cursor:pointer}div.jtable-busy-panel-background{opacity:.1;filter:alpha(opacity=50);z-index:998;position:absolute;background-color:#000}div.jtable-busy-panel-background.jtable-busy-panel-background-invisible{background-color:transparent}div.jtable-busy-message{cursor:wait;z-index:999;position:absolute;margin:5px}div.jtable-contextmenu-overlay{position:fixed;left:0;top:0;width:100%;height:100%;z-index:100}div.jtable-main-container div.jtable-title div.jtable-title-text{font-size:16px;font-weight:bold}div.jtable-main-container div.jtable-title .jtable-close-button{background:url('close.png') no-repeat;width:16px;height:16px}div.jtable-main-container table.jtable thead th.jtable-column-header-sortable div.jtable-column-header-container{background:url('column-sortable.png') no-repeat right}div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-asc div.jtable-column-header-container{background:url('column-asc.png') no-repeat right}div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-desc div.jtable-column-header-container{background:url('column-desc.png') no-repeat right}div.jtable-main-container table.jtable tbody>tr>td .jtable-edit-command-button{background:url('edit.png') no-repeat;width:16px;height:16px}div.jtable-main-container table.jtable tbody>tr>td .jtable-delete-command-button{background:url('delete.png') no-repeat;width:16px;height:16px}div.jtable-busy-message{color:#000;background-color:#ddd;font-size:1.25em} \ No newline at end of file diff --git a/lib/themes/jqueryui/add.png b/lib/themes/jqueryui/add.png new file mode 100644 index 0000000000000000000000000000000000000000..08221ece4ddf2557c9902c5eecd3c55ce08d3587 GIT binary patch literal 482 zcmV<80UiE{P)M?#z-t962!6qm`mEeNFD+)uEUD4?0eP^STs%Nd2_658y~Ywoq)&8 Y9i3*Hpp6w4ZvX%Q07*qoM6N<$f<76;D*ylh literal 0 HcmV?d00001 diff --git a/lib/themes/jqueryui/bg-thead.png b/lib/themes/jqueryui/bg-thead.png new file mode 100644 index 0000000000000000000000000000000000000000..a7b6969ded5f9d564126d4a7a4a5c60ab0c915ea GIT binary patch literal 2811 zcmVKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0000cNkl^ZR)!R8O40?ozyyO0p&_`jF+dmXzueDp3bWJf#et>CrYZlg@uU5q9`aR;Gk4K2W0aFK|nH*fFMbn z{o49^NHEPNV!pGFCGOw!_V&uZ#p7chcVTr_*YIF-1D0W6X>pNnkV+^K?NpHK;UR&Q#Uzf|Vrm8I_F^rOKjH#Q9 zTUuV`z^vT7ygYPwcjt^_-$O$~SXo`g@#DqF5M$lQLKY=rD*6d>mNU*8x>HjX>^^&j z1i8($^d9kIVeuYDM@J#cG6$51l_-iB7#zgHy&q9rQVhxoG)*H@)BIkNCExRtXPFU7 z9%%$H=Bldx$qtA_BK)2K=JaE%>0{7=VI(Aa=CIo-Au_VM?t5;YX+{_br2>+Tw6fcv zP^>D?yo0{JKF;*T!8EV0dl&Io4Egzaa5(Ic36$w9NTQNsOuIj19O(FRozkf^YHQAM z_gPNa7#JMja$Nc33jf_sabyzB&3_M<+r>!<#9V@PJI8qJtFc+rGUtdiR7FKqWhFW~ zI&z>RBO_$gGVZUf;?}J%bIjY?+E7(>mYBzRG)c1gyLYFz4&>M}tsCs2APM|rB`Nq> z>Jh`k!&q7gq1^9BdAXmC?-~Mu0AItr*x1 zn$UxvHc?S=5;oG^Cdtfo>^u(Rjo07AI&Bh9#t6_LllP`#(PY!~^mO(B<3CKqCCYKg zP7dqDU}JNQa(awAo=;iMqm#+xDK0*S`|B%6D=Ahf;_-M$$>^8&L0%l88)N;f+Vv4OSqPuTf`9@=nK0rZ_I7l9{H-$;rf_jlQw5QFi9puG(z&4~XG8 zhr_`$%3L=MlOG6G)8-Uay%8J_e*2H!Ap4`GrMbcq#1>JIoMcjjq8TxCR^_n?3yDLVrVc?H$@6YB5(BxPq}0YHEO0D!h$;x*Hg=Kufz07*qo IM6N<$g7z7Pu>b%7 literal 0 HcmV?d00001 diff --git a/lib/themes/jqueryui/column-desc.png b/lib/themes/jqueryui/column-desc.png new file mode 100644 index 0000000000000000000000000000000000000000..d991088192cc4a64668dd8b57769bc488a90121b GIT binary patch literal 349 zcmV-j0iyniP)mBu>caE9qJNhf(8H;@c}7GAZA39 z0vRZV*8reqHmJXuakxwZJv^9@G_yec%}F58<$!9rU;->ilDt671H^v_L_NrLf|Gr^Z&n@*$F$26AEGxQ_!~U3TXc& z05OT{gC6IqF98TqNzQ_>ICGcwQ$Z8dmG6uciMtArRK|7X%c|8t%P0UjB}vl)_`S1;aH0!45Irsar%1~|UT3c5&9r3KO3$RlrIS=QuZ23+iL zV-MslnE(2XE3h_@Mc)%1yJ-aoJa98`(2&J&XXKoWi$ua1HwBlk&{DSPzRD!-)jqL} t5HS7)jjiNf6vS{5z3Y+!@4-`m0RVdZO_6Gl>{$Q+002ovPDHLkV1jq4jbP0l+XkKw!<{Z literal 0 HcmV?d00001 diff --git a/lib/themes/jqueryui/edit.png b/lib/themes/jqueryui/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..cd77c3008b7f0b1c6286ce52f38f9f0990c64368 GIT binary patch literal 590 zcmV-U0nlaF@BtDk)`UjWG*m4{RHzFr1gg*&n#{f9DwpP^2Y#5x zIp_b+j0TWQCf6*>s?q{N2z_~ZIosFQcL?|i5b5phIOVCH?H+%23&SuDN-0&lDwoTu zP$;NaES3RW023p_$14-j-~KJeZU>-RbzYBBsYEy&_E##E=cdw=d-wO8e|Y^|`SY(; z&GA36!{ICu5u}tVl}f3}i4mo~237i! zQ@J~xj{qG&)H*4p+LrwDjl+8qGF)S5PwgSD3SgMrfDLCXyV!i)oK+X1aql-bbH6hP8FDO4igFu*pJyNrfndl zWNGO;-QFL3NGvj~MF|~^AcSZsv<*ztv?o~mlHqph6RV!f90?r*pmtw_QmXFEo* td .jtable-command-button { + margin: 0px; + padding: 0px; + cursor: pointer; + border: none; + display: inline; +} +div.jtable-main-container table.jtable tbody tr > td .jtable-command-button span { + display: none; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-command-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column input { + cursor: pointer; +} +div.jtable-main-container table.jtable tbody tr.jtable-no-data-row { + text-align: center; +} +div.jtable-main-container > div.jtable-bottom-panel { + position: relative; + min-height: 24px; + text-align: left; +} +div.jtable-main-container > div.jtable-bottom-panel div.jtable-right-area { + right: 0px; + top: 0px; + bottom: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + display: inline-block; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + padding: 2px 5px; + display: inline-block; + cursor: pointer; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page input[type=text] { + width: 22px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + vertical-align: middle; +} +div.jtable-main-container div.jtable-column-resize-bar { + opacity: 0.5; + filter: alpha(opacity=50); + position: absolute; + display: none; + width: 1px; + background-color: #000; +} +div.jtable-main-container div.jtable-column-selection-container { + position: absolute; + display: none; + border: 1px solid #C8C8C8; + background: #fff; + color: #000; + z-index: 101; + padding: 5px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list { + margin: 0px; + padding: 0px; + list-style: none; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li { + margin: 0px; + padding: 2px 0px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span { + position: relative; + top: -1px; + margin-left: 4px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"] { + cursor: pointer; +} +form.jtable-dialog-form div.jtable-input-field-container { + padding: 2px 0px 3px 0px; + border-bottom: 1px solid #ddd; +} +form.jtable-dialog-form div.jtable-input-field-container:last-child { + border: none; +} +form.jtable-dialog-form div.jtable-input-label { + padding: 2px 3px; + font-size: 1.1em; + color: #666; +} +form.jtable-dialog-form div.jtable-input { + padding: 2px; +} +form.jtable-dialog-form div.jtable-date-input { + /* No additional style */ + +} +form.jtable-dialog-form div.jtable-text-input { + /* No additional style */ + +} +form.jtable-dialog-form span.jtable-option-text-clickable { + position: relative; + top: -2px; +} +form.jtable-dialog-form div.jtable-textarea-input textarea { + width: 300px; + min-height: 60px; +} +form.jtable-dialog-form div.jtable-checkbox-input span, +form.jtable-dialog-form div.jtable-radio-input span { + padding-left: 4px; +} +form.jtable-dialog-form div.jtable-radio-input input, +form.jtable-dialog-form div.jtable-checkbox-input input, +form.jtable-dialog-form span.jtable-option-text-clickable { + cursor: pointer; +} +div.jtable-busy-panel-background { + opacity: 0.1; + filter: alpha(opacity=50); + z-index: 998; + position: absolute; + background-color: #000; +} +div.jtable-busy-panel-background.jtable-busy-panel-background-invisible { + background-color: transparent; +} +div.jtable-busy-message { + cursor: wait; + z-index: 999; + position: absolute; + margin: 5px; +} +div.jtable-contextmenu-overlay { + position: fixed; + left: 0px; + top: 0px; + width: 100%; + height: 100%; + z-index: 100; +} +div.jtable-main-container div.jtable-title { + position: relative; + line-height: 34px; + padding-left: 10px; +} +div.jtable-main-container div.jtable-title .jtable-close-button { + right: 6px; + top: 6px; + bottom: 6px; + position: absolute; + opacity: 0.8; + filter: alpha(opacity=50); + background: url('close.png') no-repeat; + width: 22px; + height: 22px; +} +div.jtable-main-container div.jtable-title .jtable-close-button:hover { + opacity: 1; + filter: alpha(opacity=50); +} +div.jtable-main-container div.jtable-title div.jtable-toolbar { + bottom: 0px; + right: 0px; + position: absolute; + line-height: 20px; + margin-right: 2px; + margin-bottom: 2px; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon { + background-image: url('add.png'); +} +div.jtable-main-container table.jtable { + border-collapse: collapse; + border-spacing: 0; +} +div.jtable-main-container table.jtable thead th { + padding: 4px 3px 4px 6px; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container { + height: 20px; +} +div.jtable-main-container table.jtable thead th.jtable-column-header span.jtable-column-header-text { + margin-top: 3px; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-selecting { + padding: 5px; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sortable div.jtable-column-header-container { + background: url('column-sortable.png') no-repeat right; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-asc div.jtable-column-header-container { + background: url('column-asc.png') no-repeat right; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-desc div.jtable-column-header-container { + background: url('column-desc.png') no-repeat right; +} +div.jtable-main-container table.jtable tbody > tr { + padding: 2px; + height: 30px; +} +div.jtable-main-container table.jtable tbody > tr > td { + padding: 5px; + border: 1px solid #ddd; +} +div.jtable-main-container table.jtable tbody > tr > td:first-child { + border-left: none; +} +div.jtable-main-container table.jtable tbody > tr > td .jtable-edit-command-button { + background: url('edit.png') no-repeat; + width: 16px; + height: 16px; +} +div.jtable-main-container table.jtable tbody > tr > td .jtable-delete-command-button { + background: url('delete.png') no-repeat; + width: 16px; + height: 16px; +} +div.jtable-main-container table.jtable tbody > tr.jtable-child-row > td { + padding: 2px 1px 2px 2px; +} +div.jtable-main-container table.jtable tbody > tr.jtable-child-row > td div.jtable-toolbar { + margin-right: 33px; +} +div.jtable-main-container table.jtable tbody > tr.jtable-child-row > td .jtable { + border: none; +} +div.jtable-main-container table.jtable tbody > tr.jtable-child-row > td .jtable-title, +div.jtable-main-container table.jtable tbody > tr.jtable-child-row > td .jtable-bottom-panel { + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + border-radius: 0px; + border: none; +} +div.jtable-main-container div.jtable-bottom-panel { + padding: 1px; + min-height: 24px; + line-height: 16px; + font-size: 0.9em; +} +div.jtable-main-container div.jtable-bottom-panel div.jtable-right-area { + padding: 2px; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list { + margin: 3px; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + padding: 2px 5px; +} +div.jtable-main-container div.jtable-bottom-panel span.jtable-page-size-change { + vertical-align: middle; +} +div.jtable-main-container div.jtable-bottom-panel span.jtable-goto-page { + vertical-align: middle; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-info { + display: inline-block; + padding: 4px; +} +div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record { + margin: 3px; +} +div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a { + font-weight: bold; + text-decoration: none; +} +div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a:hover { + text-decoration: underline; +} +div.jtable-main-container div.jtable-column-selection-container { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + -moz-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); +} +form.jtable-dialog-form div.jtable-input-label { + font-weight: bold; +} +div.jtable-busy-message { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + -moz-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + padding: 5px; + color: none; +} diff --git a/lib/themes/jqueryui/jtable_jqueryui.less b/lib/themes/jqueryui/jtable_jqueryui.less new file mode 100644 index 0000000..9bd7d61 --- /dev/null +++ b/lib/themes/jqueryui/jtable_jqueryui.less @@ -0,0 +1,296 @@ +@import "../jtable_theme_base.less"; + +.jtable_jqueryui_base() +{ + .jtable_theme_base; + + div.jtable-main-container + { + div.jtable-title + { + position: relative; + line-height: 34px; + padding-left: 10px; + + .jtable-close-button + { + .dock(right, 6px); + .opacity(0.8); + background: url('close.png') no-repeat; + width: 22px; + height: 22px; + + &:hover + { + .opacity(1); + } + } + + // Toolbar ------------------------------------------------------------- + + div.jtable-toolbar + { + .dock(bottom-right); + + line-height:20px; + margin-right:2px; + margin-bottom:2px; + + span.jtable-toolbar-item + { + &.jtable-toolbar-item-add-record + { + span.jtable-toolbar-item-icon + { + background-image: url('add.png'); + } + } + } + } + } + + table.jtable + { + border-collapse: collapse; + border-spacing: 0; + + thead + { + th + { + padding: 4px 3px 4px 6px; + + &:first-child + { + } + + &th:last-child + { + } + + &.jtable-column-header + { + div.jtable-column-header-container + { + height: 20px; + + div.jtable-column-resize-handler + { + } + } + + span.jtable-column-header-text + { + margin-top: 3px; + } + } + + &.jtable-column-header-selecting + { + padding: 5px; + } + + &.jtable-column-header-sortable div.jtable-column-header-container + { + background: url('column-sortable.png') no-repeat right; + } + + &.jtable-column-header-sorted-asc div.jtable-column-header-container + { + background: url('column-asc.png') no-repeat right; + } + + &.jtable-column-header-sorted-desc div.jtable-column-header-container + { + background: url('column-desc.png') no-repeat right; + } + } + } + + tbody + { + > tr + { + padding: 2px; + height: 30px; + + > td + { + padding: 5px; + border: 1px solid #ddd; //TODO + + &:first-child + { + border-left: none; + } + + .jtable-edit-command-button + { + background: url('edit.png') no-repeat; + width: 16px; + height: 16px; + } + + .jtable-delete-command-button + { + background: url('delete.png') no-repeat; + width: 16px; + height: 16px; + } + } + + &.jtable-row-even + { + } + + &:hover + { + } + + &.jtable-row-selected + { + + } + + &.jtable-child-row + { + > td + { + padding: 2px 1px 2px 2px; + + div.jtable-toolbar + { + margin-right: 33px; + } + + .jtable + { + border: none; + } + + .jtable-title, + .jtable-bottom-panel + { + .border-radius(0px); + border: none; + } + } + } + } + } + } + + div.jtable-bottom-panel + { + padding: 1px; + min-height: 24px; + line-height: 16px; + font-size: 0.9em; + + div.jtable-right-area + { + padding: 2px; + } + + .jtable-page-list + { + margin: 3px; + + .jtable-page-number, + .jtable-page-number-space, + .jtable-page-number-first, + .jtable-page-number-last, + .jtable-page-number-previous, + .jtable-page-number-next, + .jtable-page-number-active + { + padding: 2px 5px; + } + + .jtable-page-number:hover, + .jtable-page-number-first:hover, + .jtable-page-number-last:hover, + .jtable-page-number-previous:hover, + .jtable-page-number-next:hover + { + } + + .jtable-page-number-active + { + } + + .jtable-page-number-disabled + { + //.opacity(0.5); + + &.jtable-page-number-active + { + //.opacity(1); + } + + &:hover + { + } + } + } + + span.jtable-page-size-change + { + vertical-align: middle; + } + + span.jtable-goto-page + { + vertical-align: middle; + } + + .jtable-page-info + { + display: inline-block; + padding: 4px; + } + + span.jtable-add-record + { + margin: 3px; + + a + { + font-weight: bold; + text-decoration: none; + + &:hover + { + text-decoration: underline; + } + } + } + } + + div.jtable-column-selection-container + { + .border-radius(3px); + .box-shadow(2px 2px 4px rgba(50, 51, 50, 0.75)); + } + } + + form.jtable-dialog-form + { + div.jtable-input-label + { + font-weight: bold; + } + } + + div.jtable-busy-message + { + .border-radius(3px); + .box-shadow(2px 2px 4px rgba(50, 51, 50, 0.75)); + padding: 5px; + color:none; + } +} + +//////////////////////////////////////////////////////////////// + +.jtable_jqueryui_base(); diff --git a/lib/themes/jqueryui/jtable_jqueryui.min.css b/lib/themes/jqueryui/jtable_jqueryui.min.css new file mode 100644 index 0000000..660e9d6 --- /dev/null +++ b/lib/themes/jqueryui/jtable_jqueryui.min.css @@ -0,0 +1 @@ +div.jtable-main-container{position:relative}div.jtable-main-container div.jtable-title{position:relative;text-align:left}div.jtable-main-container div.jtable-title .jtable-close-button{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute;display:inline-block;margin-right:5px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{position:relative;display:inline-block;margin:0 0 0 5px;cursor:pointer;font-size:.9em;padding:2px;vertical-align:bottom}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-icon{display:inline-block;margin:2px;vertical-align:middle;width:16px;height:16px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-text{display:inline-block;margin:2px;vertical-align:middle}div.jtable-main-container div.jtable-title .jtable-close-button+div.jtable-toolbar{margin-right:30px}div.jtable-main-container table.jtable{width:100%}div.jtable-main-container table.jtable thead th{vertical-align:middle;text-align:left}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container{position:relative}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{display:inline-block}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{position:absolute;height:24px;width:8px;right:-8px;top:-2px;z-index:2;cursor:col-resize}div.jtable-main-container table.jtable thead th.jtable-command-column-header{text-align:center}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting{text-align:center;width:1%}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting input{cursor:pointer}div.jtable-main-container table.jtable thead th.jtable-column-header-sortable{cursor:pointer}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button{margin:0;padding:0;cursor:pointer;border:none;display:inline}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button span{display:none}div.jtable-main-container table.jtable tbody tr>td.jtable-command-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column input{cursor:pointer}div.jtable-main-container table.jtable tbody tr.jtable-no-data-row{text-align:center}div.jtable-main-container>div.jtable-bottom-panel{position:relative;min-height:24px;text-align:left}div.jtable-main-container>div.jtable-bottom-panel div.jtable-right-area{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{display:inline-block}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{padding:2px 5px;display:inline-block;cursor:pointer}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{cursor:default}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page input[type=text]{width:22px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{vertical-align:middle}div.jtable-main-container div.jtable-column-resize-bar{opacity:.5;filter:alpha(opacity=50);position:absolute;display:none;width:1px;background-color:#000}div.jtable-main-container div.jtable-column-selection-container{position:absolute;display:none;border:1px solid #c8c8c8;background:#fff;color:#000;z-index:101;padding:5px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list{margin:0;padding:0;list-style:none}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li{margin:0;padding:2px 0}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span{position:relative;top:-1px;margin-left:4px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"]{cursor:pointer}form.jtable-dialog-form div.jtable-input-field-container{padding:2px 0 3px 0;border-bottom:1px solid #ddd}form.jtable-dialog-form div.jtable-input-field-container:last-child{border:none}form.jtable-dialog-form div.jtable-input-label{padding:2px 3px;font-size:1.1em;color:#666}form.jtable-dialog-form div.jtable-input{padding:2px}form.jtable-dialog-form div.jtable-date-input{}form.jtable-dialog-form div.jtable-text-input{}form.jtable-dialog-form span.jtable-option-text-clickable{position:relative;top:-2px}form.jtable-dialog-form div.jtable-textarea-input textarea{width:300px;min-height:60px}form.jtable-dialog-form div.jtable-checkbox-input span,form.jtable-dialog-form div.jtable-radio-input span{padding-left:4px}form.jtable-dialog-form div.jtable-radio-input input,form.jtable-dialog-form div.jtable-checkbox-input input,form.jtable-dialog-form span.jtable-option-text-clickable{cursor:pointer}div.jtable-busy-panel-background{opacity:.1;filter:alpha(opacity=50);z-index:998;position:absolute;background-color:#000}div.jtable-busy-panel-background.jtable-busy-panel-background-invisible{background-color:transparent}div.jtable-busy-message{cursor:wait;z-index:999;position:absolute;margin:5px}div.jtable-contextmenu-overlay{position:fixed;left:0;top:0;width:100%;height:100%;z-index:100}div.jtable-main-container div.jtable-title{position:relative;line-height:34px;padding-left:10px}div.jtable-main-container div.jtable-title .jtable-close-button{right:6px;top:6px;bottom:6px;position:absolute;opacity:.8;filter:alpha(opacity=50);background:url('close.png') no-repeat;width:22px;height:22px}div.jtable-main-container div.jtable-title .jtable-close-button:hover{opacity:1;filter:alpha(opacity=50)}div.jtable-main-container div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute;line-height:20px;margin-right:2px;margin-bottom:2px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon{background-image:url('add.png')}div.jtable-main-container table.jtable{border-collapse:collapse;border-spacing:0}div.jtable-main-container table.jtable thead th{padding:4px 3px 4px 6px}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container{height:20px}div.jtable-main-container table.jtable thead th.jtable-column-header span.jtable-column-header-text{margin-top:3px}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting{padding:5px}div.jtable-main-container table.jtable thead th.jtable-column-header-sortable div.jtable-column-header-container{background:url('column-sortable.png') no-repeat right}div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-asc div.jtable-column-header-container{background:url('column-asc.png') no-repeat right}div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-desc div.jtable-column-header-container{background:url('column-desc.png') no-repeat right}div.jtable-main-container table.jtable tbody>tr{padding:2px;height:30px}div.jtable-main-container table.jtable tbody>tr>td{padding:5px;border:1px solid #ddd}div.jtable-main-container table.jtable tbody>tr>td:first-child{border-left:none}div.jtable-main-container table.jtable tbody>tr>td .jtable-edit-command-button{background:url('edit.png') no-repeat;width:16px;height:16px}div.jtable-main-container table.jtable tbody>tr>td .jtable-delete-command-button{background:url('delete.png') no-repeat;width:16px;height:16px}div.jtable-main-container table.jtable tbody>tr.jtable-child-row>td{padding:2px 1px 2px 2px}div.jtable-main-container table.jtable tbody>tr.jtable-child-row>td div.jtable-toolbar{margin-right:33px}div.jtable-main-container table.jtable tbody>tr.jtable-child-row>td .jtable{border:none}div.jtable-main-container table.jtable tbody>tr.jtable-child-row>td .jtable-title,div.jtable-main-container table.jtable tbody>tr.jtable-child-row>td .jtable-bottom-panel{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border:none}div.jtable-main-container div.jtable-bottom-panel{padding:1px;min-height:24px;line-height:16px;font-size:.9em}div.jtable-main-container div.jtable-bottom-panel div.jtable-right-area{padding:2px}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list{margin:3px}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{padding:2px 5px}div.jtable-main-container div.jtable-bottom-panel span.jtable-page-size-change{vertical-align:middle}div.jtable-main-container div.jtable-bottom-panel span.jtable-goto-page{vertical-align:middle}div.jtable-main-container div.jtable-bottom-panel .jtable-page-info{display:inline-block;padding:4px}div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record{margin:3px}div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a{font-weight:bold;text-decoration:none}div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a:hover{text-decoration:underline}div.jtable-main-container div.jtable-column-selection-container{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:2px 2px 4px rgba(50,51,50,.75);-moz-box-shadow:2px 2px 4px rgba(50,51,50,.75);box-shadow:2px 2px 4px rgba(50,51,50,.75)}form.jtable-dialog-form div.jtable-input-label{font-weight:bold}div.jtable-busy-message{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:2px 2px 4px rgba(50,51,50,.75);-moz-box-shadow:2px 2px 4px rgba(50,51,50,.75);box-shadow:2px 2px 4px rgba(50,51,50,.75);padding:5px;color:none} \ No newline at end of file diff --git a/lib/themes/jqueryui/loading.gif b/lib/themes/jqueryui/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..e7c9c35abc1355f2959fac3eebf4e6e3428bf26b GIT binary patch literal 723 zcmZ?wbhEHb6kyXiYjQ?Mpf!MMTR%76%dzK zGIn)LXwY|!jcnN{D5cEE#H?cGk+a}h+O(6!s~$_Ko21V?TeRX~Xx&Qh{HgIhdkU7` z0~!JWivOgXi&7IyQd1PlGfOfQ60;I3a`F>X^fL3(@);C=vH+dIz@Ye_+s`#5*x50_ z)kx2PnGqpK%sh?ZnNPIX zC2es3CE9;xVzDKQRORYx-Mh5r1}Q>KVnH^^2ofIGHbp#h37ovc<5E&ksO!lsv5&0c z-cGyCn07cm@P#sC?}=w8Sd-^@t-ShG3g$OfWMj-B#;6p=wyfBcv@G*xYvS~b$BVY* z&Whzzc=NYud!pb2X1(dYD*ZD|nBsLA%*;+N*!Lia1L`C;WV7@kW<3GAXT_#>tBPb) ugSPNKFkSz9yG+4!?r&X3W)-%|{EE|MFky3!T)zYsK td + { + .jtable-command-button + { + .clear-margin-padding; + cursor: pointer; + border: none; + display: inline; + + span + { + display: none; + } + } + + &.jtable-command-column + { + .centered; + } + + &.jtable-selecting-column + { + .centered; + + input + { + cursor: pointer; + } + } + } + + &.jtable-no-data-row + { + text-align: center; + } + + &.jtable-row-created + { + } + + &.jtable-row-updated + { + } + + &.jtable-row-deleting + { + } + } + } + } + + > div.jtable-bottom-panel + { + position: relative; + min-height: 24px; + text-align: left; + + div.jtable-right-area + { + .dock(right); + } + + .jtable-page-list + { + display: inline-block; + + .jtable-page-number, + .jtable-page-number-space, + .jtable-page-number-first, + .jtable-page-number-last, + .jtable-page-number-previous, + .jtable-page-number-next, + .jtable-page-number-active + { + padding: 2px 5px; + display: inline-block; + cursor: pointer; + } + + .jtable-page-number-space, + .jtable-page-number-active, + .jtable-page-number-disabled + { + cursor: default; + } + } + + span.jtable-page-size-change + { + margin-left: 5px; + } + + span.jtable-goto-page + { + margin-left: 5px; + + input[type=text] + { + width:22px; + } + } + + span.jtable-page-info + { + vertical-align: middle; + } + } + + div.jtable-column-resize-bar + { + .opacity(0.5); + position: absolute; + display: none; + width: 1px; + background-color: #000; + } + + div.jtable-column-selection-container + { + position: absolute; + display: none; + border: 1px solid #C8C8C8; + background: #fff; + color: #000; + z-index: 101; + padding: 5px; + + ul.jtable-column-select-list + { + .clear-list-styles; + + li + { + margin: 0px; + padding: 2px 0px; + + label + { + span + { + position: relative; + top: -1px; + margin-left: 4px; + } + } + + input[type="checkbox"] + { + cursor: pointer; + } + } + } + } + } + + form.jtable-dialog-form + { + div.jtable-input-field-container + { + padding: 2px 0px 3px 0px; + border-bottom: 1px solid #ddd; + + &:last-child + { + border: none; + } + } + + div.jtable-input-label + { + padding: 2px 3px; + font-size: 1.1em; + color: #666; + } + + div.jtable-input + { + padding: 2px; + } + + div.jtable-date-input + { + /* No additional style */ + } + + div.jtable-text-input + { + /* No additional style */ + } + + span.jtable-option-text-clickable + { + position: relative; + top: -2px; + } + + div.jtable-textarea-input textarea + { + width: 300px; + min-height: 60px; + } + + div.jtable-password-input + { + } + + div.jtable-dropdown-input + { + } + + div.jtable-radiobuttonlist-input + { + } + + div.jtable-checkbox-input span, + div.jtable-radio-input span + { + padding-left: 4px; + } + + div.jtable-radio-input input, + div.jtable-checkbox-input input, + span.jtable-option-text-clickable + { + cursor: pointer; + } + } + + form.jtable-create-form + { + } + + form.jtable-edit-form + { + } + + div.jtable-busy-panel-background + { + .opacity(0.1); + z-index: 998; + position: absolute; + background-color: #000; + + &.jtable-busy-panel-background-invisible + { + background-color: transparent; + } + } + + div.jtable-busy-message + { + cursor: wait; + z-index: 999; + position: absolute; + margin: 5px; + } + + div.jtable-contextmenu-overlay + { + position: fixed; + left: 0px; + top: 0px; + width: 100%; + height: 100%; + z-index: 100; + } + + .jtable-delete-confirm-message + { + } + + .jtable-row-ready-to-remove + { + } +} diff --git a/lib/themes/lightcolor/add.png b/lib/themes/lightcolor/add.png new file mode 100644 index 0000000000000000000000000000000000000000..08221ece4ddf2557c9902c5eecd3c55ce08d3587 GIT binary patch literal 482 zcmV<80UiE{P)M?#z-t962!6qm`mEeNFD+)uEUD4?0eP^STs%Nd2_658y~Ywoq)&8 Y9i3*Hpp6w4ZvX%Q07*qoM6N<$f<76;D*ylh literal 0 HcmV?d00001 diff --git a/lib/themes/lightcolor/bg-thead.png b/lib/themes/lightcolor/bg-thead.png new file mode 100644 index 0000000000000000000000000000000000000000..a7b6969ded5f9d564126d4a7a4a5c60ab0c915ea GIT binary patch literal 2811 zcmVKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0000cNkl td .jtable-command-button { + margin: 0px; + padding: 0px; + cursor: pointer; + border: none; + display: inline; +} +div.jtable-main-container table.jtable tbody tr > td .jtable-command-button span { + display: none; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-command-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column input { + cursor: pointer; +} +div.jtable-main-container table.jtable tbody tr.jtable-no-data-row { + text-align: center; +} +div.jtable-main-container > div.jtable-bottom-panel { + position: relative; + min-height: 24px; + text-align: left; +} +div.jtable-main-container > div.jtable-bottom-panel div.jtable-right-area { + right: 0px; + top: 0px; + bottom: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + display: inline-block; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + padding: 2px 5px; + display: inline-block; + cursor: pointer; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page input[type=text] { + width: 22px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + vertical-align: middle; +} +div.jtable-main-container div.jtable-column-resize-bar { + opacity: 0.5; + filter: alpha(opacity=50); + position: absolute; + display: none; + width: 1px; + background-color: #000; +} +div.jtable-main-container div.jtable-column-selection-container { + position: absolute; + display: none; + border: 1px solid #C8C8C8; + background: #fff; + color: #000; + z-index: 101; + padding: 5px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list { + margin: 0px; + padding: 0px; + list-style: none; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li { + margin: 0px; + padding: 2px 0px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span { + position: relative; + top: -1px; + margin-left: 4px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"] { + cursor: pointer; +} +form.jtable-dialog-form div.jtable-input-field-container { + padding: 2px 0px 3px 0px; + border-bottom: 1px solid #ddd; +} +form.jtable-dialog-form div.jtable-input-field-container:last-child { + border: none; +} +form.jtable-dialog-form div.jtable-input-label { + padding: 2px 3px; + font-size: 1.1em; + color: #666; +} +form.jtable-dialog-form div.jtable-input { + padding: 2px; +} +form.jtable-dialog-form div.jtable-date-input { + /* No additional style */ + +} +form.jtable-dialog-form div.jtable-text-input { + /* No additional style */ + +} +form.jtable-dialog-form span.jtable-option-text-clickable { + position: relative; + top: -2px; +} +form.jtable-dialog-form div.jtable-textarea-input textarea { + width: 300px; + min-height: 60px; +} +form.jtable-dialog-form div.jtable-checkbox-input span, +form.jtable-dialog-form div.jtable-radio-input span { + padding-left: 4px; +} +form.jtable-dialog-form div.jtable-radio-input input, +form.jtable-dialog-form div.jtable-checkbox-input input, +form.jtable-dialog-form span.jtable-option-text-clickable { + cursor: pointer; +} +div.jtable-busy-panel-background { + opacity: 0.1; + filter: alpha(opacity=50); + z-index: 998; + position: absolute; + background-color: #000; +} +div.jtable-busy-panel-background.jtable-busy-panel-background-invisible { + background-color: transparent; +} +div.jtable-busy-message { + cursor: wait; + z-index: 999; + position: absolute; + margin: 5px; +} +div.jtable-contextmenu-overlay { + position: fixed; + left: 0px; + top: 0px; + width: 100%; + height: 100%; + z-index: 100; +} +div.jtable-main-container { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; + font-weight: 400; + color: #222; +} +div.jtable-main-container div.jtable-title { + -webkit-border-radius: 3px 3px 0 0; + -moz-border-radius: 3px 3px 0 0; + border-radius: 3px 3px 0 0; + position: relative; + line-height: 34px; + box-shadow: inset 0 1px 0 0 rgba(255, 255, 255, 0.5); + padding-left: 10px; + border: 1px solid; +} +div.jtable-main-container div.jtable-title div.jtable-title-text { + font-weight: bold; +} +div.jtable-main-container div.jtable-title .jtable-close-button { + right: 6px; + top: 6px; + bottom: 6px; + position: absolute; + opacity: 0.8; + filter: alpha(opacity=50); + background: url('../../lightcolor/close.png') no-repeat; + width: 22px; + height: 22px; +} +div.jtable-main-container div.jtable-title .jtable-close-button:hover { + opacity: 1; + filter: alpha(opacity=50); +} +div.jtable-main-container div.jtable-title div.jtable-toolbar { + bottom: 0px; + right: 0px; + position: absolute; + line-height: 26px; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon { + background-image: url('../../lightcolor/add.png'); +} +div.jtable-main-container table.jtable { + border-collapse: collapse; + border-spacing: 0; + border: 1px solid #C8C8C8; +} +div.jtable-main-container table.jtable thead { + background: url('../../lightcolor/bg-thead.png') repeat-x scroll top left #dddddd; + border-top: 1px solid #fff; + border-bottom: 1px solid #C8C8C8; +} +div.jtable-main-container table.jtable thead th { + padding: 4px 3px 4px 6px; + border-left: 1px solid #fff; + border-right: 1px solid #C8C8C8; +} +div.jtable-main-container table.jtable thead th:first-child { + border-left: none; +} +div.jtable-main-container table.jtable thead thth:last-child { + border-right: none; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container { + height: 20px; +} +div.jtable-main-container table.jtable thead th.jtable-column-header span.jtable-column-header-text { + margin-top: 3px; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-selecting { + padding: 5px; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sortable div.jtable-column-header-container { + background: url('../../lightcolor/column-sortable.png') no-repeat right; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-asc div.jtable-column-header-container { + background: url('../../lightcolor/column-asc.png') no-repeat right; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-desc div.jtable-column-header-container { + background: url('../../lightcolor/column-desc.png') no-repeat right; +} +div.jtable-main-container table.jtable tbody > tr { + padding: 2px; + background: #f8f8f8; + height: 30px; +} +div.jtable-main-container table.jtable tbody > tr > td { + padding: 5px; + border-left: 1px dotted #bebebe; +} +div.jtable-main-container table.jtable tbody > tr > td:first-child { + border-left: none; +} +div.jtable-main-container table.jtable tbody > tr > td .jtable-edit-command-button { + background: url('../../lightcolor/edit.png') no-repeat; + width: 16px; + height: 16px; +} +div.jtable-main-container table.jtable tbody > tr > td .jtable-delete-command-button { + background: url('../../lightcolor/delete.png') no-repeat; + width: 16px; + height: 16px; +} +div.jtable-main-container table.jtable tbody > tr.jtable-row-even { + background: #f0f0f0; +} +div.jtable-main-container table.jtable tbody > tr:hover { + background: #e8eaef; +} +div.jtable-main-container table.jtable tbody > tr.jtable-row-selected { + -webkit-text-shadow: 0 1px 0 #333333; + text-shadow: 0 1px 0 #333333; + color: #FCFCFC; +} +div.jtable-main-container table.jtable tbody > tr.jtable-child-row > td { + background-color: #bbb; + padding: 2px 1px 2px 2px; +} +div.jtable-main-container table.jtable tbody > tr.jtable-child-row > td .jtable { + border: none; + border-bottom: 1px solid #C8C8C8; +} +div.jtable-main-container table.jtable tbody > tr.jtable-child-row > td .jtable-title, +div.jtable-main-container table.jtable tbody > tr.jtable-child-row > td .jtable-bottom-panel { + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + border-radius: 0px; + border: none; +} +div.jtable-main-container div.jtable-bottom-panel { + -webkit-border-radius: 0px 0px 3px 3px; + -moz-border-radius: 0px 0px 3px 3px; + border-radius: 0px 0px 3px 3px; + padding: 1px; + background: #fff; + border: 1px solid #C8C8C8; + border-top: none; + min-height: 24px; + line-height: 16px; + font-size: 0.9em; +} +div.jtable-main-container div.jtable-bottom-panel div.jtable-right-area { + padding: 2px; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list { + margin: 2px; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + -webkit-text-shadow: 0 1px 0 #ffffff; + text-shadow: 0 1px 0 #ffffff; + background-color: #ebebeb; + border-style: solid; + border-width: 1px; + border-color: #ffffff #b5b5b5 #b5b5b5 #ffffff; + padding: 2px 5px; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover { + background-color: #ddd; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + -webkit-text-shadow: 0 1px 0 #666666; + text-shadow: 0 1px 0 #666666; + color: #FCFCFC; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled.jtable-page-number-active { + opacity: 1; + filter: alpha(opacity=50); +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover { + background-color: #ebebeb; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-info { + display: inline-block; + padding: 4px; +} +div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record { + margin: 3px; +} +div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a { + font-weight: bold; + text-decoration: none; +} +div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a:hover { + text-decoration: underline; +} +div.jtable-main-container div.jtable-column-selection-container { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + -moz-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); +} +form.jtable-dialog-form { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; + font-weight: 400; +} +form.jtable-dialog-form div.jtable-input-label { + font-weight: bold; +} +div.jtable-busy-message { + -webkit-text-shadow: 0 1px 0 #333333; + text-shadow: 0 1px 0 #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + -moz-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + color: #fff; + border: 1px solid; + padding: 3px 5px 5px 27px; + background: url('../../lightcolor/blue/loading.gif') no-repeat; + background-position: 5px; +} +div.jtable-main-container div.jtable-title { + background: #78b1ed; + background: -moz-linear-gradient(top, #78b1ed 0%, #417bb5 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #78b1ed), color-stop(100%, #417bb5)); + background: -webkit-linear-gradient(top, #78b1ed 0%, #417bb5 100%); + background: -o-linear-gradient(top, #78b1ed 0%, #417bb5 100%); + background: -ms-linear-gradient(top, #78b1ed 0%, #417bb5 100%); + background: linear-gradient(to bottom, #78b1ed 0%, #417bb5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#78b1ed', endColorstr='#417bb5', GradientType=0); + border-color: #2B5177; +} +div.jtable-main-container div.jtable-title div.jtable-title-text { + -webkit-text-shadow: 0 1px 0 #666666; + text-shadow: 0 1px 0 #666666; + color: #fff; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item { + color: white; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover { + background-color: #417bb5; +} +div.jtable-main-container table.jtable tbody > tr.jtable-row-selected, +div.jtable-main-container table.jtable tbody > tr.jtable-row-selected:hover { + background-color: #5f9cdc; +} +div.jtable-main-container table.jtable tbody > tr.jtable-row-created, +div.jtable-main-container table.jtable tbody > tr.jtable-row-updated, +div.jtable-main-container table.jtable tbody > tr.jtable-row-deleting { + background-color: #5f9cdc; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active:hover { + background-color: #2b5177; + border-color: #092f55; +} +div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a { + color: #2B5177; +} +div.jtable-busy-message { + border-color: #2B5177; + background-color: #78B1ED; +} diff --git a/lib/themes/lightcolor/blue/jtable.less b/lib/themes/lightcolor/blue/jtable.less new file mode 100644 index 0000000..b50726b --- /dev/null +++ b/lib/themes/lightcolor/blue/jtable.less @@ -0,0 +1,90 @@ +/* jTable light color theme - Blue + * Created by Halil İbrahim Kalkan + * http://www.jtable.org + */ + +@import "../jtable_lightcolor_base.less"; + +@theme-folder: 'blue'; + +.jtable_lightcolor_base(@theme-folder); + +div.jtable-main-container +{ + div.jtable-title + { + .vertical-gradient(#78b1ed,#417bb5); + border-color: #2B5177; + + div.jtable-title-text + { + .text-shadow(0 1px 0 #666); + color: #fff; + } + + div.jtable-toolbar + { + span.jtable-toolbar-item + { + color: white; + + &.jtable-toolbar-item-hover + { + background-color: #417bb5; + } + } + } + } + + table.jtable + { + tbody + { + > tr + { + @highlight-color:#5f9cdc; + + &.jtable-row-selected, + &.jtable-row-selected:hover + { + background-color: @highlight-color; + } + + &.jtable-row-created, + &.jtable-row-updated, + &.jtable-row-deleting + { + background-color: @highlight-color; + } + } + } + } + + div.jtable-bottom-panel + { + .jtable-page-list + { + .jtable-page-number-active,.jtable-page-number-active:hover + { + @bgcolor: #2B5177; + + background-color: @bgcolor; + border-color: @bgcolor - #222; + } + } + + span.jtable-add-record + { + a + { + color: #2B5177; + } + } + } +} + +div.jtable-busy-message +{ + border-color: #2B5177; + background-color: #78B1ED; +} \ No newline at end of file diff --git a/lib/themes/lightcolor/blue/jtable.min.css b/lib/themes/lightcolor/blue/jtable.min.css new file mode 100644 index 0000000..7b18df5 --- /dev/null +++ b/lib/themes/lightcolor/blue/jtable.min.css @@ -0,0 +1 @@ +div.jtable-main-container{position:relative}div.jtable-main-container div.jtable-title{position:relative;text-align:left}div.jtable-main-container div.jtable-title .jtable-close-button{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute;display:inline-block;margin-right:5px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{position:relative;display:inline-block;margin:0 0 0 5px;cursor:pointer;font-size:.9em;padding:2px;vertical-align:bottom}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-icon{display:inline-block;margin:2px;vertical-align:middle;width:16px;height:16px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-text{display:inline-block;margin:2px;vertical-align:middle}div.jtable-main-container div.jtable-title .jtable-close-button+div.jtable-toolbar{margin-right:30px}div.jtable-main-container table.jtable{width:100%}div.jtable-main-container table.jtable thead th{vertical-align:middle;text-align:left}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container{position:relative}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{display:inline-block}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{position:absolute;height:24px;width:8px;right:-8px;top:-2px;z-index:2;cursor:col-resize}div.jtable-main-container table.jtable thead th.jtable-command-column-header{text-align:center}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting{text-align:center;width:1%}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting input{cursor:pointer}div.jtable-main-container table.jtable thead th.jtable-column-header-sortable{cursor:pointer}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button{margin:0;padding:0;cursor:pointer;border:none;display:inline}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button span{display:none}div.jtable-main-container table.jtable tbody tr>td.jtable-command-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column input{cursor:pointer}div.jtable-main-container table.jtable tbody tr.jtable-no-data-row{text-align:center}div.jtable-main-container>div.jtable-bottom-panel{position:relative;min-height:24px;text-align:left}div.jtable-main-container>div.jtable-bottom-panel div.jtable-right-area{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{display:inline-block}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{padding:2px 5px;display:inline-block;cursor:pointer}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{cursor:default}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page input[type=text]{width:22px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{vertical-align:middle}div.jtable-main-container div.jtable-column-resize-bar{opacity:.5;filter:alpha(opacity=50);position:absolute;display:none;width:1px;background-color:#000}div.jtable-main-container div.jtable-column-selection-container{position:absolute;display:none;border:1px solid #c8c8c8;background:#fff;color:#000;z-index:101;padding:5px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list{margin:0;padding:0;list-style:none}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li{margin:0;padding:2px 0}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span{position:relative;top:-1px;margin-left:4px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"]{cursor:pointer}form.jtable-dialog-form div.jtable-input-field-container{padding:2px 0 3px 0;border-bottom:1px solid #ddd}form.jtable-dialog-form div.jtable-input-field-container:last-child{border:none}form.jtable-dialog-form div.jtable-input-label{padding:2px 3px;font-size:1.1em;color:#666}form.jtable-dialog-form div.jtable-input{padding:2px}form.jtable-dialog-form div.jtable-date-input{}form.jtable-dialog-form div.jtable-text-input{}form.jtable-dialog-form span.jtable-option-text-clickable{position:relative;top:-2px}form.jtable-dialog-form div.jtable-textarea-input textarea{width:300px;min-height:60px}form.jtable-dialog-form div.jtable-checkbox-input span,form.jtable-dialog-form div.jtable-radio-input span{padding-left:4px}form.jtable-dialog-form div.jtable-radio-input input,form.jtable-dialog-form div.jtable-checkbox-input input,form.jtable-dialog-form span.jtable-option-text-clickable{cursor:pointer}div.jtable-busy-panel-background{opacity:.1;filter:alpha(opacity=50);z-index:998;position:absolute;background-color:#000}div.jtable-busy-panel-background.jtable-busy-panel-background-invisible{background-color:transparent}div.jtable-busy-message{cursor:wait;z-index:999;position:absolute;margin:5px}div.jtable-contextmenu-overlay{position:fixed;left:0;top:0;width:100%;height:100%;z-index:100}div.jtable-main-container{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px;font-weight:400;color:#222}div.jtable-main-container div.jtable-title{-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;position:relative;line-height:34px;box-shadow:inset 0 1px 0 0 rgba(255,255,255,.5);padding-left:10px;border:1px solid}div.jtable-main-container div.jtable-title div.jtable-title-text{font-weight:bold}div.jtable-main-container div.jtable-title .jtable-close-button{right:6px;top:6px;bottom:6px;position:absolute;opacity:.8;filter:alpha(opacity=50);background:url('../../lightcolor/close.png') no-repeat;width:22px;height:22px}div.jtable-main-container div.jtable-title .jtable-close-button:hover{opacity:1;filter:alpha(opacity=50)}div.jtable-main-container div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute;line-height:26px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon{background-image:url('../../lightcolor/add.png')}div.jtable-main-container table.jtable{border-collapse:collapse;border-spacing:0;border:1px solid #c8c8c8}div.jtable-main-container table.jtable thead{background:url('../../lightcolor/bg-thead.png') repeat-x scroll top left #ddd;border-top:1px solid #fff;border-bottom:1px solid #c8c8c8}div.jtable-main-container table.jtable thead th{padding:4px 3px 4px 6px;border-left:1px solid #fff;border-right:1px solid #c8c8c8}div.jtable-main-container table.jtable thead th:first-child{border-left:none}div.jtable-main-container table.jtable thead thth:last-child{border-right:none}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container{height:20px}div.jtable-main-container table.jtable thead th.jtable-column-header span.jtable-column-header-text{margin-top:3px}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting{padding:5px}div.jtable-main-container table.jtable thead th.jtable-column-header-sortable div.jtable-column-header-container{background:url('../../lightcolor/column-sortable.png') no-repeat right}div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-asc div.jtable-column-header-container{background:url('../../lightcolor/column-asc.png') no-repeat right}div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-desc div.jtable-column-header-container{background:url('../../lightcolor/column-desc.png') no-repeat right}div.jtable-main-container table.jtable tbody>tr{padding:2px;background:#f8f8f8;height:30px}div.jtable-main-container table.jtable tbody>tr>td{padding:5px;border-left:1px dotted #bebebe}div.jtable-main-container table.jtable tbody>tr>td:first-child{border-left:none}div.jtable-main-container table.jtable tbody>tr>td .jtable-edit-command-button{background:url('../../lightcolor/edit.png') no-repeat;width:16px;height:16px}div.jtable-main-container table.jtable tbody>tr>td .jtable-delete-command-button{background:url('../../lightcolor/delete.png') no-repeat;width:16px;height:16px}div.jtable-main-container table.jtable tbody>tr.jtable-row-even{background:#f0f0f0}div.jtable-main-container table.jtable tbody>tr:hover{background:#e8eaef}div.jtable-main-container table.jtable tbody>tr.jtable-row-selected{-webkit-text-shadow:0 1px 0 #333;text-shadow:0 1px 0 #333;color:#fcfcfc}div.jtable-main-container table.jtable tbody>tr.jtable-child-row>td{background-color:#bbb;padding:2px 1px 2px 2px}div.jtable-main-container table.jtable tbody>tr.jtable-child-row>td .jtable{border:none;border-bottom:1px solid #c8c8c8}div.jtable-main-container table.jtable tbody>tr.jtable-child-row>td .jtable-title,div.jtable-main-container table.jtable tbody>tr.jtable-child-row>td .jtable-bottom-panel{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border:none}div.jtable-main-container div.jtable-bottom-panel{-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;padding:1px;background:#fff;border:1px solid #c8c8c8;border-top:none;min-height:24px;line-height:16px;font-size:.9em}div.jtable-main-container div.jtable-bottom-panel div.jtable-right-area{padding:2px}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list{margin:2px}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff;background-color:#ebebeb;border-style:solid;border-width:1px;border-color:#fff #b5b5b5 #b5b5b5 #fff;padding:2px 5px}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover{background-color:#ddd}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{-webkit-text-shadow:0 1px 0 #666;text-shadow:0 1px 0 #666;color:#fcfcfc}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{opacity:.5;filter:alpha(opacity=50)}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled.jtable-page-number-active{opacity:1;filter:alpha(opacity=50)}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover{background-color:#ebebeb}div.jtable-main-container div.jtable-bottom-panel .jtable-page-info{display:inline-block;padding:4px}div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record{margin:3px}div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a{font-weight:bold;text-decoration:none}div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a:hover{text-decoration:underline}div.jtable-main-container div.jtable-column-selection-container{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:2px 2px 4px rgba(50,51,50,.75);-moz-box-shadow:2px 2px 4px rgba(50,51,50,.75);box-shadow:2px 2px 4px rgba(50,51,50,.75)}form.jtable-dialog-form{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px;font-weight:400}form.jtable-dialog-form div.jtable-input-label{font-weight:bold}div.jtable-busy-message{-webkit-text-shadow:0 1px 0 #333;text-shadow:0 1px 0 #333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:2px 2px 4px rgba(50,51,50,.75);-moz-box-shadow:2px 2px 4px rgba(50,51,50,.75);box-shadow:2px 2px 4px rgba(50,51,50,.75);color:#fff;border:1px solid;padding:3px 5px 5px 27px;background:url('../../lightcolor/blue/loading.gif') no-repeat;background-position:5px}div.jtable-main-container div.jtable-title{background:#78b1ed;background:-moz-linear-gradient(top,#78b1ed 0%,#417bb5 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#78b1ed),color-stop(100%,#417bb5));background:-webkit-linear-gradient(top,#78b1ed 0%,#417bb5 100%);background:-o-linear-gradient(top,#78b1ed 0%,#417bb5 100%);background:-ms-linear-gradient(top,#78b1ed 0%,#417bb5 100%);background:linear-gradient(to bottom,#78b1ed 0%,#417bb5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#78b1ed',endColorstr='#417bb5',GradientType=0);border-color:#2b5177}div.jtable-main-container div.jtable-title div.jtable-title-text{-webkit-text-shadow:0 1px 0 #666;text-shadow:0 1px 0 #666;color:#fff}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{color:#fff}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover{background-color:#417bb5}div.jtable-main-container table.jtable tbody>tr.jtable-row-selected,div.jtable-main-container table.jtable tbody>tr.jtable-row-selected:hover{background-color:#5f9cdc}div.jtable-main-container table.jtable tbody>tr.jtable-row-created,div.jtable-main-container table.jtable tbody>tr.jtable-row-updated,div.jtable-main-container table.jtable tbody>tr.jtable-row-deleting{background-color:#5f9cdc}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active:hover{background-color:#2b5177;border-color:#092f55}div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a{color:#2b5177}div.jtable-busy-message{border-color:#2b5177;background-color:#78b1ed} \ No newline at end of file diff --git a/lib/themes/lightcolor/blue/loading.gif b/lib/themes/lightcolor/blue/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..e7c9c35abc1355f2959fac3eebf4e6e3428bf26b GIT binary patch literal 723 zcmZ?wbhEHb6kyXiYjQ?Mpf!MMTR%76%dzK zGIn)LXwY|!jcnN{D5cEE#H?cGk+a}h+O(6!s~$_Ko21V?TeRX~Xx&Qh{HgIhdkU7` z0~!JWivOgXi&7IyQd1PlGfOfQ60;I3a`F>X^fL3(@);C=vH+dIz@Ye_+s`#5*x50_ z)kx2PnGqpK%sh?ZnNPIX zC2es3CE9;xVzDKQRORYx-Mh5r1}Q>KVnH^^2ofIGHbp#h37ovc<5E&ksO!lsv5&0c z-cGyCn07cm@P#sC?}=w8Sd-^@t-ShG3g$OfWMj-B#;6p=wyfBcv@G*xYvS~b$BVY* z&Whzzc=NYud!pb2X1(dYD*ZD|nBsLA%*;+N*!Lia1L`C;WV7@kW<3GAXT_#>tBPb) ugSPNKFkSz9yG+4!?r&X3W)-%|{EE|MFky3!T)zYsK^ZR)!R8O40?ozyyO0p&_`jF+dmXzueDp3bWJf#et>CrYZlg@uU5q9`aR;Gk4K2W0aFK|nH*fFMbn z{o49^NHEPNV!pGFCGOw!_V&uZ#p7chcVTr_*YIF-1D0W6X>pNnkV+^K?NpHK;UR&Q#Uzf|Vrm8I_F^rOKjH#Q9 zTUuV`z^vT7ygYPwcjt^_-$O$~SXo`g@#DqF5M$lQLKY=rD*6d>mNU*8x>HjX>^^&j z1i8($^d9kIVeuYDM@J#cG6$51l_-iB7#zgHy&q9rQVhxoG)*H@)BIkNCExRtXPFU7 z9%%$H=Bldx$qtA_BK)2K=JaE%>0{7=VI(Aa=CIo-Au_VM?t5;YX+{_br2>+Tw6fcv zP^>D?yo0{JKF;*T!8EV0dl&Io4Egzaa5(Ic36$w9NTQNsOuIj19O(FRozkf^YHQAM z_gPNa7#JMja$Nc33jf_sabyzB&3_M<+r>!<#9V@PJI8qJtFc+rGUtdiR7FKqWhFW~ zI&z>RBO_$gGVZUf;?}J%bIjY?+E7(>mYBzRG)c1gyLYFz4&>M}tsCs2APM|rB`Nq> z>Jh`k!&q7gq1^9BdAXmC?-~Mu0AItr*x1 zn$UxvHc?S=5;oG^Cdtfo>^u(Rjo07AI&Bh9#t6_LllP`#(PY!~^mO(B<3CKqCCYKg zP7dqDU}JNQa(awAo=;iMqm#+xDK0*S`|B%6D=Ahf;_-M$$>^8&L0%l88)N;f+Vv4OSqPuTf`9@=nK0rZ_I7l9{H-$;rf_jlQw5QFi9puG(z&4~XG8 zhr_`$%3L=MlOG6G)8-Uay%8J_e*2H!Ap4`GrMbcq#1>JIoMcjjq8TxCR^_n?3yDLVrVc?H$@6YB5(BxPq}0YHEO0D!h$;x*Hg=Kufz07*qo IM6N<$g7z7Pu>b%7 literal 0 HcmV?d00001 diff --git a/lib/themes/lightcolor/column-desc.png b/lib/themes/lightcolor/column-desc.png new file mode 100644 index 0000000000000000000000000000000000000000..d991088192cc4a64668dd8b57769bc488a90121b GIT binary patch literal 349 zcmV-j0iyniP)mBu>caE9qJNhf(8H;@c}7GAZA39 z0vRZV*8reqHmJXuakxwZJv^9@G_yec%}F58<$!9rU;->ilDt671H^v_L_NrLf|Gr^Z&n@*$F$26AEGxQ_!~U3TXc& z05OT{gC6IqF98TqNzQ_>ICGcwQ$Z8dmG6uciMtArRK|7X%c|8t%P0UjB}vl)_`S1;aH0!45Irsar%1~|UT3c5&9r3KO3$RlrIS=QuZ23+iL zV-MslnE(2XE3h_@Mc)%1yJ-aoJa98`(2&J&XXKoWi$ua1HwBlk&{DSPzRD!-)jqL} t5HS7)jjiNf6vS{5z3Y+!@4-`m0RVdZO_6Gl>{$Q+002ovPDHLkV1jq4jbP0l+XkKw!<{Z literal 0 HcmV?d00001 diff --git a/lib/themes/lightcolor/edit.png b/lib/themes/lightcolor/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..cd77c3008b7f0b1c6286ce52f38f9f0990c64368 GIT binary patch literal 590 zcmV-U0nlaF@BtDk)`UjWG*m4{RHzFr1gg*&n#{f9DwpP^2Y#5x zIp_b+j0TWQCf6*>s?q{N2z_~ZIosFQcL?|i5b5phIOVCH?H+%23&SuDN-0&lDwoTu zP$;NaES3RW023p_$14-j-~KJeZU>-RbzYBBsYEy&_E##E=cdw=d-wO8e|Y^|`SY(; z&GA36!{ICu5u}tVl}f3}i4mo~237i! zQ@J~xj{qG&)H*4p+LrwDjl+8qGF)S5PwgSD3SgMrfDLCXyV!i)oK+X1aql-bbH6hP8FDO4igFu*pJyNrfndl zWNGO;-QFL3NGvj~MF|~^AcSZsv<*ztv?o~mlHqph6RV!f90?r*pmtw_QmXFEo* td .jtable-command-button { + margin: 0px; + padding: 0px; + cursor: pointer; + border: none; + display: inline; +} +div.jtable-main-container table.jtable tbody tr > td .jtable-command-button span { + display: none; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-command-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column input { + cursor: pointer; +} +div.jtable-main-container table.jtable tbody tr.jtable-no-data-row { + text-align: center; +} +div.jtable-main-container > div.jtable-bottom-panel { + position: relative; + min-height: 24px; + text-align: left; +} +div.jtable-main-container > div.jtable-bottom-panel div.jtable-right-area { + right: 0px; + top: 0px; + bottom: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + display: inline-block; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + padding: 2px 5px; + display: inline-block; + cursor: pointer; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page input[type=text] { + width: 22px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + vertical-align: middle; +} +div.jtable-main-container div.jtable-column-resize-bar { + opacity: 0.5; + filter: alpha(opacity=50); + position: absolute; + display: none; + width: 1px; + background-color: #000; +} +div.jtable-main-container div.jtable-column-selection-container { + position: absolute; + display: none; + border: 1px solid #C8C8C8; + background: #fff; + color: #000; + z-index: 101; + padding: 5px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list { + margin: 0px; + padding: 0px; + list-style: none; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li { + margin: 0px; + padding: 2px 0px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span { + position: relative; + top: -1px; + margin-left: 4px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"] { + cursor: pointer; +} +form.jtable-dialog-form div.jtable-input-field-container { + padding: 2px 0px 3px 0px; + border-bottom: 1px solid #ddd; +} +form.jtable-dialog-form div.jtable-input-field-container:last-child { + border: none; +} +form.jtable-dialog-form div.jtable-input-label { + padding: 2px 3px; + font-size: 1.1em; + color: #666; +} +form.jtable-dialog-form div.jtable-input { + padding: 2px; +} +form.jtable-dialog-form div.jtable-date-input { + /* No additional style */ + +} +form.jtable-dialog-form div.jtable-text-input { + /* No additional style */ + +} +form.jtable-dialog-form span.jtable-option-text-clickable { + position: relative; + top: -2px; +} +form.jtable-dialog-form div.jtable-textarea-input textarea { + width: 300px; + min-height: 60px; +} +form.jtable-dialog-form div.jtable-checkbox-input span, +form.jtable-dialog-form div.jtable-radio-input span { + padding-left: 4px; +} +form.jtable-dialog-form div.jtable-radio-input input, +form.jtable-dialog-form div.jtable-checkbox-input input, +form.jtable-dialog-form span.jtable-option-text-clickable { + cursor: pointer; +} +div.jtable-busy-panel-background { + opacity: 0.1; + filter: alpha(opacity=50); + z-index: 998; + position: absolute; + background-color: #000; +} +div.jtable-busy-panel-background.jtable-busy-panel-background-invisible { + background-color: transparent; +} +div.jtable-busy-message { + cursor: wait; + z-index: 999; + position: absolute; + margin: 5px; +} +div.jtable-contextmenu-overlay { + position: fixed; + left: 0px; + top: 0px; + width: 100%; + height: 100%; + z-index: 100; +} +div.jtable-main-container { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; + font-weight: 400; + color: #222; +} +div.jtable-main-container div.jtable-title { + -webkit-border-radius: 3px 3px 0 0; + -moz-border-radius: 3px 3px 0 0; + border-radius: 3px 3px 0 0; + position: relative; + line-height: 34px; + box-shadow: inset 0 1px 0 0 rgba(255, 255, 255, 0.5); + padding-left: 10px; + border: 1px solid; +} +div.jtable-main-container div.jtable-title div.jtable-title-text { + font-weight: bold; +} +div.jtable-main-container div.jtable-title .jtable-close-button { + right: 6px; + top: 6px; + bottom: 6px; + position: absolute; + opacity: 0.8; + filter: alpha(opacity=50); + background: url('../../lightcolor/close.png') no-repeat; + width: 22px; + height: 22px; +} +div.jtable-main-container div.jtable-title .jtable-close-button:hover { + opacity: 1; + filter: alpha(opacity=50); +} +div.jtable-main-container div.jtable-title div.jtable-toolbar { + bottom: 0px; + right: 0px; + position: absolute; + line-height: 26px; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon { + background-image: url('../../lightcolor/add.png'); +} +div.jtable-main-container table.jtable { + border-collapse: collapse; + border-spacing: 0; + border: 1px solid #C8C8C8; +} +div.jtable-main-container table.jtable thead { + background: url('../../lightcolor/bg-thead.png') repeat-x scroll top left #dddddd; + border-top: 1px solid #fff; + border-bottom: 1px solid #C8C8C8; +} +div.jtable-main-container table.jtable thead th { + padding: 4px 3px 4px 6px; + border-left: 1px solid #fff; + border-right: 1px solid #C8C8C8; +} +div.jtable-main-container table.jtable thead th:first-child { + border-left: none; +} +div.jtable-main-container table.jtable thead thth:last-child { + border-right: none; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container { + height: 20px; +} +div.jtable-main-container table.jtable thead th.jtable-column-header span.jtable-column-header-text { + margin-top: 3px; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-selecting { + padding: 5px; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sortable div.jtable-column-header-container { + background: url('../../lightcolor/column-sortable.png') no-repeat right; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-asc div.jtable-column-header-container { + background: url('../../lightcolor/column-asc.png') no-repeat right; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-desc div.jtable-column-header-container { + background: url('../../lightcolor/column-desc.png') no-repeat right; +} +div.jtable-main-container table.jtable tbody > tr { + padding: 2px; + background: #f8f8f8; + height: 30px; +} +div.jtable-main-container table.jtable tbody > tr > td { + padding: 5px; + border-left: 1px dotted #bebebe; +} +div.jtable-main-container table.jtable tbody > tr > td:first-child { + border-left: none; +} +div.jtable-main-container table.jtable tbody > tr > td .jtable-edit-command-button { + background: url('../../lightcolor/edit.png') no-repeat; + width: 16px; + height: 16px; +} +div.jtable-main-container table.jtable tbody > tr > td .jtable-delete-command-button { + background: url('../../lightcolor/delete.png') no-repeat; + width: 16px; + height: 16px; +} +div.jtable-main-container table.jtable tbody > tr.jtable-row-even { + background: #f0f0f0; +} +div.jtable-main-container table.jtable tbody > tr:hover { + background: #e8eaef; +} +div.jtable-main-container table.jtable tbody > tr.jtable-row-selected { + -webkit-text-shadow: 0 1px 0 #333333; + text-shadow: 0 1px 0 #333333; + color: #FCFCFC; +} +div.jtable-main-container table.jtable tbody > tr.jtable-child-row > td { + background-color: #bbb; + padding: 2px 1px 2px 2px; +} +div.jtable-main-container table.jtable tbody > tr.jtable-child-row > td .jtable { + border: none; + border-bottom: 1px solid #C8C8C8; +} +div.jtable-main-container table.jtable tbody > tr.jtable-child-row > td .jtable-title, +div.jtable-main-container table.jtable tbody > tr.jtable-child-row > td .jtable-bottom-panel { + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + border-radius: 0px; + border: none; +} +div.jtable-main-container div.jtable-bottom-panel { + -webkit-border-radius: 0px 0px 3px 3px; + -moz-border-radius: 0px 0px 3px 3px; + border-radius: 0px 0px 3px 3px; + padding: 1px; + background: #fff; + border: 1px solid #C8C8C8; + border-top: none; + min-height: 24px; + line-height: 16px; + font-size: 0.9em; +} +div.jtable-main-container div.jtable-bottom-panel div.jtable-right-area { + padding: 2px; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list { + margin: 2px; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + -webkit-text-shadow: 0 1px 0 #ffffff; + text-shadow: 0 1px 0 #ffffff; + background-color: #ebebeb; + border-style: solid; + border-width: 1px; + border-color: #ffffff #b5b5b5 #b5b5b5 #ffffff; + padding: 2px 5px; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover { + background-color: #ddd; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + -webkit-text-shadow: 0 1px 0 #666666; + text-shadow: 0 1px 0 #666666; + color: #FCFCFC; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled.jtable-page-number-active { + opacity: 1; + filter: alpha(opacity=50); +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover { + background-color: #ebebeb; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-info { + display: inline-block; + padding: 4px; +} +div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record { + margin: 3px; +} +div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a { + font-weight: bold; + text-decoration: none; +} +div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a:hover { + text-decoration: underline; +} +div.jtable-main-container div.jtable-column-selection-container { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + -moz-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); +} +form.jtable-dialog-form { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; + font-weight: 400; +} +form.jtable-dialog-form div.jtable-input-label { + font-weight: bold; +} +div.jtable-busy-message { + -webkit-text-shadow: 0 1px 0 #333333; + text-shadow: 0 1px 0 #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + -moz-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + color: #fff; + border: 1px solid; + padding: 3px 5px 5px 27px; + background: url('../../lightcolor/gray/loading.gif') no-repeat; + background-position: 5px; +} +div.jtable-main-container div.jtable-title { + background: #e8e8e8; + background: -moz-linear-gradient(top, #e8e8e8 0%, #bababa 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #e8e8e8), color-stop(100%, #bababa)); + background: -webkit-linear-gradient(top, #e8e8e8 0%, #bababa 100%); + background: -o-linear-gradient(top, #e8e8e8 0%, #bababa 100%); + background: -ms-linear-gradient(top, #e8e8e8 0%, #bababa 100%); + background: linear-gradient(to bottom, #e8e8e8 0%, #bababa 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e8e8e8', endColorstr='#bababa', GradientType=0); + border-color: #949494; +} +div.jtable-main-container div.jtable-title div.jtable-title-text { + -webkit-text-shadow: 0 1px 0 #ffffff; + text-shadow: 0 1px 0 #ffffff; + color: #000; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item { + color: black; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover { + background-color: #a8a8a8; +} +div.jtable-main-container table.jtable tbody > tr.jtable-row-selected, +div.jtable-main-container table.jtable tbody > tr.jtable-row-selected:hover { + background-color: #8e8e8e; +} +div.jtable-main-container table.jtable tbody > tr.jtable-row-created, +div.jtable-main-container table.jtable tbody > tr.jtable-row-updated, +div.jtable-main-container table.jtable tbody > tr.jtable-row-deleting { + background-color: #8e8e8e; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active:hover { + background-color: #8e8e8e; + border-color: #6c6c6c; +} +div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a { + color: #5f5f5f; +} +div.jtable-busy-message { + border-color: #5f5f5f; + background-color: #8e8e8e; +} diff --git a/lib/themes/lightcolor/gray/jtable.less b/lib/themes/lightcolor/gray/jtable.less new file mode 100644 index 0000000..a4a2e29 --- /dev/null +++ b/lib/themes/lightcolor/gray/jtable.less @@ -0,0 +1,90 @@ +/* jTable light color theme - Gray + * Created by Halil İbrahim Kalkan + * http://www.jtable.org + */ + +@import "../jtable_lightcolor_base.less"; + +@theme-folder: 'gray'; + +.jtable_lightcolor_base(@theme-folder); + +div.jtable-main-container +{ + div.jtable-title + { + .vertical-gradient(#e8e8e8,#bababa); + border-color: #949494; + + div.jtable-title-text + { + .text-shadow(0 1px 0 #fff); + color: #000; + } + + div.jtable-toolbar + { + span.jtable-toolbar-item + { + color: black; + + &.jtable-toolbar-item-hover + { + background-color: #a8a8a8; + } + } + } + } + + table.jtable + { + tbody + { + > tr + { + @highlight-color:#8e8e8e; + + &.jtable-row-selected, + &.jtable-row-selected:hover + { + background-color: @highlight-color; + } + + &.jtable-row-created, + &.jtable-row-updated, + &.jtable-row-deleting + { + background-color: @highlight-color; + } + } + } + } + + div.jtable-bottom-panel + { + .jtable-page-list + { + .jtable-page-number-active,.jtable-page-number-active:hover + { + @bgcolor: #8e8e8e; + + background-color: @bgcolor; + border-color: @bgcolor - #222; + } + } + + span.jtable-add-record + { + a + { + color: #5f5f5f; + } + } + } +} + +div.jtable-busy-message +{ + border-color: #5f5f5f; + background-color: #8e8e8e; +} \ No newline at end of file diff --git a/lib/themes/lightcolor/gray/jtable.min.css b/lib/themes/lightcolor/gray/jtable.min.css new file mode 100644 index 0000000..555e45c --- /dev/null +++ b/lib/themes/lightcolor/gray/jtable.min.css @@ -0,0 +1 @@ +div.jtable-main-container{position:relative}div.jtable-main-container div.jtable-title{position:relative;text-align:left}div.jtable-main-container div.jtable-title .jtable-close-button{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute;display:inline-block;margin-right:5px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{position:relative;display:inline-block;margin:0 0 0 5px;cursor:pointer;font-size:.9em;padding:2px;vertical-align:bottom}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-icon{display:inline-block;margin:2px;vertical-align:middle;width:16px;height:16px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-text{display:inline-block;margin:2px;vertical-align:middle}div.jtable-main-container div.jtable-title .jtable-close-button+div.jtable-toolbar{margin-right:30px}div.jtable-main-container table.jtable{width:100%}div.jtable-main-container table.jtable thead th{vertical-align:middle;text-align:left}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container{position:relative}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{display:inline-block}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{position:absolute;height:24px;width:8px;right:-8px;top:-2px;z-index:2;cursor:col-resize}div.jtable-main-container table.jtable thead th.jtable-command-column-header{text-align:center}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting{text-align:center;width:1%}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting input{cursor:pointer}div.jtable-main-container table.jtable thead th.jtable-column-header-sortable{cursor:pointer}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button{margin:0;padding:0;cursor:pointer;border:none;display:inline}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button span{display:none}div.jtable-main-container table.jtable tbody tr>td.jtable-command-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column input{cursor:pointer}div.jtable-main-container table.jtable tbody tr.jtable-no-data-row{text-align:center}div.jtable-main-container>div.jtable-bottom-panel{position:relative;min-height:24px;text-align:left}div.jtable-main-container>div.jtable-bottom-panel div.jtable-right-area{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{display:inline-block}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{padding:2px 5px;display:inline-block;cursor:pointer}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{cursor:default}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page input[type=text]{width:22px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{vertical-align:middle}div.jtable-main-container div.jtable-column-resize-bar{opacity:.5;filter:alpha(opacity=50);position:absolute;display:none;width:1px;background-color:#000}div.jtable-main-container div.jtable-column-selection-container{position:absolute;display:none;border:1px solid #c8c8c8;background:#fff;color:#000;z-index:101;padding:5px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list{margin:0;padding:0;list-style:none}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li{margin:0;padding:2px 0}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span{position:relative;top:-1px;margin-left:4px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"]{cursor:pointer}form.jtable-dialog-form div.jtable-input-field-container{padding:2px 0 3px 0;border-bottom:1px solid #ddd}form.jtable-dialog-form div.jtable-input-field-container:last-child{border:none}form.jtable-dialog-form div.jtable-input-label{padding:2px 3px;font-size:1.1em;color:#666}form.jtable-dialog-form div.jtable-input{padding:2px}form.jtable-dialog-form div.jtable-date-input{}form.jtable-dialog-form div.jtable-text-input{}form.jtable-dialog-form span.jtable-option-text-clickable{position:relative;top:-2px}form.jtable-dialog-form div.jtable-textarea-input textarea{width:300px;min-height:60px}form.jtable-dialog-form div.jtable-checkbox-input span,form.jtable-dialog-form div.jtable-radio-input span{padding-left:4px}form.jtable-dialog-form div.jtable-radio-input input,form.jtable-dialog-form div.jtable-checkbox-input input,form.jtable-dialog-form span.jtable-option-text-clickable{cursor:pointer}div.jtable-busy-panel-background{opacity:.1;filter:alpha(opacity=50);z-index:998;position:absolute;background-color:#000}div.jtable-busy-panel-background.jtable-busy-panel-background-invisible{background-color:transparent}div.jtable-busy-message{cursor:wait;z-index:999;position:absolute;margin:5px}div.jtable-contextmenu-overlay{position:fixed;left:0;top:0;width:100%;height:100%;z-index:100}div.jtable-main-container{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px;font-weight:400;color:#222}div.jtable-main-container div.jtable-title{-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;position:relative;line-height:34px;box-shadow:inset 0 1px 0 0 rgba(255,255,255,.5);padding-left:10px;border:1px solid}div.jtable-main-container div.jtable-title div.jtable-title-text{font-weight:bold}div.jtable-main-container div.jtable-title .jtable-close-button{right:6px;top:6px;bottom:6px;position:absolute;opacity:.8;filter:alpha(opacity=50);background:url('../../lightcolor/close.png') no-repeat;width:22px;height:22px}div.jtable-main-container div.jtable-title .jtable-close-button:hover{opacity:1;filter:alpha(opacity=50)}div.jtable-main-container div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute;line-height:26px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon{background-image:url('../../lightcolor/add.png')}div.jtable-main-container table.jtable{border-collapse:collapse;border-spacing:0;border:1px solid #c8c8c8}div.jtable-main-container table.jtable thead{background:url('../../lightcolor/bg-thead.png') repeat-x scroll top left #ddd;border-top:1px solid #fff;border-bottom:1px solid #c8c8c8}div.jtable-main-container table.jtable thead th{padding:4px 3px 4px 6px;border-left:1px solid #fff;border-right:1px solid #c8c8c8}div.jtable-main-container table.jtable thead th:first-child{border-left:none}div.jtable-main-container table.jtable thead thth:last-child{border-right:none}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container{height:20px}div.jtable-main-container table.jtable thead th.jtable-column-header span.jtable-column-header-text{margin-top:3px}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting{padding:5px}div.jtable-main-container table.jtable thead th.jtable-column-header-sortable div.jtable-column-header-container{background:url('../../lightcolor/column-sortable.png') no-repeat right}div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-asc div.jtable-column-header-container{background:url('../../lightcolor/column-asc.png') no-repeat right}div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-desc div.jtable-column-header-container{background:url('../../lightcolor/column-desc.png') no-repeat right}div.jtable-main-container table.jtable tbody>tr{padding:2px;background:#f8f8f8;height:30px}div.jtable-main-container table.jtable tbody>tr>td{padding:5px;border-left:1px dotted #bebebe}div.jtable-main-container table.jtable tbody>tr>td:first-child{border-left:none}div.jtable-main-container table.jtable tbody>tr>td .jtable-edit-command-button{background:url('../../lightcolor/edit.png') no-repeat;width:16px;height:16px}div.jtable-main-container table.jtable tbody>tr>td .jtable-delete-command-button{background:url('../../lightcolor/delete.png') no-repeat;width:16px;height:16px}div.jtable-main-container table.jtable tbody>tr.jtable-row-even{background:#f0f0f0}div.jtable-main-container table.jtable tbody>tr:hover{background:#e8eaef}div.jtable-main-container table.jtable tbody>tr.jtable-row-selected{-webkit-text-shadow:0 1px 0 #333;text-shadow:0 1px 0 #333;color:#fcfcfc}div.jtable-main-container table.jtable tbody>tr.jtable-child-row>td{background-color:#bbb;padding:2px 1px 2px 2px}div.jtable-main-container table.jtable tbody>tr.jtable-child-row>td .jtable{border:none;border-bottom:1px solid #c8c8c8}div.jtable-main-container table.jtable tbody>tr.jtable-child-row>td .jtable-title,div.jtable-main-container table.jtable tbody>tr.jtable-child-row>td .jtable-bottom-panel{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border:none}div.jtable-main-container div.jtable-bottom-panel{-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;padding:1px;background:#fff;border:1px solid #c8c8c8;border-top:none;min-height:24px;line-height:16px;font-size:.9em}div.jtable-main-container div.jtable-bottom-panel div.jtable-right-area{padding:2px}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list{margin:2px}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff;background-color:#ebebeb;border-style:solid;border-width:1px;border-color:#fff #b5b5b5 #b5b5b5 #fff;padding:2px 5px}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover{background-color:#ddd}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{-webkit-text-shadow:0 1px 0 #666;text-shadow:0 1px 0 #666;color:#fcfcfc}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{opacity:.5;filter:alpha(opacity=50)}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled.jtable-page-number-active{opacity:1;filter:alpha(opacity=50)}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover{background-color:#ebebeb}div.jtable-main-container div.jtable-bottom-panel .jtable-page-info{display:inline-block;padding:4px}div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record{margin:3px}div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a{font-weight:bold;text-decoration:none}div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a:hover{text-decoration:underline}div.jtable-main-container div.jtable-column-selection-container{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:2px 2px 4px rgba(50,51,50,.75);-moz-box-shadow:2px 2px 4px rgba(50,51,50,.75);box-shadow:2px 2px 4px rgba(50,51,50,.75)}form.jtable-dialog-form{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px;font-weight:400}form.jtable-dialog-form div.jtable-input-label{font-weight:bold}div.jtable-busy-message{-webkit-text-shadow:0 1px 0 #333;text-shadow:0 1px 0 #333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:2px 2px 4px rgba(50,51,50,.75);-moz-box-shadow:2px 2px 4px rgba(50,51,50,.75);box-shadow:2px 2px 4px rgba(50,51,50,.75);color:#fff;border:1px solid;padding:3px 5px 5px 27px;background:url('../../lightcolor/gray/loading.gif') no-repeat;background-position:5px}div.jtable-main-container div.jtable-title{background:#e8e8e8;background:-moz-linear-gradient(top,#e8e8e8 0%,#bababa 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#e8e8e8),color-stop(100%,#bababa));background:-webkit-linear-gradient(top,#e8e8e8 0%,#bababa 100%);background:-o-linear-gradient(top,#e8e8e8 0%,#bababa 100%);background:-ms-linear-gradient(top,#e8e8e8 0%,#bababa 100%);background:linear-gradient(to bottom,#e8e8e8 0%,#bababa 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e8e8e8',endColorstr='#bababa',GradientType=0);border-color:#949494}div.jtable-main-container div.jtable-title div.jtable-title-text{-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff;color:#000}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{color:#000}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover{background-color:#a8a8a8}div.jtable-main-container table.jtable tbody>tr.jtable-row-selected,div.jtable-main-container table.jtable tbody>tr.jtable-row-selected:hover{background-color:#8e8e8e}div.jtable-main-container table.jtable tbody>tr.jtable-row-created,div.jtable-main-container table.jtable tbody>tr.jtable-row-updated,div.jtable-main-container table.jtable tbody>tr.jtable-row-deleting{background-color:#8e8e8e}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active:hover{background-color:#8e8e8e;border-color:#6c6c6c}div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a{color:#5f5f5f}div.jtable-busy-message{border-color:#5f5f5f;background-color:#8e8e8e} \ No newline at end of file diff --git a/lib/themes/lightcolor/gray/loading.gif b/lib/themes/lightcolor/gray/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..02cdd006c11818fceff9b98a53f55a8633f7e80a GIT binary patch literal 723 zcmZ?wbhEHb6ky&UcLJL z`}cS6-aUBm;Khp1RX4fC0sSQqD!Gi6yBi3gww4848J6i4{5di79%Sd1?6!ia%L^&R}3r{Lk&@ z8WQa67~pE8XTZz|6w(2i0CFS)tFD4VUrOe@B@4J7onl(&Akb`a#Nnf8hM4%|Al^3A2?z0cq5eZ4zE zUtTBJ*wB`mWLQP^pHpvJQ9@jQSJaY-0yu;&CQc$St z$t|&utm58IyUmz(I6m-&GGp(FXD3*b=XtHX`c(?%H&$e0%pu086vno!*p##^^JZ(} z^o+-gw&l)>AoucGfbG`bs5aePA}N^AczC%BsOHT^dV+F0lH_! zrgy7~WK@H;@IEkI|9iVk!F29#T}NgWw#xj9(`7JWbB td .jtable-command-button { + margin: 0px; + padding: 0px; + cursor: pointer; + border: none; + display: inline; +} +div.jtable-main-container table.jtable tbody tr > td .jtable-command-button span { + display: none; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-command-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column input { + cursor: pointer; +} +div.jtable-main-container table.jtable tbody tr.jtable-no-data-row { + text-align: center; +} +div.jtable-main-container > div.jtable-bottom-panel { + position: relative; + min-height: 24px; + text-align: left; +} +div.jtable-main-container > div.jtable-bottom-panel div.jtable-right-area { + right: 0px; + top: 0px; + bottom: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + display: inline-block; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + padding: 2px 5px; + display: inline-block; + cursor: pointer; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page input[type=text] { + width: 22px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + vertical-align: middle; +} +div.jtable-main-container div.jtable-column-resize-bar { + opacity: 0.5; + filter: alpha(opacity=50); + position: absolute; + display: none; + width: 1px; + background-color: #000; +} +div.jtable-main-container div.jtable-column-selection-container { + position: absolute; + display: none; + border: 1px solid #C8C8C8; + background: #fff; + color: #000; + z-index: 101; + padding: 5px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list { + margin: 0px; + padding: 0px; + list-style: none; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li { + margin: 0px; + padding: 2px 0px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span { + position: relative; + top: -1px; + margin-left: 4px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"] { + cursor: pointer; +} +form.jtable-dialog-form div.jtable-input-field-container { + padding: 2px 0px 3px 0px; + border-bottom: 1px solid #ddd; +} +form.jtable-dialog-form div.jtable-input-field-container:last-child { + border: none; +} +form.jtable-dialog-form div.jtable-input-label { + padding: 2px 3px; + font-size: 1.1em; + color: #666; +} +form.jtable-dialog-form div.jtable-input { + padding: 2px; +} +form.jtable-dialog-form div.jtable-date-input { + /* No additional style */ + +} +form.jtable-dialog-form div.jtable-text-input { + /* No additional style */ + +} +form.jtable-dialog-form span.jtable-option-text-clickable { + position: relative; + top: -2px; +} +form.jtable-dialog-form div.jtable-textarea-input textarea { + width: 300px; + min-height: 60px; +} +form.jtable-dialog-form div.jtable-checkbox-input span, +form.jtable-dialog-form div.jtable-radio-input span { + padding-left: 4px; +} +form.jtable-dialog-form div.jtable-radio-input input, +form.jtable-dialog-form div.jtable-checkbox-input input, +form.jtable-dialog-form span.jtable-option-text-clickable { + cursor: pointer; +} +div.jtable-busy-panel-background { + opacity: 0.1; + filter: alpha(opacity=50); + z-index: 998; + position: absolute; + background-color: #000; +} +div.jtable-busy-panel-background.jtable-busy-panel-background-invisible { + background-color: transparent; +} +div.jtable-busy-message { + cursor: wait; + z-index: 999; + position: absolute; + margin: 5px; +} +div.jtable-contextmenu-overlay { + position: fixed; + left: 0px; + top: 0px; + width: 100%; + height: 100%; + z-index: 100; +} +div.jtable-main-container { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; + font-weight: 400; + color: #222; +} +div.jtable-main-container div.jtable-title { + -webkit-border-radius: 3px 3px 0 0; + -moz-border-radius: 3px 3px 0 0; + border-radius: 3px 3px 0 0; + position: relative; + line-height: 34px; + box-shadow: inset 0 1px 0 0 rgba(255, 255, 255, 0.5); + padding-left: 10px; + border: 1px solid; +} +div.jtable-main-container div.jtable-title div.jtable-title-text { + font-weight: bold; +} +div.jtable-main-container div.jtable-title .jtable-close-button { + right: 6px; + top: 6px; + bottom: 6px; + position: absolute; + opacity: 0.8; + filter: alpha(opacity=50); + background: url('../../lightcolor/close.png') no-repeat; + width: 22px; + height: 22px; +} +div.jtable-main-container div.jtable-title .jtable-close-button:hover { + opacity: 1; + filter: alpha(opacity=50); +} +div.jtable-main-container div.jtable-title div.jtable-toolbar { + bottom: 0px; + right: 0px; + position: absolute; + line-height: 26px; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon { + background-image: url('../../lightcolor/add.png'); +} +div.jtable-main-container table.jtable { + border-collapse: collapse; + border-spacing: 0; + border: 1px solid #C8C8C8; +} +div.jtable-main-container table.jtable thead { + background: url('../../lightcolor/bg-thead.png') repeat-x scroll top left #dddddd; + border-top: 1px solid #fff; + border-bottom: 1px solid #C8C8C8; +} +div.jtable-main-container table.jtable thead th { + padding: 4px 3px 4px 6px; + border-left: 1px solid #fff; + border-right: 1px solid #C8C8C8; +} +div.jtable-main-container table.jtable thead th:first-child { + border-left: none; +} +div.jtable-main-container table.jtable thead thth:last-child { + border-right: none; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container { + height: 20px; +} +div.jtable-main-container table.jtable thead th.jtable-column-header span.jtable-column-header-text { + margin-top: 3px; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-selecting { + padding: 5px; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sortable div.jtable-column-header-container { + background: url('../../lightcolor/column-sortable.png') no-repeat right; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-asc div.jtable-column-header-container { + background: url('../../lightcolor/column-asc.png') no-repeat right; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-desc div.jtable-column-header-container { + background: url('../../lightcolor/column-desc.png') no-repeat right; +} +div.jtable-main-container table.jtable tbody > tr { + padding: 2px; + background: #f8f8f8; + height: 30px; +} +div.jtable-main-container table.jtable tbody > tr > td { + padding: 5px; + border-left: 1px dotted #bebebe; +} +div.jtable-main-container table.jtable tbody > tr > td:first-child { + border-left: none; +} +div.jtable-main-container table.jtable tbody > tr > td .jtable-edit-command-button { + background: url('../../lightcolor/edit.png') no-repeat; + width: 16px; + height: 16px; +} +div.jtable-main-container table.jtable tbody > tr > td .jtable-delete-command-button { + background: url('../../lightcolor/delete.png') no-repeat; + width: 16px; + height: 16px; +} +div.jtable-main-container table.jtable tbody > tr.jtable-row-even { + background: #f0f0f0; +} +div.jtable-main-container table.jtable tbody > tr:hover { + background: #e8eaef; +} +div.jtable-main-container table.jtable tbody > tr.jtable-row-selected { + -webkit-text-shadow: 0 1px 0 #333333; + text-shadow: 0 1px 0 #333333; + color: #FCFCFC; +} +div.jtable-main-container table.jtable tbody > tr.jtable-child-row > td { + background-color: #bbb; + padding: 2px 1px 2px 2px; +} +div.jtable-main-container table.jtable tbody > tr.jtable-child-row > td .jtable { + border: none; + border-bottom: 1px solid #C8C8C8; +} +div.jtable-main-container table.jtable tbody > tr.jtable-child-row > td .jtable-title, +div.jtable-main-container table.jtable tbody > tr.jtable-child-row > td .jtable-bottom-panel { + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + border-radius: 0px; + border: none; +} +div.jtable-main-container div.jtable-bottom-panel { + -webkit-border-radius: 0px 0px 3px 3px; + -moz-border-radius: 0px 0px 3px 3px; + border-radius: 0px 0px 3px 3px; + padding: 1px; + background: #fff; + border: 1px solid #C8C8C8; + border-top: none; + min-height: 24px; + line-height: 16px; + font-size: 0.9em; +} +div.jtable-main-container div.jtable-bottom-panel div.jtable-right-area { + padding: 2px; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list { + margin: 2px; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + -webkit-text-shadow: 0 1px 0 #ffffff; + text-shadow: 0 1px 0 #ffffff; + background-color: #ebebeb; + border-style: solid; + border-width: 1px; + border-color: #ffffff #b5b5b5 #b5b5b5 #ffffff; + padding: 2px 5px; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover { + background-color: #ddd; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + -webkit-text-shadow: 0 1px 0 #666666; + text-shadow: 0 1px 0 #666666; + color: #FCFCFC; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled.jtable-page-number-active { + opacity: 1; + filter: alpha(opacity=50); +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover { + background-color: #ebebeb; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-info { + display: inline-block; + padding: 4px; +} +div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record { + margin: 3px; +} +div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a { + font-weight: bold; + text-decoration: none; +} +div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a:hover { + text-decoration: underline; +} +div.jtable-main-container div.jtable-column-selection-container { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + -moz-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); +} +form.jtable-dialog-form { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; + font-weight: 400; +} +form.jtable-dialog-form div.jtable-input-label { + font-weight: bold; +} +div.jtable-busy-message { + -webkit-text-shadow: 0 1px 0 #333333; + text-shadow: 0 1px 0 #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + -moz-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + color: #fff; + border: 1px solid; + padding: 3px 5px 5px 27px; + background: url('../../lightcolor/green/loading.gif') no-repeat; + background-position: 5px; +} +div.jtable-main-container div.jtable-title { + background: #72eb65; + background: -moz-linear-gradient(top, #72eb65 0%, #1e9d0d 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #72eb65), color-stop(100%, #1e9d0d)); + background: -webkit-linear-gradient(top, #72eb65 0%, #1e9d0d 100%); + background: -o-linear-gradient(top, #72eb65 0%, #1e9d0d 100%); + background: -ms-linear-gradient(top, #72eb65 0%, #1e9d0d 100%); + background: linear-gradient(to bottom, #72eb65 0%, #1e9d0d 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#72eb65', endColorstr='#1e9d0d', GradientType=0); + border-color: #167509; +} +div.jtable-main-container div.jtable-title div.jtable-title-text { + -webkit-text-shadow: 0 1px 0 #666666; + text-shadow: 0 1px 0 #666666; + color: #fff; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item { + color: white; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover { + background-color: #208b10; +} +div.jtable-main-container table.jtable tbody > tr.jtable-row-selected, +div.jtable-main-container table.jtable tbody > tr.jtable-row-selected:hover { + background-color: #33b326; +} +div.jtable-main-container table.jtable tbody > tr.jtable-row-created, +div.jtable-main-container table.jtable tbody > tr.jtable-row-updated, +div.jtable-main-container table.jtable tbody > tr.jtable-row-deleting { + background-color: #33b326; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active:hover { + background-color: #42d033; + border-color: #20ae11; +} +div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a { + color: #167509; +} +div.jtable-busy-message { + border-color: #167509; + background-color: #42d033; +} diff --git a/lib/themes/lightcolor/green/jtable.less b/lib/themes/lightcolor/green/jtable.less new file mode 100644 index 0000000..b511331 --- /dev/null +++ b/lib/themes/lightcolor/green/jtable.less @@ -0,0 +1,90 @@ +/* jTable light color theme - Green + * Created by Halil İbrahim Kalkan + * http://www.jtable.org + */ + +@import "../jtable_lightcolor_base.less"; + +@theme-folder: 'green'; + +.jtable_lightcolor_base(@theme-folder); + +div.jtable-main-container +{ + div.jtable-title + { + .vertical-gradient(#72eb65,#1e9d0d); + border-color: #167509; + + div.jtable-title-text + { + .text-shadow(0 1px 0 #666); + color: #fff; + } + + div.jtable-toolbar + { + span.jtable-toolbar-item + { + color: white; + + &.jtable-toolbar-item-hover + { + background-color: #208b10; + } + } + } + } + + table.jtable + { + tbody + { + > tr + { + @highlight-color:#33b326; + + &.jtable-row-selected, + &.jtable-row-selected:hover + { + background-color: @highlight-color; + } + + &.jtable-row-created, + &.jtable-row-updated, + &.jtable-row-deleting + { + background-color: @highlight-color; + } + } + } + } + + div.jtable-bottom-panel + { + .jtable-page-list + { + .jtable-page-number-active,.jtable-page-number-active:hover + { + @bgcolor: #42d033; + + background-color: @bgcolor; + border-color: @bgcolor - #222; + } + } + + span.jtable-add-record + { + a + { + color: #167509; + } + } + } +} + +div.jtable-busy-message +{ + border-color: #167509; + background-color: #42d033; +} \ No newline at end of file diff --git a/lib/themes/lightcolor/green/jtable.min.css b/lib/themes/lightcolor/green/jtable.min.css new file mode 100644 index 0000000..6b4c902 --- /dev/null +++ b/lib/themes/lightcolor/green/jtable.min.css @@ -0,0 +1 @@ +div.jtable-main-container{position:relative}div.jtable-main-container div.jtable-title{position:relative;text-align:left}div.jtable-main-container div.jtable-title .jtable-close-button{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute;display:inline-block;margin-right:5px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{position:relative;display:inline-block;margin:0 0 0 5px;cursor:pointer;font-size:.9em;padding:2px;vertical-align:bottom}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-icon{display:inline-block;margin:2px;vertical-align:middle;width:16px;height:16px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-text{display:inline-block;margin:2px;vertical-align:middle}div.jtable-main-container div.jtable-title .jtable-close-button+div.jtable-toolbar{margin-right:30px}div.jtable-main-container table.jtable{width:100%}div.jtable-main-container table.jtable thead th{vertical-align:middle;text-align:left}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container{position:relative}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{display:inline-block}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{position:absolute;height:24px;width:8px;right:-8px;top:-2px;z-index:2;cursor:col-resize}div.jtable-main-container table.jtable thead th.jtable-command-column-header{text-align:center}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting{text-align:center;width:1%}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting input{cursor:pointer}div.jtable-main-container table.jtable thead th.jtable-column-header-sortable{cursor:pointer}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button{margin:0;padding:0;cursor:pointer;border:none;display:inline}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button span{display:none}div.jtable-main-container table.jtable tbody tr>td.jtable-command-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column input{cursor:pointer}div.jtable-main-container table.jtable tbody tr.jtable-no-data-row{text-align:center}div.jtable-main-container>div.jtable-bottom-panel{position:relative;min-height:24px;text-align:left}div.jtable-main-container>div.jtable-bottom-panel div.jtable-right-area{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{display:inline-block}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{padding:2px 5px;display:inline-block;cursor:pointer}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{cursor:default}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page input[type=text]{width:22px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{vertical-align:middle}div.jtable-main-container div.jtable-column-resize-bar{opacity:.5;filter:alpha(opacity=50);position:absolute;display:none;width:1px;background-color:#000}div.jtable-main-container div.jtable-column-selection-container{position:absolute;display:none;border:1px solid #c8c8c8;background:#fff;color:#000;z-index:101;padding:5px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list{margin:0;padding:0;list-style:none}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li{margin:0;padding:2px 0}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span{position:relative;top:-1px;margin-left:4px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"]{cursor:pointer}form.jtable-dialog-form div.jtable-input-field-container{padding:2px 0 3px 0;border-bottom:1px solid #ddd}form.jtable-dialog-form div.jtable-input-field-container:last-child{border:none}form.jtable-dialog-form div.jtable-input-label{padding:2px 3px;font-size:1.1em;color:#666}form.jtable-dialog-form div.jtable-input{padding:2px}form.jtable-dialog-form div.jtable-date-input{}form.jtable-dialog-form div.jtable-text-input{}form.jtable-dialog-form span.jtable-option-text-clickable{position:relative;top:-2px}form.jtable-dialog-form div.jtable-textarea-input textarea{width:300px;min-height:60px}form.jtable-dialog-form div.jtable-checkbox-input span,form.jtable-dialog-form div.jtable-radio-input span{padding-left:4px}form.jtable-dialog-form div.jtable-radio-input input,form.jtable-dialog-form div.jtable-checkbox-input input,form.jtable-dialog-form span.jtable-option-text-clickable{cursor:pointer}div.jtable-busy-panel-background{opacity:.1;filter:alpha(opacity=50);z-index:998;position:absolute;background-color:#000}div.jtable-busy-panel-background.jtable-busy-panel-background-invisible{background-color:transparent}div.jtable-busy-message{cursor:wait;z-index:999;position:absolute;margin:5px}div.jtable-contextmenu-overlay{position:fixed;left:0;top:0;width:100%;height:100%;z-index:100}div.jtable-main-container{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px;font-weight:400;color:#222}div.jtable-main-container div.jtable-title{-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;position:relative;line-height:34px;box-shadow:inset 0 1px 0 0 rgba(255,255,255,.5);padding-left:10px;border:1px solid}div.jtable-main-container div.jtable-title div.jtable-title-text{font-weight:bold}div.jtable-main-container div.jtable-title .jtable-close-button{right:6px;top:6px;bottom:6px;position:absolute;opacity:.8;filter:alpha(opacity=50);background:url('../../lightcolor/close.png') no-repeat;width:22px;height:22px}div.jtable-main-container div.jtable-title .jtable-close-button:hover{opacity:1;filter:alpha(opacity=50)}div.jtable-main-container div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute;line-height:26px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon{background-image:url('../../lightcolor/add.png')}div.jtable-main-container table.jtable{border-collapse:collapse;border-spacing:0;border:1px solid #c8c8c8}div.jtable-main-container table.jtable thead{background:url('../../lightcolor/bg-thead.png') repeat-x scroll top left #ddd;border-top:1px solid #fff;border-bottom:1px solid #c8c8c8}div.jtable-main-container table.jtable thead th{padding:4px 3px 4px 6px;border-left:1px solid #fff;border-right:1px solid #c8c8c8}div.jtable-main-container table.jtable thead th:first-child{border-left:none}div.jtable-main-container table.jtable thead thth:last-child{border-right:none}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container{height:20px}div.jtable-main-container table.jtable thead th.jtable-column-header span.jtable-column-header-text{margin-top:3px}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting{padding:5px}div.jtable-main-container table.jtable thead th.jtable-column-header-sortable div.jtable-column-header-container{background:url('../../lightcolor/column-sortable.png') no-repeat right}div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-asc div.jtable-column-header-container{background:url('../../lightcolor/column-asc.png') no-repeat right}div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-desc div.jtable-column-header-container{background:url('../../lightcolor/column-desc.png') no-repeat right}div.jtable-main-container table.jtable tbody>tr{padding:2px;background:#f8f8f8;height:30px}div.jtable-main-container table.jtable tbody>tr>td{padding:5px;border-left:1px dotted #bebebe}div.jtable-main-container table.jtable tbody>tr>td:first-child{border-left:none}div.jtable-main-container table.jtable tbody>tr>td .jtable-edit-command-button{background:url('../../lightcolor/edit.png') no-repeat;width:16px;height:16px}div.jtable-main-container table.jtable tbody>tr>td .jtable-delete-command-button{background:url('../../lightcolor/delete.png') no-repeat;width:16px;height:16px}div.jtable-main-container table.jtable tbody>tr.jtable-row-even{background:#f0f0f0}div.jtable-main-container table.jtable tbody>tr:hover{background:#e8eaef}div.jtable-main-container table.jtable tbody>tr.jtable-row-selected{-webkit-text-shadow:0 1px 0 #333;text-shadow:0 1px 0 #333;color:#fcfcfc}div.jtable-main-container table.jtable tbody>tr.jtable-child-row>td{background-color:#bbb;padding:2px 1px 2px 2px}div.jtable-main-container table.jtable tbody>tr.jtable-child-row>td .jtable{border:none;border-bottom:1px solid #c8c8c8}div.jtable-main-container table.jtable tbody>tr.jtable-child-row>td .jtable-title,div.jtable-main-container table.jtable tbody>tr.jtable-child-row>td .jtable-bottom-panel{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border:none}div.jtable-main-container div.jtable-bottom-panel{-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;padding:1px;background:#fff;border:1px solid #c8c8c8;border-top:none;min-height:24px;line-height:16px;font-size:.9em}div.jtable-main-container div.jtable-bottom-panel div.jtable-right-area{padding:2px}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list{margin:2px}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff;background-color:#ebebeb;border-style:solid;border-width:1px;border-color:#fff #b5b5b5 #b5b5b5 #fff;padding:2px 5px}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover{background-color:#ddd}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{-webkit-text-shadow:0 1px 0 #666;text-shadow:0 1px 0 #666;color:#fcfcfc}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{opacity:.5;filter:alpha(opacity=50)}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled.jtable-page-number-active{opacity:1;filter:alpha(opacity=50)}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover{background-color:#ebebeb}div.jtable-main-container div.jtable-bottom-panel .jtable-page-info{display:inline-block;padding:4px}div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record{margin:3px}div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a{font-weight:bold;text-decoration:none}div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a:hover{text-decoration:underline}div.jtable-main-container div.jtable-column-selection-container{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:2px 2px 4px rgba(50,51,50,.75);-moz-box-shadow:2px 2px 4px rgba(50,51,50,.75);box-shadow:2px 2px 4px rgba(50,51,50,.75)}form.jtable-dialog-form{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px;font-weight:400}form.jtable-dialog-form div.jtable-input-label{font-weight:bold}div.jtable-busy-message{-webkit-text-shadow:0 1px 0 #333;text-shadow:0 1px 0 #333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:2px 2px 4px rgba(50,51,50,.75);-moz-box-shadow:2px 2px 4px rgba(50,51,50,.75);box-shadow:2px 2px 4px rgba(50,51,50,.75);color:#fff;border:1px solid;padding:3px 5px 5px 27px;background:url('../../lightcolor/green/loading.gif') no-repeat;background-position:5px}div.jtable-main-container div.jtable-title{background:#72eb65;background:-moz-linear-gradient(top,#72eb65 0%,#1e9d0d 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#72eb65),color-stop(100%,#1e9d0d));background:-webkit-linear-gradient(top,#72eb65 0%,#1e9d0d 100%);background:-o-linear-gradient(top,#72eb65 0%,#1e9d0d 100%);background:-ms-linear-gradient(top,#72eb65 0%,#1e9d0d 100%);background:linear-gradient(to bottom,#72eb65 0%,#1e9d0d 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#72eb65',endColorstr='#1e9d0d',GradientType=0);border-color:#167509}div.jtable-main-container div.jtable-title div.jtable-title-text{-webkit-text-shadow:0 1px 0 #666;text-shadow:0 1px 0 #666;color:#fff}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{color:#fff}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover{background-color:#208b10}div.jtable-main-container table.jtable tbody>tr.jtable-row-selected,div.jtable-main-container table.jtable tbody>tr.jtable-row-selected:hover{background-color:#33b326}div.jtable-main-container table.jtable tbody>tr.jtable-row-created,div.jtable-main-container table.jtable tbody>tr.jtable-row-updated,div.jtable-main-container table.jtable tbody>tr.jtable-row-deleting{background-color:#33b326}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active:hover{background-color:#42d033;border-color:#20ae11}div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a{color:#167509}div.jtable-busy-message{border-color:#167509;background-color:#42d033} \ No newline at end of file diff --git a/lib/themes/lightcolor/green/loading.gif b/lib/themes/lightcolor/green/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..d32f54fdaab181a23971a3dbb860e4d87b248edb GIT binary patch literal 723 zcmZ?wbhEHb6kyEQ~-dw<@P%mXw5_u)z#f4rw-F z8$RViX~{ql!`W(_^6ZSv3?laY)_e3UHfY-)H{jFdw%np)cg#S4s)}Z_g2_@1+e7+5 zLm)u$pOkY^YGO%hib8p2NrpmVR$@g?eqxGVW?ou8gW^vXpfea46#sMkxrPKgI|jHK z=@~GC+@J%}4{{^}tFD4VUrOe@B@4J7onl(&Akb`a#Nnf8hM4%|Al^3A2?z0cq5eZ4zEUtTBJ*wB`mWLQP^pHpvJQ9@jQSJaY-0yu;&CQc$St$t|&utm58I zyUmz(I6m-&GGp(FXD3*b=XtHX`c(?%H&$e0%pu086vno!*p##^^JZ(}^o+-gw&l)> zAoucGfbG`bs5aePA}N^AczC%BsOHT^dV+F0lH_!rgy7~WK@H; s@IEkI|9iVk!F29#T}NgWw#xj9(`7JWbB tr + { + padding: 2px; + background: #f8f8f8; + height: 30px; + + > td + { + padding: 5px; + border-left: 1px dotted #bebebe; + + &:first-child + { + border-left: none; + } + + .jtable-edit-command-button + { + background: url('lightcolor/edit.png') no-repeat; + width: 16px; + height: 16px; + } + + .jtable-delete-command-button + { + background: url('lightcolor/delete.png') no-repeat; + width: 16px; + height: 16px; + } + } + + &.jtable-row-even + { + background: #f0f0f0; + } + + &:hover + { + background: #e8eaef; + } + + &.jtable-row-selected + { + .text-shadow(0 1px 0 #333); + color: #FCFCFC; + } + + &.jtable-child-row + { + > td + { + background-color: #bbb; + padding: 2px 1px 2px 2px; + + .jtable + { + border: none; + border-bottom: 1px solid #C8C8C8; + } + + .jtable-title, + .jtable-bottom-panel + { + .border-radius(0px); + border: none; + } + } + } + } + } + } + + div.jtable-bottom-panel + { + .border-radius(0px 0px 3px 3px); + padding: 1px; + background: #fff; + border: 1px solid #C8C8C8; + border-top: none; + min-height: 24px; + line-height: 16px; + font-size: 0.9em; + + div.jtable-right-area + { + padding: 2px; + } + + .jtable-page-list + { + margin: 2px; + + .jtable-page-number, + .jtable-page-number-space, + .jtable-page-number-first, + .jtable-page-number-last, + .jtable-page-number-previous, + .jtable-page-number-next, + .jtable-page-number-active + { + .text-shadow(0 1px 0 white); + background-color: #ebebeb; + border-style: solid; + border-width: 1px; + border-color: #ffffff #b5b5b5 #b5b5b5 #ffffff; + padding: 2px 5px; + } + + .jtable-page-number:hover, + .jtable-page-number-first:hover, + .jtable-page-number-last:hover, + .jtable-page-number-previous:hover, + .jtable-page-number-next:hover + { + background-color: #ddd; + } + + .jtable-page-number-active + { + .text-shadow(0 1px 0 #666); + color: #FCFCFC; + } + + .jtable-page-number-disabled + { + .opacity(0.5); + + &.jtable-page-number-active + { + .opacity(1); + } + + &:hover + { + background-color: #ebebeb; + } + } + } + + .jtable-page-info + { + display: inline-block; + padding: 4px; + } + + span.jtable-add-record + { + margin: 3px; + + a + { + font-weight: bold; + text-decoration: none; + + &:hover + { + text-decoration: underline; + } + } + } + } + + div.jtable-column-selection-container + { + .border-radius(3px); + .box-shadow(2px 2px 4px rgba(50, 51, 50, 0.75)); + } + } + + form.jtable-dialog-form + { + .default-font(@defaultFontSize - 1px); + + div.jtable-input-label + { + font-weight: bold; + } + } + + div.jtable-busy-message + { + .text-shadow(0 1px 0 #333); + .border-radius(3px); + .box-shadow(2px 2px 4px rgba(50, 51, 50, 0.75)); + color: #fff; + border: 1px solid; + padding: 3px 5px 5px 27px; + background: url('lightcolor/@{theme-folder}/loading.gif') no-repeat; + background-position: 5px; + } +} diff --git a/lib/themes/lightcolor/orange/jtable.css b/lib/themes/lightcolor/orange/jtable.css new file mode 100644 index 0000000..e1bee46 --- /dev/null +++ b/lib/themes/lightcolor/orange/jtable.css @@ -0,0 +1,521 @@ +/* jTable light color theme - Orange + * Created by Halil İbrahim Kalkan + * http://www.jtable.org + */ +div.jtable-main-container { + position: relative; +} +div.jtable-main-container div.jtable-title { + position: relative; + text-align: left; +} +div.jtable-main-container div.jtable-title .jtable-close-button { + right: 0px; + top: 0px; + bottom: 0px; + position: absolute; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar { + bottom: 0px; + right: 0px; + position: absolute; + display: inline-block; + margin-right: 5px; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item { + position: relative; + display: inline-block; + margin: 0px 0px 0px 5px; + cursor: pointer; + font-size: 0.9em; + padding: 2px; + vertical-align: bottom; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-icon { + display: inline-block; + margin: 2px; + vertical-align: middle; + width: 16px; + height: 16px; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-text { + display: inline-block; + margin: 2px; + vertical-align: middle; +} +div.jtable-main-container div.jtable-title .jtable-close-button + div.jtable-toolbar { + margin-right: 30px; +} +div.jtable-main-container table.jtable { + width: 100%; +} +div.jtable-main-container table.jtable thead th { + vertical-align: middle; + text-align: left; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container { + position: relative; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text { + display: inline-block; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler { + position: absolute; + height: 24px; + width: 8px; + right: -8px; + top: -2px; + z-index: 2; + cursor: col-resize; +} +div.jtable-main-container table.jtable thead th.jtable-command-column-header { + text-align: center; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-selecting { + text-align: center; + width: 1%; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-selecting input { + cursor: pointer; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sortable { + cursor: pointer; +} +div.jtable-main-container table.jtable tbody tr > td .jtable-command-button { + margin: 0px; + padding: 0px; + cursor: pointer; + border: none; + display: inline; +} +div.jtable-main-container table.jtable tbody tr > td .jtable-command-button span { + display: none; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-command-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column input { + cursor: pointer; +} +div.jtable-main-container table.jtable tbody tr.jtable-no-data-row { + text-align: center; +} +div.jtable-main-container > div.jtable-bottom-panel { + position: relative; + min-height: 24px; + text-align: left; +} +div.jtable-main-container > div.jtable-bottom-panel div.jtable-right-area { + right: 0px; + top: 0px; + bottom: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + display: inline-block; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + padding: 2px 5px; + display: inline-block; + cursor: pointer; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page input[type=text] { + width: 22px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + vertical-align: middle; +} +div.jtable-main-container div.jtable-column-resize-bar { + opacity: 0.5; + filter: alpha(opacity=50); + position: absolute; + display: none; + width: 1px; + background-color: #000; +} +div.jtable-main-container div.jtable-column-selection-container { + position: absolute; + display: none; + border: 1px solid #C8C8C8; + background: #fff; + color: #000; + z-index: 101; + padding: 5px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list { + margin: 0px; + padding: 0px; + list-style: none; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li { + margin: 0px; + padding: 2px 0px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span { + position: relative; + top: -1px; + margin-left: 4px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"] { + cursor: pointer; +} +form.jtable-dialog-form div.jtable-input-field-container { + padding: 2px 0px 3px 0px; + border-bottom: 1px solid #ddd; +} +form.jtable-dialog-form div.jtable-input-field-container:last-child { + border: none; +} +form.jtable-dialog-form div.jtable-input-label { + padding: 2px 3px; + font-size: 1.1em; + color: #666; +} +form.jtable-dialog-form div.jtable-input { + padding: 2px; +} +form.jtable-dialog-form div.jtable-date-input { + /* No additional style */ + +} +form.jtable-dialog-form div.jtable-text-input { + /* No additional style */ + +} +form.jtable-dialog-form span.jtable-option-text-clickable { + position: relative; + top: -2px; +} +form.jtable-dialog-form div.jtable-textarea-input textarea { + width: 300px; + min-height: 60px; +} +form.jtable-dialog-form div.jtable-checkbox-input span, +form.jtable-dialog-form div.jtable-radio-input span { + padding-left: 4px; +} +form.jtable-dialog-form div.jtable-radio-input input, +form.jtable-dialog-form div.jtable-checkbox-input input, +form.jtable-dialog-form span.jtable-option-text-clickable { + cursor: pointer; +} +div.jtable-busy-panel-background { + opacity: 0.1; + filter: alpha(opacity=50); + z-index: 998; + position: absolute; + background-color: #000; +} +div.jtable-busy-panel-background.jtable-busy-panel-background-invisible { + background-color: transparent; +} +div.jtable-busy-message { + cursor: wait; + z-index: 999; + position: absolute; + margin: 5px; +} +div.jtable-contextmenu-overlay { + position: fixed; + left: 0px; + top: 0px; + width: 100%; + height: 100%; + z-index: 100; +} +div.jtable-main-container { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; + font-weight: 400; + color: #222; +} +div.jtable-main-container div.jtable-title { + -webkit-border-radius: 3px 3px 0 0; + -moz-border-radius: 3px 3px 0 0; + border-radius: 3px 3px 0 0; + position: relative; + line-height: 34px; + box-shadow: inset 0 1px 0 0 rgba(255, 255, 255, 0.5); + padding-left: 10px; + border: 1px solid; +} +div.jtable-main-container div.jtable-title div.jtable-title-text { + font-weight: bold; +} +div.jtable-main-container div.jtable-title .jtable-close-button { + right: 6px; + top: 6px; + bottom: 6px; + position: absolute; + opacity: 0.8; + filter: alpha(opacity=50); + background: url('../../lightcolor/close.png') no-repeat; + width: 22px; + height: 22px; +} +div.jtable-main-container div.jtable-title .jtable-close-button:hover { + opacity: 1; + filter: alpha(opacity=50); +} +div.jtable-main-container div.jtable-title div.jtable-toolbar { + bottom: 0px; + right: 0px; + position: absolute; + line-height: 26px; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon { + background-image: url('../../lightcolor/add.png'); +} +div.jtable-main-container table.jtable { + border-collapse: collapse; + border-spacing: 0; + border: 1px solid #C8C8C8; +} +div.jtable-main-container table.jtable thead { + background: url('../../lightcolor/bg-thead.png') repeat-x scroll top left #dddddd; + border-top: 1px solid #fff; + border-bottom: 1px solid #C8C8C8; +} +div.jtable-main-container table.jtable thead th { + padding: 4px 3px 4px 6px; + border-left: 1px solid #fff; + border-right: 1px solid #C8C8C8; +} +div.jtable-main-container table.jtable thead th:first-child { + border-left: none; +} +div.jtable-main-container table.jtable thead thth:last-child { + border-right: none; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container { + height: 20px; +} +div.jtable-main-container table.jtable thead th.jtable-column-header span.jtable-column-header-text { + margin-top: 3px; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-selecting { + padding: 5px; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sortable div.jtable-column-header-container { + background: url('../../lightcolor/column-sortable.png') no-repeat right; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-asc div.jtable-column-header-container { + background: url('../../lightcolor/column-asc.png') no-repeat right; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-desc div.jtable-column-header-container { + background: url('../../lightcolor/column-desc.png') no-repeat right; +} +div.jtable-main-container table.jtable tbody > tr { + padding: 2px; + background: #f8f8f8; + height: 30px; +} +div.jtable-main-container table.jtable tbody > tr > td { + padding: 5px; + border-left: 1px dotted #bebebe; +} +div.jtable-main-container table.jtable tbody > tr > td:first-child { + border-left: none; +} +div.jtable-main-container table.jtable tbody > tr > td .jtable-edit-command-button { + background: url('../../lightcolor/edit.png') no-repeat; + width: 16px; + height: 16px; +} +div.jtable-main-container table.jtable tbody > tr > td .jtable-delete-command-button { + background: url('../../lightcolor/delete.png') no-repeat; + width: 16px; + height: 16px; +} +div.jtable-main-container table.jtable tbody > tr.jtable-row-even { + background: #f0f0f0; +} +div.jtable-main-container table.jtable tbody > tr:hover { + background: #e8eaef; +} +div.jtable-main-container table.jtable tbody > tr.jtable-row-selected { + -webkit-text-shadow: 0 1px 0 #333333; + text-shadow: 0 1px 0 #333333; + color: #FCFCFC; +} +div.jtable-main-container table.jtable tbody > tr.jtable-child-row > td { + background-color: #bbb; + padding: 2px 1px 2px 2px; +} +div.jtable-main-container table.jtable tbody > tr.jtable-child-row > td .jtable { + border: none; + border-bottom: 1px solid #C8C8C8; +} +div.jtable-main-container table.jtable tbody > tr.jtable-child-row > td .jtable-title, +div.jtable-main-container table.jtable tbody > tr.jtable-child-row > td .jtable-bottom-panel { + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + border-radius: 0px; + border: none; +} +div.jtable-main-container div.jtable-bottom-panel { + -webkit-border-radius: 0px 0px 3px 3px; + -moz-border-radius: 0px 0px 3px 3px; + border-radius: 0px 0px 3px 3px; + padding: 1px; + background: #fff; + border: 1px solid #C8C8C8; + border-top: none; + min-height: 24px; + line-height: 16px; + font-size: 0.9em; +} +div.jtable-main-container div.jtable-bottom-panel div.jtable-right-area { + padding: 2px; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list { + margin: 2px; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + -webkit-text-shadow: 0 1px 0 #ffffff; + text-shadow: 0 1px 0 #ffffff; + background-color: #ebebeb; + border-style: solid; + border-width: 1px; + border-color: #ffffff #b5b5b5 #b5b5b5 #ffffff; + padding: 2px 5px; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover { + background-color: #ddd; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + -webkit-text-shadow: 0 1px 0 #666666; + text-shadow: 0 1px 0 #666666; + color: #FCFCFC; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled.jtable-page-number-active { + opacity: 1; + filter: alpha(opacity=50); +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover { + background-color: #ebebeb; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-info { + display: inline-block; + padding: 4px; +} +div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record { + margin: 3px; +} +div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a { + font-weight: bold; + text-decoration: none; +} +div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a:hover { + text-decoration: underline; +} +div.jtable-main-container div.jtable-column-selection-container { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + -moz-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); +} +form.jtable-dialog-form { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; + font-weight: 400; +} +form.jtable-dialog-form div.jtable-input-label { + font-weight: bold; +} +div.jtable-busy-message { + -webkit-text-shadow: 0 1px 0 #333333; + text-shadow: 0 1px 0 #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + -moz-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + color: #fff; + border: 1px solid; + padding: 3px 5px 5px 27px; + background: url('../../lightcolor/orange/loading.gif') no-repeat; + background-position: 5px; +} +div.jtable-main-container div.jtable-title { + background: #ffa366; + background: -moz-linear-gradient(top, #ffa366 0%, #da5700 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffa366), color-stop(100%, #da5700)); + background: -webkit-linear-gradient(top, #ffa366 0%, #da5700 100%); + background: -o-linear-gradient(top, #ffa366 0%, #da5700 100%); + background: -ms-linear-gradient(top, #ffa366 0%, #da5700 100%); + background: linear-gradient(to bottom, #ffa366 0%, #da5700 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa366', endColorstr='#da5700', GradientType=0); + border-color: #804620; +} +div.jtable-main-container div.jtable-title div.jtable-title-text { + -webkit-text-shadow: 0 1px 0 #666666; + text-shadow: 0 1px 0 #666666; + color: #fff; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item { + color: white; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover { + background-color: #c45206; +} +div.jtable-main-container table.jtable tbody > tr.jtable-row-selected, +div.jtable-main-container table.jtable tbody > tr.jtable-row-selected:hover { + background-color: #f36301; +} +div.jtable-main-container table.jtable tbody > tr.jtable-row-created, +div.jtable-main-container table.jtable tbody > tr.jtable-row-updated, +div.jtable-main-container table.jtable tbody > tr.jtable-row-deleting { + background-color: #f36301; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active:hover { + background-color: #f36301; + border-color: #d14100; +} +div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a { + color: #cc5200; +} +div.jtable-busy-message { + border-color: #a14100; + background-color: #f36301; +} diff --git a/lib/themes/lightcolor/orange/jtable.less b/lib/themes/lightcolor/orange/jtable.less new file mode 100644 index 0000000..13bd0dc --- /dev/null +++ b/lib/themes/lightcolor/orange/jtable.less @@ -0,0 +1,90 @@ +/* jTable light color theme - Orange + * Created by Halil İbrahim Kalkan + * http://www.jtable.org + */ + +@import "../jtable_lightcolor_base.less"; + +@theme-folder: 'orange'; + +.jtable_lightcolor_base(@theme-folder); + +div.jtable-main-container +{ + div.jtable-title + { + .vertical-gradient(#ffa366,#da5700); + border-color: #804620; + + div.jtable-title-text + { + .text-shadow(0 1px 0 #666); + color: #fff; + } + + div.jtable-toolbar + { + span.jtable-toolbar-item + { + color: white; + + &.jtable-toolbar-item-hover + { + background-color: #c45206; + } + } + } + } + + table.jtable + { + tbody + { + > tr + { + @highlight-color:#F36301; + + &.jtable-row-selected, + &.jtable-row-selected:hover + { + background-color: @highlight-color; + } + + &.jtable-row-created, + &.jtable-row-updated, + &.jtable-row-deleting + { + background-color: @highlight-color; + } + } + } + } + + div.jtable-bottom-panel + { + .jtable-page-list + { + .jtable-page-number-active,.jtable-page-number-active:hover + { + @bgcolor: #f36301; + + background-color: @bgcolor; + border-color: @bgcolor - #222; + } + } + + span.jtable-add-record + { + a + { + color: #cc5200; + } + } + } +} + +div.jtable-busy-message +{ + border-color: #a14100; + background-color: #f36301; +} \ No newline at end of file diff --git a/lib/themes/lightcolor/orange/jtable.min.css b/lib/themes/lightcolor/orange/jtable.min.css new file mode 100644 index 0000000..e7b4e5c --- /dev/null +++ b/lib/themes/lightcolor/orange/jtable.min.css @@ -0,0 +1 @@ +div.jtable-main-container{position:relative}div.jtable-main-container div.jtable-title{position:relative;text-align:left}div.jtable-main-container div.jtable-title .jtable-close-button{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute;display:inline-block;margin-right:5px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{position:relative;display:inline-block;margin:0 0 0 5px;cursor:pointer;font-size:.9em;padding:2px;vertical-align:bottom}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-icon{display:inline-block;margin:2px;vertical-align:middle;width:16px;height:16px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-text{display:inline-block;margin:2px;vertical-align:middle}div.jtable-main-container div.jtable-title .jtable-close-button+div.jtable-toolbar{margin-right:30px}div.jtable-main-container table.jtable{width:100%}div.jtable-main-container table.jtable thead th{vertical-align:middle;text-align:left}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container{position:relative}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{display:inline-block}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{position:absolute;height:24px;width:8px;right:-8px;top:-2px;z-index:2;cursor:col-resize}div.jtable-main-container table.jtable thead th.jtable-command-column-header{text-align:center}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting{text-align:center;width:1%}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting input{cursor:pointer}div.jtable-main-container table.jtable thead th.jtable-column-header-sortable{cursor:pointer}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button{margin:0;padding:0;cursor:pointer;border:none;display:inline}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button span{display:none}div.jtable-main-container table.jtable tbody tr>td.jtable-command-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column input{cursor:pointer}div.jtable-main-container table.jtable tbody tr.jtable-no-data-row{text-align:center}div.jtable-main-container>div.jtable-bottom-panel{position:relative;min-height:24px;text-align:left}div.jtable-main-container>div.jtable-bottom-panel div.jtable-right-area{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{display:inline-block}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{padding:2px 5px;display:inline-block;cursor:pointer}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{cursor:default}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page input[type=text]{width:22px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{vertical-align:middle}div.jtable-main-container div.jtable-column-resize-bar{opacity:.5;filter:alpha(opacity=50);position:absolute;display:none;width:1px;background-color:#000}div.jtable-main-container div.jtable-column-selection-container{position:absolute;display:none;border:1px solid #c8c8c8;background:#fff;color:#000;z-index:101;padding:5px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list{margin:0;padding:0;list-style:none}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li{margin:0;padding:2px 0}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span{position:relative;top:-1px;margin-left:4px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"]{cursor:pointer}form.jtable-dialog-form div.jtable-input-field-container{padding:2px 0 3px 0;border-bottom:1px solid #ddd}form.jtable-dialog-form div.jtable-input-field-container:last-child{border:none}form.jtable-dialog-form div.jtable-input-label{padding:2px 3px;font-size:1.1em;color:#666}form.jtable-dialog-form div.jtable-input{padding:2px}form.jtable-dialog-form div.jtable-date-input{}form.jtable-dialog-form div.jtable-text-input{}form.jtable-dialog-form span.jtable-option-text-clickable{position:relative;top:-2px}form.jtable-dialog-form div.jtable-textarea-input textarea{width:300px;min-height:60px}form.jtable-dialog-form div.jtable-checkbox-input span,form.jtable-dialog-form div.jtable-radio-input span{padding-left:4px}form.jtable-dialog-form div.jtable-radio-input input,form.jtable-dialog-form div.jtable-checkbox-input input,form.jtable-dialog-form span.jtable-option-text-clickable{cursor:pointer}div.jtable-busy-panel-background{opacity:.1;filter:alpha(opacity=50);z-index:998;position:absolute;background-color:#000}div.jtable-busy-panel-background.jtable-busy-panel-background-invisible{background-color:transparent}div.jtable-busy-message{cursor:wait;z-index:999;position:absolute;margin:5px}div.jtable-contextmenu-overlay{position:fixed;left:0;top:0;width:100%;height:100%;z-index:100}div.jtable-main-container{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px;font-weight:400;color:#222}div.jtable-main-container div.jtable-title{-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;position:relative;line-height:34px;box-shadow:inset 0 1px 0 0 rgba(255,255,255,.5);padding-left:10px;border:1px solid}div.jtable-main-container div.jtable-title div.jtable-title-text{font-weight:bold}div.jtable-main-container div.jtable-title .jtable-close-button{right:6px;top:6px;bottom:6px;position:absolute;opacity:.8;filter:alpha(opacity=50);background:url('../../lightcolor/close.png') no-repeat;width:22px;height:22px}div.jtable-main-container div.jtable-title .jtable-close-button:hover{opacity:1;filter:alpha(opacity=50)}div.jtable-main-container div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute;line-height:26px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon{background-image:url('../../lightcolor/add.png')}div.jtable-main-container table.jtable{border-collapse:collapse;border-spacing:0;border:1px solid #c8c8c8}div.jtable-main-container table.jtable thead{background:url('../../lightcolor/bg-thead.png') repeat-x scroll top left #ddd;border-top:1px solid #fff;border-bottom:1px solid #c8c8c8}div.jtable-main-container table.jtable thead th{padding:4px 3px 4px 6px;border-left:1px solid #fff;border-right:1px solid #c8c8c8}div.jtable-main-container table.jtable thead th:first-child{border-left:none}div.jtable-main-container table.jtable thead thth:last-child{border-right:none}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container{height:20px}div.jtable-main-container table.jtable thead th.jtable-column-header span.jtable-column-header-text{margin-top:3px}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting{padding:5px}div.jtable-main-container table.jtable thead th.jtable-column-header-sortable div.jtable-column-header-container{background:url('../../lightcolor/column-sortable.png') no-repeat right}div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-asc div.jtable-column-header-container{background:url('../../lightcolor/column-asc.png') no-repeat right}div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-desc div.jtable-column-header-container{background:url('../../lightcolor/column-desc.png') no-repeat right}div.jtable-main-container table.jtable tbody>tr{padding:2px;background:#f8f8f8;height:30px}div.jtable-main-container table.jtable tbody>tr>td{padding:5px;border-left:1px dotted #bebebe}div.jtable-main-container table.jtable tbody>tr>td:first-child{border-left:none}div.jtable-main-container table.jtable tbody>tr>td .jtable-edit-command-button{background:url('../../lightcolor/edit.png') no-repeat;width:16px;height:16px}div.jtable-main-container table.jtable tbody>tr>td .jtable-delete-command-button{background:url('../../lightcolor/delete.png') no-repeat;width:16px;height:16px}div.jtable-main-container table.jtable tbody>tr.jtable-row-even{background:#f0f0f0}div.jtable-main-container table.jtable tbody>tr:hover{background:#e8eaef}div.jtable-main-container table.jtable tbody>tr.jtable-row-selected{-webkit-text-shadow:0 1px 0 #333;text-shadow:0 1px 0 #333;color:#fcfcfc}div.jtable-main-container table.jtable tbody>tr.jtable-child-row>td{background-color:#bbb;padding:2px 1px 2px 2px}div.jtable-main-container table.jtable tbody>tr.jtable-child-row>td .jtable{border:none;border-bottom:1px solid #c8c8c8}div.jtable-main-container table.jtable tbody>tr.jtable-child-row>td .jtable-title,div.jtable-main-container table.jtable tbody>tr.jtable-child-row>td .jtable-bottom-panel{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border:none}div.jtable-main-container div.jtable-bottom-panel{-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;padding:1px;background:#fff;border:1px solid #c8c8c8;border-top:none;min-height:24px;line-height:16px;font-size:.9em}div.jtable-main-container div.jtable-bottom-panel div.jtable-right-area{padding:2px}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list{margin:2px}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff;background-color:#ebebeb;border-style:solid;border-width:1px;border-color:#fff #b5b5b5 #b5b5b5 #fff;padding:2px 5px}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover{background-color:#ddd}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{-webkit-text-shadow:0 1px 0 #666;text-shadow:0 1px 0 #666;color:#fcfcfc}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{opacity:.5;filter:alpha(opacity=50)}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled.jtable-page-number-active{opacity:1;filter:alpha(opacity=50)}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover{background-color:#ebebeb}div.jtable-main-container div.jtable-bottom-panel .jtable-page-info{display:inline-block;padding:4px}div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record{margin:3px}div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a{font-weight:bold;text-decoration:none}div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a:hover{text-decoration:underline}div.jtable-main-container div.jtable-column-selection-container{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:2px 2px 4px rgba(50,51,50,.75);-moz-box-shadow:2px 2px 4px rgba(50,51,50,.75);box-shadow:2px 2px 4px rgba(50,51,50,.75)}form.jtable-dialog-form{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px;font-weight:400}form.jtable-dialog-form div.jtable-input-label{font-weight:bold}div.jtable-busy-message{-webkit-text-shadow:0 1px 0 #333;text-shadow:0 1px 0 #333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:2px 2px 4px rgba(50,51,50,.75);-moz-box-shadow:2px 2px 4px rgba(50,51,50,.75);box-shadow:2px 2px 4px rgba(50,51,50,.75);color:#fff;border:1px solid;padding:3px 5px 5px 27px;background:url('../../lightcolor/orange/loading.gif') no-repeat;background-position:5px}div.jtable-main-container div.jtable-title{background:#ffa366;background:-moz-linear-gradient(top,#ffa366 0%,#da5700 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ffa366),color-stop(100%,#da5700));background:-webkit-linear-gradient(top,#ffa366 0%,#da5700 100%);background:-o-linear-gradient(top,#ffa366 0%,#da5700 100%);background:-ms-linear-gradient(top,#ffa366 0%,#da5700 100%);background:linear-gradient(to bottom,#ffa366 0%,#da5700 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa366',endColorstr='#da5700',GradientType=0);border-color:#804620}div.jtable-main-container div.jtable-title div.jtable-title-text{-webkit-text-shadow:0 1px 0 #666;text-shadow:0 1px 0 #666;color:#fff}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{color:#fff}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover{background-color:#c45206}div.jtable-main-container table.jtable tbody>tr.jtable-row-selected,div.jtable-main-container table.jtable tbody>tr.jtable-row-selected:hover{background-color:#f36301}div.jtable-main-container table.jtable tbody>tr.jtable-row-created,div.jtable-main-container table.jtable tbody>tr.jtable-row-updated,div.jtable-main-container table.jtable tbody>tr.jtable-row-deleting{background-color:#f36301}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active:hover{background-color:#f36301;border-color:#d14100}div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a{color:#cc5200}div.jtable-busy-message{border-color:#a14100;background-color:#f36301} \ No newline at end of file diff --git a/lib/themes/lightcolor/orange/loading.gif b/lib/themes/lightcolor/orange/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..65aaae30fb49491702e4f429c5eefd31c7363a8f GIT binary patch literal 723 zcmZ?wbhEHb6ky z8HN^9hIloGtzHZ&d<@Kt3|?{!cOn_ig)qE~XD}6IxD?9pJdR@H|y!qofNBuT~d;wzhe;q#@H&#h5193)`>OQMFky< td .jtable-command-button { + margin: 0px; + padding: 0px; + cursor: pointer; + border: none; + display: inline; +} +div.jtable-main-container table.jtable tbody tr > td .jtable-command-button span { + display: none; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-command-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column input { + cursor: pointer; +} +div.jtable-main-container table.jtable tbody tr.jtable-no-data-row { + text-align: center; +} +div.jtable-main-container > div.jtable-bottom-panel { + position: relative; + min-height: 24px; + text-align: left; +} +div.jtable-main-container > div.jtable-bottom-panel div.jtable-right-area { + right: 0px; + top: 0px; + bottom: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + display: inline-block; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + padding: 2px 5px; + display: inline-block; + cursor: pointer; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page input[type=text] { + width: 22px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + vertical-align: middle; +} +div.jtable-main-container div.jtable-column-resize-bar { + opacity: 0.5; + filter: alpha(opacity=50); + position: absolute; + display: none; + width: 1px; + background-color: #000; +} +div.jtable-main-container div.jtable-column-selection-container { + position: absolute; + display: none; + border: 1px solid #C8C8C8; + background: #fff; + color: #000; + z-index: 101; + padding: 5px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list { + margin: 0px; + padding: 0px; + list-style: none; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li { + margin: 0px; + padding: 2px 0px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span { + position: relative; + top: -1px; + margin-left: 4px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"] { + cursor: pointer; +} +form.jtable-dialog-form div.jtable-input-field-container { + padding: 2px 0px 3px 0px; + border-bottom: 1px solid #ddd; +} +form.jtable-dialog-form div.jtable-input-field-container:last-child { + border: none; +} +form.jtable-dialog-form div.jtable-input-label { + padding: 2px 3px; + font-size: 1.1em; + color: #666; +} +form.jtable-dialog-form div.jtable-input { + padding: 2px; +} +form.jtable-dialog-form div.jtable-date-input { + /* No additional style */ + +} +form.jtable-dialog-form div.jtable-text-input { + /* No additional style */ + +} +form.jtable-dialog-form span.jtable-option-text-clickable { + position: relative; + top: -2px; +} +form.jtable-dialog-form div.jtable-textarea-input textarea { + width: 300px; + min-height: 60px; +} +form.jtable-dialog-form div.jtable-checkbox-input span, +form.jtable-dialog-form div.jtable-radio-input span { + padding-left: 4px; +} +form.jtable-dialog-form div.jtable-radio-input input, +form.jtable-dialog-form div.jtable-checkbox-input input, +form.jtable-dialog-form span.jtable-option-text-clickable { + cursor: pointer; +} +div.jtable-busy-panel-background { + opacity: 0.1; + filter: alpha(opacity=50); + z-index: 998; + position: absolute; + background-color: #000; +} +div.jtable-busy-panel-background.jtable-busy-panel-background-invisible { + background-color: transparent; +} +div.jtable-busy-message { + cursor: wait; + z-index: 999; + position: absolute; + margin: 5px; +} +div.jtable-contextmenu-overlay { + position: fixed; + left: 0px; + top: 0px; + width: 100%; + height: 100%; + z-index: 100; +} +div.jtable-main-container { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; + font-weight: 400; + color: #222; +} +div.jtable-main-container div.jtable-title { + -webkit-border-radius: 3px 3px 0 0; + -moz-border-radius: 3px 3px 0 0; + border-radius: 3px 3px 0 0; + position: relative; + line-height: 34px; + box-shadow: inset 0 1px 0 0 rgba(255, 255, 255, 0.5); + padding-left: 10px; + border: 1px solid; +} +div.jtable-main-container div.jtable-title div.jtable-title-text { + font-weight: bold; +} +div.jtable-main-container div.jtable-title .jtable-close-button { + right: 6px; + top: 6px; + bottom: 6px; + position: absolute; + opacity: 0.8; + filter: alpha(opacity=50); + background: url('../../lightcolor/close.png') no-repeat; + width: 22px; + height: 22px; +} +div.jtable-main-container div.jtable-title .jtable-close-button:hover { + opacity: 1; + filter: alpha(opacity=50); +} +div.jtable-main-container div.jtable-title div.jtable-toolbar { + bottom: 0px; + right: 0px; + position: absolute; + line-height: 26px; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon { + background-image: url('../../lightcolor/add.png'); +} +div.jtable-main-container table.jtable { + border-collapse: collapse; + border-spacing: 0; + border: 1px solid #C8C8C8; +} +div.jtable-main-container table.jtable thead { + background: url('../../lightcolor/bg-thead.png') repeat-x scroll top left #dddddd; + border-top: 1px solid #fff; + border-bottom: 1px solid #C8C8C8; +} +div.jtable-main-container table.jtable thead th { + padding: 4px 3px 4px 6px; + border-left: 1px solid #fff; + border-right: 1px solid #C8C8C8; +} +div.jtable-main-container table.jtable thead th:first-child { + border-left: none; +} +div.jtable-main-container table.jtable thead thth:last-child { + border-right: none; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container { + height: 20px; +} +div.jtable-main-container table.jtable thead th.jtable-column-header span.jtable-column-header-text { + margin-top: 3px; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-selecting { + padding: 5px; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sortable div.jtable-column-header-container { + background: url('../../lightcolor/column-sortable.png') no-repeat right; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-asc div.jtable-column-header-container { + background: url('../../lightcolor/column-asc.png') no-repeat right; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-desc div.jtable-column-header-container { + background: url('../../lightcolor/column-desc.png') no-repeat right; +} +div.jtable-main-container table.jtable tbody > tr { + padding: 2px; + background: #f8f8f8; + height: 30px; +} +div.jtable-main-container table.jtable tbody > tr > td { + padding: 5px; + border-left: 1px dotted #bebebe; +} +div.jtable-main-container table.jtable tbody > tr > td:first-child { + border-left: none; +} +div.jtable-main-container table.jtable tbody > tr > td .jtable-edit-command-button { + background: url('../../lightcolor/edit.png') no-repeat; + width: 16px; + height: 16px; +} +div.jtable-main-container table.jtable tbody > tr > td .jtable-delete-command-button { + background: url('../../lightcolor/delete.png') no-repeat; + width: 16px; + height: 16px; +} +div.jtable-main-container table.jtable tbody > tr.jtable-row-even { + background: #f0f0f0; +} +div.jtable-main-container table.jtable tbody > tr:hover { + background: #e8eaef; +} +div.jtable-main-container table.jtable tbody > tr.jtable-row-selected { + -webkit-text-shadow: 0 1px 0 #333333; + text-shadow: 0 1px 0 #333333; + color: #FCFCFC; +} +div.jtable-main-container table.jtable tbody > tr.jtable-child-row > td { + background-color: #bbb; + padding: 2px 1px 2px 2px; +} +div.jtable-main-container table.jtable tbody > tr.jtable-child-row > td .jtable { + border: none; + border-bottom: 1px solid #C8C8C8; +} +div.jtable-main-container table.jtable tbody > tr.jtable-child-row > td .jtable-title, +div.jtable-main-container table.jtable tbody > tr.jtable-child-row > td .jtable-bottom-panel { + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + border-radius: 0px; + border: none; +} +div.jtable-main-container div.jtable-bottom-panel { + -webkit-border-radius: 0px 0px 3px 3px; + -moz-border-radius: 0px 0px 3px 3px; + border-radius: 0px 0px 3px 3px; + padding: 1px; + background: #fff; + border: 1px solid #C8C8C8; + border-top: none; + min-height: 24px; + line-height: 16px; + font-size: 0.9em; +} +div.jtable-main-container div.jtable-bottom-panel div.jtable-right-area { + padding: 2px; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list { + margin: 2px; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + -webkit-text-shadow: 0 1px 0 #ffffff; + text-shadow: 0 1px 0 #ffffff; + background-color: #ebebeb; + border-style: solid; + border-width: 1px; + border-color: #ffffff #b5b5b5 #b5b5b5 #ffffff; + padding: 2px 5px; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover { + background-color: #ddd; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + -webkit-text-shadow: 0 1px 0 #666666; + text-shadow: 0 1px 0 #666666; + color: #FCFCFC; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled.jtable-page-number-active { + opacity: 1; + filter: alpha(opacity=50); +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover { + background-color: #ebebeb; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-info { + display: inline-block; + padding: 4px; +} +div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record { + margin: 3px; +} +div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a { + font-weight: bold; + text-decoration: none; +} +div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a:hover { + text-decoration: underline; +} +div.jtable-main-container div.jtable-column-selection-container { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + -moz-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); +} +form.jtable-dialog-form { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; + font-weight: 400; +} +form.jtable-dialog-form div.jtable-input-label { + font-weight: bold; +} +div.jtable-busy-message { + -webkit-text-shadow: 0 1px 0 #333333; + text-shadow: 0 1px 0 #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + -moz-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75); + color: #fff; + border: 1px solid; + padding: 3px 5px 5px 27px; + background: url('../../lightcolor/red/loading.gif') no-repeat; + background-position: 5px; +} +div.jtable-main-container div.jtable-title { + background: #eb6565; + background: -moz-linear-gradient(top, #eb6565 0%, #9d0d0d 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #eb6565), color-stop(100%, #9d0d0d)); + background: -webkit-linear-gradient(top, #eb6565 0%, #9d0d0d 100%); + background: -o-linear-gradient(top, #eb6565 0%, #9d0d0d 100%); + background: -ms-linear-gradient(top, #eb6565 0%, #9d0d0d 100%); + background: linear-gradient(to bottom, #eb6565 0%, #9d0d0d 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eb6565', endColorstr='#9d0d0d', GradientType=0); + border-color: #772b2b; +} +div.jtable-main-container div.jtable-title div.jtable-title-text { + -webkit-text-shadow: 0 1px 0 #666666; + text-shadow: 0 1px 0 #666666; + color: #fff; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item { + color: white; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover { + background-color: #9a1414; +} +div.jtable-main-container table.jtable tbody > tr.jtable-row-selected, +div.jtable-main-container table.jtable tbody > tr.jtable-row-selected:hover { + background-color: #ea2a2a; +} +div.jtable-main-container table.jtable tbody > tr.jtable-row-created, +div.jtable-main-container table.jtable tbody > tr.jtable-row-updated, +div.jtable-main-container table.jtable tbody > tr.jtable-row-deleting { + background-color: #ea2a2a; +} +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active, +div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active:hover { + background-color: #b11515; + border-color: #8f0000; +} +div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a { + color: #772b2b; +} +div.jtable-busy-message { + border-color: #772b2b; + background-color: #ea2a2a; +} diff --git a/lib/themes/lightcolor/red/jtable.less b/lib/themes/lightcolor/red/jtable.less new file mode 100644 index 0000000..ac84f63 --- /dev/null +++ b/lib/themes/lightcolor/red/jtable.less @@ -0,0 +1,90 @@ +/* jTable light color theme - Red + * Created by Halil İbrahim Kalkan + * http://www.jtable.org + */ + +@import "../jtable_lightcolor_base.less"; + +@theme-folder: 'red'; + +.jtable_lightcolor_base(@theme-folder); + +div.jtable-main-container +{ + div.jtable-title + { + .vertical-gradient(#eb6565,#9d0d0d); + border-color: #772b2b; + + div.jtable-title-text + { + .text-shadow(0 1px 0 #666); + color: #fff; + } + + div.jtable-toolbar + { + span.jtable-toolbar-item + { + color: white; + + &.jtable-toolbar-item-hover + { + background-color: #9a1414; + } + } + } + } + + table.jtable + { + tbody + { + > tr + { + @highlight-color:#ea2a2a; + + &.jtable-row-selected, + &.jtable-row-selected:hover + { + background-color: @highlight-color; + } + + &.jtable-row-created, + &.jtable-row-updated, + &.jtable-row-deleting + { + background-color: @highlight-color; + } + } + } + } + + div.jtable-bottom-panel + { + .jtable-page-list + { + .jtable-page-number-active,.jtable-page-number-active:hover + { + @bgcolor: #b11515; + + background-color: @bgcolor; + border-color: @bgcolor - #222; + } + } + + span.jtable-add-record + { + a + { + color: #772b2b; + } + } + } +} + +div.jtable-busy-message +{ + border-color: #772b2b; + background-color: #ea2a2a; +} \ No newline at end of file diff --git a/lib/themes/lightcolor/red/jtable.min.css b/lib/themes/lightcolor/red/jtable.min.css new file mode 100644 index 0000000..fa5a548 --- /dev/null +++ b/lib/themes/lightcolor/red/jtable.min.css @@ -0,0 +1 @@ +div.jtable-main-container{position:relative}div.jtable-main-container div.jtable-title{position:relative;text-align:left}div.jtable-main-container div.jtable-title .jtable-close-button{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute;display:inline-block;margin-right:5px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{position:relative;display:inline-block;margin:0 0 0 5px;cursor:pointer;font-size:.9em;padding:2px;vertical-align:bottom}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-icon{display:inline-block;margin:2px;vertical-align:middle;width:16px;height:16px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-text{display:inline-block;margin:2px;vertical-align:middle}div.jtable-main-container div.jtable-title .jtable-close-button+div.jtable-toolbar{margin-right:30px}div.jtable-main-container table.jtable{width:100%}div.jtable-main-container table.jtable thead th{vertical-align:middle;text-align:left}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container{position:relative}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{display:inline-block}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{position:absolute;height:24px;width:8px;right:-8px;top:-2px;z-index:2;cursor:col-resize}div.jtable-main-container table.jtable thead th.jtable-command-column-header{text-align:center}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting{text-align:center;width:1%}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting input{cursor:pointer}div.jtable-main-container table.jtable thead th.jtable-column-header-sortable{cursor:pointer}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button{margin:0;padding:0;cursor:pointer;border:none;display:inline}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button span{display:none}div.jtable-main-container table.jtable tbody tr>td.jtable-command-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column input{cursor:pointer}div.jtable-main-container table.jtable tbody tr.jtable-no-data-row{text-align:center}div.jtable-main-container>div.jtable-bottom-panel{position:relative;min-height:24px;text-align:left}div.jtable-main-container>div.jtable-bottom-panel div.jtable-right-area{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{display:inline-block}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{padding:2px 5px;display:inline-block;cursor:pointer}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{cursor:default}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page input[type=text]{width:22px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{vertical-align:middle}div.jtable-main-container div.jtable-column-resize-bar{opacity:.5;filter:alpha(opacity=50);position:absolute;display:none;width:1px;background-color:#000}div.jtable-main-container div.jtable-column-selection-container{position:absolute;display:none;border:1px solid #c8c8c8;background:#fff;color:#000;z-index:101;padding:5px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list{margin:0;padding:0;list-style:none}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li{margin:0;padding:2px 0}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span{position:relative;top:-1px;margin-left:4px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"]{cursor:pointer}form.jtable-dialog-form div.jtable-input-field-container{padding:2px 0 3px 0;border-bottom:1px solid #ddd}form.jtable-dialog-form div.jtable-input-field-container:last-child{border:none}form.jtable-dialog-form div.jtable-input-label{padding:2px 3px;font-size:1.1em;color:#666}form.jtable-dialog-form div.jtable-input{padding:2px}form.jtable-dialog-form div.jtable-date-input{}form.jtable-dialog-form div.jtable-text-input{}form.jtable-dialog-form span.jtable-option-text-clickable{position:relative;top:-2px}form.jtable-dialog-form div.jtable-textarea-input textarea{width:300px;min-height:60px}form.jtable-dialog-form div.jtable-checkbox-input span,form.jtable-dialog-form div.jtable-radio-input span{padding-left:4px}form.jtable-dialog-form div.jtable-radio-input input,form.jtable-dialog-form div.jtable-checkbox-input input,form.jtable-dialog-form span.jtable-option-text-clickable{cursor:pointer}div.jtable-busy-panel-background{opacity:.1;filter:alpha(opacity=50);z-index:998;position:absolute;background-color:#000}div.jtable-busy-panel-background.jtable-busy-panel-background-invisible{background-color:transparent}div.jtable-busy-message{cursor:wait;z-index:999;position:absolute;margin:5px}div.jtable-contextmenu-overlay{position:fixed;left:0;top:0;width:100%;height:100%;z-index:100}div.jtable-main-container{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px;font-weight:400;color:#222}div.jtable-main-container div.jtable-title{-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;position:relative;line-height:34px;box-shadow:inset 0 1px 0 0 rgba(255,255,255,.5);padding-left:10px;border:1px solid}div.jtable-main-container div.jtable-title div.jtable-title-text{font-weight:bold}div.jtable-main-container div.jtable-title .jtable-close-button{right:6px;top:6px;bottom:6px;position:absolute;opacity:.8;filter:alpha(opacity=50);background:url('../../lightcolor/close.png') no-repeat;width:22px;height:22px}div.jtable-main-container div.jtable-title .jtable-close-button:hover{opacity:1;filter:alpha(opacity=50)}div.jtable-main-container div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute;line-height:26px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon{background-image:url('../../lightcolor/add.png')}div.jtable-main-container table.jtable{border-collapse:collapse;border-spacing:0;border:1px solid #c8c8c8}div.jtable-main-container table.jtable thead{background:url('../../lightcolor/bg-thead.png') repeat-x scroll top left #ddd;border-top:1px solid #fff;border-bottom:1px solid #c8c8c8}div.jtable-main-container table.jtable thead th{padding:4px 3px 4px 6px;border-left:1px solid #fff;border-right:1px solid #c8c8c8}div.jtable-main-container table.jtable thead th:first-child{border-left:none}div.jtable-main-container table.jtable thead thth:last-child{border-right:none}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container{height:20px}div.jtable-main-container table.jtable thead th.jtable-column-header span.jtable-column-header-text{margin-top:3px}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting{padding:5px}div.jtable-main-container table.jtable thead th.jtable-column-header-sortable div.jtable-column-header-container{background:url('../../lightcolor/column-sortable.png') no-repeat right}div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-asc div.jtable-column-header-container{background:url('../../lightcolor/column-asc.png') no-repeat right}div.jtable-main-container table.jtable thead th.jtable-column-header-sorted-desc div.jtable-column-header-container{background:url('../../lightcolor/column-desc.png') no-repeat right}div.jtable-main-container table.jtable tbody>tr{padding:2px;background:#f8f8f8;height:30px}div.jtable-main-container table.jtable tbody>tr>td{padding:5px;border-left:1px dotted #bebebe}div.jtable-main-container table.jtable tbody>tr>td:first-child{border-left:none}div.jtable-main-container table.jtable tbody>tr>td .jtable-edit-command-button{background:url('../../lightcolor/edit.png') no-repeat;width:16px;height:16px}div.jtable-main-container table.jtable tbody>tr>td .jtable-delete-command-button{background:url('../../lightcolor/delete.png') no-repeat;width:16px;height:16px}div.jtable-main-container table.jtable tbody>tr.jtable-row-even{background:#f0f0f0}div.jtable-main-container table.jtable tbody>tr:hover{background:#e8eaef}div.jtable-main-container table.jtable tbody>tr.jtable-row-selected{-webkit-text-shadow:0 1px 0 #333;text-shadow:0 1px 0 #333;color:#fcfcfc}div.jtable-main-container table.jtable tbody>tr.jtable-child-row>td{background-color:#bbb;padding:2px 1px 2px 2px}div.jtable-main-container table.jtable tbody>tr.jtable-child-row>td .jtable{border:none;border-bottom:1px solid #c8c8c8}div.jtable-main-container table.jtable tbody>tr.jtable-child-row>td .jtable-title,div.jtable-main-container table.jtable tbody>tr.jtable-child-row>td .jtable-bottom-panel{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border:none}div.jtable-main-container div.jtable-bottom-panel{-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;padding:1px;background:#fff;border:1px solid #c8c8c8;border-top:none;min-height:24px;line-height:16px;font-size:.9em}div.jtable-main-container div.jtable-bottom-panel div.jtable-right-area{padding:2px}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list{margin:2px}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff;background-color:#ebebeb;border-style:solid;border-width:1px;border-color:#fff #b5b5b5 #b5b5b5 #fff;padding:2px 5px}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover{background-color:#ddd}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{-webkit-text-shadow:0 1px 0 #666;text-shadow:0 1px 0 #666;color:#fcfcfc}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{opacity:.5;filter:alpha(opacity=50)}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled.jtable-page-number-active{opacity:1;filter:alpha(opacity=50)}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover{background-color:#ebebeb}div.jtable-main-container div.jtable-bottom-panel .jtable-page-info{display:inline-block;padding:4px}div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record{margin:3px}div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a{font-weight:bold;text-decoration:none}div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a:hover{text-decoration:underline}div.jtable-main-container div.jtable-column-selection-container{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:2px 2px 4px rgba(50,51,50,.75);-moz-box-shadow:2px 2px 4px rgba(50,51,50,.75);box-shadow:2px 2px 4px rgba(50,51,50,.75)}form.jtable-dialog-form{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px;font-weight:400}form.jtable-dialog-form div.jtable-input-label{font-weight:bold}div.jtable-busy-message{-webkit-text-shadow:0 1px 0 #333;text-shadow:0 1px 0 #333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:2px 2px 4px rgba(50,51,50,.75);-moz-box-shadow:2px 2px 4px rgba(50,51,50,.75);box-shadow:2px 2px 4px rgba(50,51,50,.75);color:#fff;border:1px solid;padding:3px 5px 5px 27px;background:url('../../lightcolor/red/loading.gif') no-repeat;background-position:5px}div.jtable-main-container div.jtable-title{background:#eb6565;background:-moz-linear-gradient(top,#eb6565 0%,#9d0d0d 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#eb6565),color-stop(100%,#9d0d0d));background:-webkit-linear-gradient(top,#eb6565 0%,#9d0d0d 100%);background:-o-linear-gradient(top,#eb6565 0%,#9d0d0d 100%);background:-ms-linear-gradient(top,#eb6565 0%,#9d0d0d 100%);background:linear-gradient(to bottom,#eb6565 0%,#9d0d0d 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eb6565',endColorstr='#9d0d0d',GradientType=0);border-color:#772b2b}div.jtable-main-container div.jtable-title div.jtable-title-text{-webkit-text-shadow:0 1px 0 #666;text-shadow:0 1px 0 #666;color:#fff}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{color:#fff}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover{background-color:#9a1414}div.jtable-main-container table.jtable tbody>tr.jtable-row-selected,div.jtable-main-container table.jtable tbody>tr.jtable-row-selected:hover{background-color:#ea2a2a}div.jtable-main-container table.jtable tbody>tr.jtable-row-created,div.jtable-main-container table.jtable tbody>tr.jtable-row-updated,div.jtable-main-container table.jtable tbody>tr.jtable-row-deleting{background-color:#ea2a2a}div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active,div.jtable-main-container div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active:hover{background-color:#b11515;border-color:#8f0000}div.jtable-main-container div.jtable-bottom-panel span.jtable-add-record a{color:#772b2b}div.jtable-busy-message{border-color:#772b2b;background-color:#ea2a2a} \ No newline at end of file diff --git a/lib/themes/lightcolor/red/loading.gif b/lib/themes/lightcolor/red/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..c838e6d42c37fdeddd66e8913c3aab703b8bad0f GIT binary patch literal 723 zcmZ?wbhEHb6kyuPGOKn??g7CU>nsAvQ~|7tloc~({z z9-ewJu^0h?_44w{Y;4R74DLKUm(|pcDJwtF&@krYJf)&?PeWt5oZMt7sa=YSx7F3b z#()ULe^Smxsfi`2DGKG8B^e5dS&0=n`H3ldnR#jX42nNlfX)D_`p@m>8WQa67~pE8 zXTZz|6w(3d204;}RaZfwFC}x{k_B9kPBE=>5NNhIV_I;z`rhpw^ZD4H2)1u|BAcL+kSM{LFmFYsO#8%r2W}l&`R3B{-sf-jzTO?7uQ7+U(OR%m zf(fdT30b2V(CY3)oyQ$2oJvwW$xD(JX`GZkzoqxJk<@|d%m|d9yWfddA~L+j3{c z@+rLe+q6AV@By>lbYGSJ8755ex(sG!rx)yd5X1p>5*xBv`Vh080Nt}<)4NqgGO9sa scpsRq|GizNU^@4=t|PMwTV;O5=`xtGIY+Kv0t+B^ip;PEB@r+H0Mbk2j{pDw literal 0 HcmV?d00001 diff --git a/lib/themes/metro/add.png b/lib/themes/metro/add.png new file mode 100644 index 0000000000000000000000000000000000000000..08221ece4ddf2557c9902c5eecd3c55ce08d3587 GIT binary patch literal 482 zcmV<80UiE{P)M?#z-t962!6qm`mEeNFD+)uEUD4?0eP^STs%Nd2_658y~Ywoq)&8 Y9i3*Hpp6w4ZvX%Q07*qoM6N<$f<76;D*ylh literal 0 HcmV?d00001 diff --git a/lib/themes/metro/blue/jtable.css b/lib/themes/metro/blue/jtable.css new file mode 100644 index 0000000..88429fe --- /dev/null +++ b/lib/themes/metro/blue/jtable.css @@ -0,0 +1,495 @@ +/* jTable metro style theme - Blue + * Created by Halil İbrahim Kalkan + * http://www.jtable.org + */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + src: local('Open Sans Light'), local('OpenSans-Light'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/DXI1ORHCpsQm3Vp6mXoaTRa1RVmPjeKy21_GQJaLlJI.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 300; + src: local('Open Sans Light Italic'), local('OpenSansLight-Italic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxrsuoFAk0leveMLeqYtnfAY.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans'), local('OpenSans'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/u-WUoqrET9fUeobQW7jkRT8E0i7KZn-EPnyo3HZu7kw.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans Italic'), local('OpenSans-Italic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/xjAJXh38I15wypJXxuGMBtIh4imgI8P11RFo6YPCPC0.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/MTP_ySUJH_bn48VBG8sNSha1RVmPjeKy21_GQJaLlJI.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 600; + src: local('Open Sans Semibold Italic'), local('OpenSans-SemiboldItalic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxmWeb5PoA5ztb49yLyUzH1A.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: local('Open Sans Bold'), local('OpenSans-Bold'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/k3k702ZOKiLJc3WVjuplzBa1RVmPjeKy21_GQJaLlJI.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxoUt79146ZFaIJxILcpzmhI.woff) format('woff'); +} +div.jtable-main-container { + position: relative; +} +div.jtable-main-container div.jtable-title { + position: relative; + text-align: left; +} +div.jtable-main-container div.jtable-title .jtable-close-button { + right: 0px; + top: 0px; + bottom: 0px; + position: absolute; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar { + bottom: 0px; + right: 0px; + position: absolute; + display: inline-block; + margin-right: 5px; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item { + position: relative; + display: inline-block; + margin: 0px 0px 0px 5px; + cursor: pointer; + font-size: 0.9em; + padding: 2px; + vertical-align: bottom; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-icon { + display: inline-block; + margin: 2px; + vertical-align: middle; + width: 16px; + height: 16px; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-text { + display: inline-block; + margin: 2px; + vertical-align: middle; +} +div.jtable-main-container div.jtable-title .jtable-close-button + div.jtable-toolbar { + margin-right: 30px; +} +div.jtable-main-container table.jtable { + width: 100%; +} +div.jtable-main-container table.jtable thead th { + vertical-align: middle; + text-align: left; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container { + position: relative; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text { + display: inline-block; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler { + position: absolute; + height: 24px; + width: 8px; + right: -8px; + top: -2px; + z-index: 2; + cursor: col-resize; +} +div.jtable-main-container table.jtable thead th.jtable-command-column-header { + text-align: center; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-selecting { + text-align: center; + width: 1%; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-selecting input { + cursor: pointer; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sortable { + cursor: pointer; +} +div.jtable-main-container table.jtable tbody tr > td .jtable-command-button { + margin: 0px; + padding: 0px; + cursor: pointer; + border: none; + display: inline; +} +div.jtable-main-container table.jtable tbody tr > td .jtable-command-button span { + display: none; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-command-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column input { + cursor: pointer; +} +div.jtable-main-container table.jtable tbody tr.jtable-no-data-row { + text-align: center; +} +div.jtable-main-container > div.jtable-bottom-panel { + position: relative; + min-height: 24px; + text-align: left; +} +div.jtable-main-container > div.jtable-bottom-panel div.jtable-right-area { + right: 0px; + top: 0px; + bottom: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + display: inline-block; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + padding: 2px 5px; + display: inline-block; + cursor: pointer; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page input[type=text] { + width: 22px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + vertical-align: middle; +} +div.jtable-main-container div.jtable-column-resize-bar { + opacity: 0.5; + filter: alpha(opacity=50); + position: absolute; + display: none; + width: 1px; + background-color: #000; +} +div.jtable-main-container div.jtable-column-selection-container { + position: absolute; + display: none; + border: 1px solid #C8C8C8; + background: #fff; + color: #000; + z-index: 101; + padding: 5px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list { + margin: 0px; + padding: 0px; + list-style: none; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li { + margin: 0px; + padding: 2px 0px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span { + position: relative; + top: -1px; + margin-left: 4px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"] { + cursor: pointer; +} +form.jtable-dialog-form div.jtable-input-field-container { + padding: 2px 0px 3px 0px; + border-bottom: 1px solid #ddd; +} +form.jtable-dialog-form div.jtable-input-field-container:last-child { + border: none; +} +form.jtable-dialog-form div.jtable-input-label { + padding: 2px 3px; + font-size: 1.1em; + color: #666; +} +form.jtable-dialog-form div.jtable-input { + padding: 2px; +} +form.jtable-dialog-form div.jtable-date-input { + /* No additional style */ + +} +form.jtable-dialog-form div.jtable-text-input { + /* No additional style */ + +} +form.jtable-dialog-form span.jtable-option-text-clickable { + position: relative; + top: -2px; +} +form.jtable-dialog-form div.jtable-textarea-input textarea { + width: 300px; + min-height: 60px; +} +form.jtable-dialog-form div.jtable-checkbox-input span, +form.jtable-dialog-form div.jtable-radio-input span { + padding-left: 4px; +} +form.jtable-dialog-form div.jtable-radio-input input, +form.jtable-dialog-form div.jtable-checkbox-input input, +form.jtable-dialog-form span.jtable-option-text-clickable { + cursor: pointer; +} +div.jtable-busy-panel-background { + opacity: 0.1; + filter: alpha(opacity=50); + z-index: 998; + position: absolute; + background-color: #000; +} +div.jtable-busy-panel-background.jtable-busy-panel-background-invisible { + background-color: transparent; +} +div.jtable-busy-message { + cursor: wait; + z-index: 999; + position: absolute; + margin: 5px; +} +div.jtable-contextmenu-overlay { + position: fixed; + left: 0px; + top: 0px; + width: 100%; + height: 100%; + z-index: 100; +} +div.jtable-main-container { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 14px; + background: #fff; + line-height: 1.3; +} +div.jtable-main-container > div.jtable-title { + background-color: #0b67cd; + padding-left: 10px; +} +div.jtable-main-container > div.jtable-title div.jtable-title-text { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 19px; + line-height: 34px; + color: #fff; +} +div.jtable-main-container > div.jtable-title .jtable-close-button { + right: 8px; + top: 8px; + bottom: 8px; + position: absolute; + opacity: 0.5; + filter: alpha(opacity=50); + background: url('../../metro/close.png') no-repeat; + width: 16px; + height: 16px; +} +div.jtable-main-container > div.jtable-title .jtable-close-button:hover { + opacity: 1; + filter: alpha(opacity=50); +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar { + bottom: 0px; + right: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item { + background-color: #1571d7; + color: white; +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon { + background-image: url('../../metro/add.png'); +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover { + background-color: #1c78de; + padding-bottom: 6px; +} +div.jtable-main-container > table.jtable { + border: 1px solid #2d89ef; + border-collapse: collapse; + border-spacing: 0; +} +div.jtable-main-container > table.jtable > thead { + background-color: #2d89ef; +} +div.jtable-main-container > table.jtable > thead th { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 15px; + color: #fff; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container { + height: 24px; + margin-left: 4px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler { + height: 28px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text { + margin-top: 2px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sortable div.jtable-column-header-container { + background: url('../../metro/column-sortable.png') no-repeat right; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sorted-asc div.jtable-column-header-container { + background: url('../../metro/column-asc.png') no-repeat right; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sorted-desc div.jtable-column-header-container { + background: url('../../metro/column-desc.png') no-repeat right; +} +div.jtable-main-container > table.jtable > tbody > tr { + background-color: #fff; +} +div.jtable-main-container > table.jtable > tbody > tr > td { + border: 1px solid #ddd; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td { + padding: 4px; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-edit-command-button { + background: url('../../metro/edit.png') no-repeat; + width: 16px; + height: 16px; + opacity: 0.4; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-edit-command-button:hover { + opacity: 0.8; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-delete-command-button { + background: url('../../metro/delete.png') no-repeat; + width: 16px; + height: 16px; + opacity: 0.4; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-delete-command-button:hover { + opacity: 0.8; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-even { + background-color: #f9f9f9; +} +div.jtable-main-container > table.jtable > tbody > tr:hover { + background: #e8eaef; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-selected { + color: #fff; + background-color: #4fabff; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-created { + background-color: #60bcff; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-updated { + background-color: #60bcff; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-deleting { + background-color: #e51400; + color: #fff; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-child-row > td { + padding: 2px; + background-color: #fff; +} +div.jtable-main-container > div.jtable-bottom-panel { + background-color: #1c78de; + color: #fff; + min-height: 22.900000000000002px; + font-size: 13px; + border: 1px solid #2d89ef; + border-top: none; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + margin: 1px 0px 0px 0px; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + background-color: #2d89ef; + margin: 1px; + padding: 2px 5px; + color: #fff; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover { + background-color: #4fabff; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + opacity: 0.75; + filter: alpha(opacity=50); + color: #ccc; + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover { + background-color: #2d89ef; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + display: inline-block; + padding: 4px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + display: inline-block; + padding: 2px 0px 2px 0px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + display: inline-block; + padding: 2px 0px 2px 0px; +} +form.jtable-dialog-form { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 400; + font-size: 14px; +} +div.jtable-busy-message { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 16px; + border: 1px solid #fff; + padding: 5px 5px 5px 58px; + color: #fff; + background: url('../../metro/blue/loading.gif') no-repeat; + background-color: #0b67cd; + background-position: 8px; +} diff --git a/lib/themes/metro/blue/jtable.less b/lib/themes/metro/blue/jtable.less new file mode 100644 index 0000000..f953e7e --- /dev/null +++ b/lib/themes/metro/blue/jtable.less @@ -0,0 +1,11 @@ +/* jTable metro style theme - Blue + * Created by Halil İbrahim Kalkan + * http://www.jtable.org + */ + +@import "../jtable_metro_base.less"; + +@theme-folder: 'blue'; +@main-theme-color: #2D89EF; + +.jtable_metro_base(@theme-folder, @main-theme-color); \ No newline at end of file diff --git a/lib/themes/metro/blue/jtable.min.css b/lib/themes/metro/blue/jtable.min.css new file mode 100644 index 0000000..a1a1015 --- /dev/null +++ b/lib/themes/metro/blue/jtable.min.css @@ -0,0 +1 @@ +@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('Open Sans Light'),local('OpenSans-Light'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/DXI1ORHCpsQm3Vp6mXoaTRa1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300;src:local('Open Sans Light Italic'),local('OpenSansLight-Italic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxrsuoFAk0leveMLeqYtnfAY.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans'),local('OpenSans'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/u-WUoqrET9fUeobQW7jkRT8E0i7KZn-EPnyo3HZu7kw.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/xjAJXh38I15wypJXxuGMBtIh4imgI8P11RFo6YPCPC0.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;src:local('Open Sans Semibold'),local('OpenSans-Semibold'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/MTP_ySUJH_bn48VBG8sNSha1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:600;src:local('Open Sans Semibold Italic'),local('OpenSans-SemiboldItalic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxmWeb5PoA5ztb49yLyUzH1A.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/k3k702ZOKiLJc3WVjuplzBa1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local('Open Sans Bold Italic'),local('OpenSans-BoldItalic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxoUt79146ZFaIJxILcpzmhI.woff) format('woff')}div.jtable-main-container{position:relative}div.jtable-main-container div.jtable-title{position:relative;text-align:left}div.jtable-main-container div.jtable-title .jtable-close-button{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute;display:inline-block;margin-right:5px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{position:relative;display:inline-block;margin:0 0 0 5px;cursor:pointer;font-size:.9em;padding:2px;vertical-align:bottom}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-icon{display:inline-block;margin:2px;vertical-align:middle;width:16px;height:16px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-text{display:inline-block;margin:2px;vertical-align:middle}div.jtable-main-container div.jtable-title .jtable-close-button+div.jtable-toolbar{margin-right:30px}div.jtable-main-container table.jtable{width:100%}div.jtable-main-container table.jtable thead th{vertical-align:middle;text-align:left}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container{position:relative}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{display:inline-block}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{position:absolute;height:24px;width:8px;right:-8px;top:-2px;z-index:2;cursor:col-resize}div.jtable-main-container table.jtable thead th.jtable-command-column-header{text-align:center}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting{text-align:center;width:1%}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting input{cursor:pointer}div.jtable-main-container table.jtable thead th.jtable-column-header-sortable{cursor:pointer}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button{margin:0;padding:0;cursor:pointer;border:none;display:inline}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button span{display:none}div.jtable-main-container table.jtable tbody tr>td.jtable-command-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column input{cursor:pointer}div.jtable-main-container table.jtable tbody tr.jtable-no-data-row{text-align:center}div.jtable-main-container>div.jtable-bottom-panel{position:relative;min-height:24px;text-align:left}div.jtable-main-container>div.jtable-bottom-panel div.jtable-right-area{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{display:inline-block}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{padding:2px 5px;display:inline-block;cursor:pointer}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{cursor:default}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page input[type=text]{width:22px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{vertical-align:middle}div.jtable-main-container div.jtable-column-resize-bar{opacity:.5;filter:alpha(opacity=50);position:absolute;display:none;width:1px;background-color:#000}div.jtable-main-container div.jtable-column-selection-container{position:absolute;display:none;border:1px solid #c8c8c8;background:#fff;color:#000;z-index:101;padding:5px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list{margin:0;padding:0;list-style:none}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li{margin:0;padding:2px 0}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span{position:relative;top:-1px;margin-left:4px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"]{cursor:pointer}form.jtable-dialog-form div.jtable-input-field-container{padding:2px 0 3px 0;border-bottom:1px solid #ddd}form.jtable-dialog-form div.jtable-input-field-container:last-child{border:none}form.jtable-dialog-form div.jtable-input-label{padding:2px 3px;font-size:1.1em;color:#666}form.jtable-dialog-form div.jtable-input{padding:2px}form.jtable-dialog-form div.jtable-date-input{}form.jtable-dialog-form div.jtable-text-input{}form.jtable-dialog-form span.jtable-option-text-clickable{position:relative;top:-2px}form.jtable-dialog-form div.jtable-textarea-input textarea{width:300px;min-height:60px}form.jtable-dialog-form div.jtable-checkbox-input span,form.jtable-dialog-form div.jtable-radio-input span{padding-left:4px}form.jtable-dialog-form div.jtable-radio-input input,form.jtable-dialog-form div.jtable-checkbox-input input,form.jtable-dialog-form span.jtable-option-text-clickable{cursor:pointer}div.jtable-busy-panel-background{opacity:.1;filter:alpha(opacity=50);z-index:998;position:absolute;background-color:#000}div.jtable-busy-panel-background.jtable-busy-panel-background-invisible{background-color:transparent}div.jtable-busy-message{cursor:wait;z-index:999;position:absolute;margin:5px}div.jtable-contextmenu-overlay{position:fixed;left:0;top:0;width:100%;height:100%;z-index:100}div.jtable-main-container{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:14px;background:#fff;line-height:1.3}div.jtable-main-container>div.jtable-title{background-color:#0b67cd;padding-left:10px}div.jtable-main-container>div.jtable-title div.jtable-title-text{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:19px;line-height:34px;color:#fff}div.jtable-main-container>div.jtable-title .jtable-close-button{right:8px;top:8px;bottom:8px;position:absolute;opacity:.5;filter:alpha(opacity=50);background:url('../../metro/close.png') no-repeat;width:16px;height:16px}div.jtable-main-container>div.jtable-title .jtable-close-button:hover{opacity:1;filter:alpha(opacity=50)}div.jtable-main-container>div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{background-color:#1571d7;color:#fff}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon{background-image:url('../../metro/add.png')}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover{background-color:#1c78de;padding-bottom:6px}div.jtable-main-container>table.jtable{border:1px solid #2d89ef;border-collapse:collapse;border-spacing:0}div.jtable-main-container>table.jtable>thead{background-color:#2d89ef}div.jtable-main-container>table.jtable>thead th{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:15px;color:#fff}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container{height:24px;margin-left:4px}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{height:28px}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{margin-top:2px}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sortable div.jtable-column-header-container{background:url('../../metro/column-sortable.png') no-repeat right}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sorted-asc div.jtable-column-header-container{background:url('../../metro/column-asc.png') no-repeat right}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sorted-desc div.jtable-column-header-container{background:url('../../metro/column-desc.png') no-repeat right}div.jtable-main-container>table.jtable>tbody>tr{background-color:#fff}div.jtable-main-container>table.jtable>tbody>tr>td{border:1px solid #ddd}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td{padding:4px}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-edit-command-button{background:url('../../metro/edit.png') no-repeat;width:16px;height:16px;opacity:.4}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-edit-command-button:hover{opacity:.8}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-delete-command-button{background:url('../../metro/delete.png') no-repeat;width:16px;height:16px;opacity:.4}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-delete-command-button:hover{opacity:.8}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-even{background-color:#f9f9f9}div.jtable-main-container>table.jtable>tbody>tr:hover{background:#e8eaef}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-selected{color:#fff;background-color:#4fabff}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-created{background-color:#60bcff}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-updated{background-color:#60bcff}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-deleting{background-color:#e51400;color:#fff}div.jtable-main-container>table.jtable>tbody>tr.jtable-child-row>td{padding:2px;background-color:#fff}div.jtable-main-container>div.jtable-bottom-panel{background-color:#1c78de;color:#fff;min-height:22.900000000000002px;font-size:13px;border:1px solid #2d89ef;border-top:none}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{margin:1px 0 0 0}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{background-color:#2d89ef;margin:1px;padding:2px 5px;color:#fff}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover{background-color:#4fabff}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{opacity:.75;filter:alpha(opacity=50);color:#ccc;cursor:default}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover{background-color:#2d89ef}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{display:inline-block;padding:4px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{display:inline-block;padding:2px 0 2px 0}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{display:inline-block;padding:2px 0 2px 0}form.jtable-dialog-form{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:400;font-size:14px}div.jtable-busy-message{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:16px;border:1px solid #fff;padding:5px 5px 5px 58px;color:#fff;background:url('../../metro/blue/loading.gif') no-repeat;background-color:#0b67cd;background-position:8px} diff --git a/lib/themes/metro/blue/loading.gif b/lib/themes/metro/blue/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..9584a7dce7fd154f4557ac20fccb8ff8b42a95f7 GIT binary patch literal 404 zcmZ?wbhEHb)Mnsj_{hM(oqqQJ|No5}o&ZV3e^Smxsfi`2DGKG8B^e5dS&0=n`H3ld znR#jX42nNl7`PZ17!?0=`?-b$J39ur8tEA@GXjNlfS3VfAOn+8OCQJSX*X{)e?H13 zeJ||u>DC8kZ4r?R)6{G4&Dyt|CtcU`diyE8Uq?3owA-;j!N^AxXd>8TMr31bj{uEP z;7?56IIHFOnwrlu67PNQNtrQY{;7pt&RzvNJJ_?&Ze06Pg>MsMs)$s6#HZT6Q+}5p z&C*E81%TGdiiN4(8Lw%U?wsno9F=b>WnG7*rn?>{@R)9v%+M)yIi1FiTcrX vD}VECG@HG3ZvWp+k0+)$$G&~0?NxTdRajt8g3>tw(O*m=3=Gzwa03GXNd1{3 literal 0 HcmV?d00001 diff --git a/lib/themes/metro/brown/jtable.css b/lib/themes/metro/brown/jtable.css new file mode 100644 index 0000000..aa22a8f --- /dev/null +++ b/lib/themes/metro/brown/jtable.css @@ -0,0 +1,495 @@ +/* jTable metro style theme - Brown + * Created by Halil İbrahim Kalkan + * http://www.jtable.org + */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + src: local('Open Sans Light'), local('OpenSans-Light'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/DXI1ORHCpsQm3Vp6mXoaTRa1RVmPjeKy21_GQJaLlJI.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 300; + src: local('Open Sans Light Italic'), local('OpenSansLight-Italic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxrsuoFAk0leveMLeqYtnfAY.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans'), local('OpenSans'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/u-WUoqrET9fUeobQW7jkRT8E0i7KZn-EPnyo3HZu7kw.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans Italic'), local('OpenSans-Italic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/xjAJXh38I15wypJXxuGMBtIh4imgI8P11RFo6YPCPC0.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/MTP_ySUJH_bn48VBG8sNSha1RVmPjeKy21_GQJaLlJI.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 600; + src: local('Open Sans Semibold Italic'), local('OpenSans-SemiboldItalic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxmWeb5PoA5ztb49yLyUzH1A.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: local('Open Sans Bold'), local('OpenSans-Bold'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/k3k702ZOKiLJc3WVjuplzBa1RVmPjeKy21_GQJaLlJI.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxoUt79146ZFaIJxILcpzmhI.woff) format('woff'); +} +div.jtable-main-container { + position: relative; +} +div.jtable-main-container div.jtable-title { + position: relative; + text-align: left; +} +div.jtable-main-container div.jtable-title .jtable-close-button { + right: 0px; + top: 0px; + bottom: 0px; + position: absolute; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar { + bottom: 0px; + right: 0px; + position: absolute; + display: inline-block; + margin-right: 5px; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item { + position: relative; + display: inline-block; + margin: 0px 0px 0px 5px; + cursor: pointer; + font-size: 0.9em; + padding: 2px; + vertical-align: bottom; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-icon { + display: inline-block; + margin: 2px; + vertical-align: middle; + width: 16px; + height: 16px; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-text { + display: inline-block; + margin: 2px; + vertical-align: middle; +} +div.jtable-main-container div.jtable-title .jtable-close-button + div.jtable-toolbar { + margin-right: 30px; +} +div.jtable-main-container table.jtable { + width: 100%; +} +div.jtable-main-container table.jtable thead th { + vertical-align: middle; + text-align: left; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container { + position: relative; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text { + display: inline-block; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler { + position: absolute; + height: 24px; + width: 8px; + right: -8px; + top: -2px; + z-index: 2; + cursor: col-resize; +} +div.jtable-main-container table.jtable thead th.jtable-command-column-header { + text-align: center; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-selecting { + text-align: center; + width: 1%; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-selecting input { + cursor: pointer; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sortable { + cursor: pointer; +} +div.jtable-main-container table.jtable tbody tr > td .jtable-command-button { + margin: 0px; + padding: 0px; + cursor: pointer; + border: none; + display: inline; +} +div.jtable-main-container table.jtable tbody tr > td .jtable-command-button span { + display: none; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-command-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column input { + cursor: pointer; +} +div.jtable-main-container table.jtable tbody tr.jtable-no-data-row { + text-align: center; +} +div.jtable-main-container > div.jtable-bottom-panel { + position: relative; + min-height: 24px; + text-align: left; +} +div.jtable-main-container > div.jtable-bottom-panel div.jtable-right-area { + right: 0px; + top: 0px; + bottom: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + display: inline-block; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + padding: 2px 5px; + display: inline-block; + cursor: pointer; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page input[type=text] { + width: 22px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + vertical-align: middle; +} +div.jtable-main-container div.jtable-column-resize-bar { + opacity: 0.5; + filter: alpha(opacity=50); + position: absolute; + display: none; + width: 1px; + background-color: #000; +} +div.jtable-main-container div.jtable-column-selection-container { + position: absolute; + display: none; + border: 1px solid #C8C8C8; + background: #fff; + color: #000; + z-index: 101; + padding: 5px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list { + margin: 0px; + padding: 0px; + list-style: none; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li { + margin: 0px; + padding: 2px 0px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span { + position: relative; + top: -1px; + margin-left: 4px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"] { + cursor: pointer; +} +form.jtable-dialog-form div.jtable-input-field-container { + padding: 2px 0px 3px 0px; + border-bottom: 1px solid #ddd; +} +form.jtable-dialog-form div.jtable-input-field-container:last-child { + border: none; +} +form.jtable-dialog-form div.jtable-input-label { + padding: 2px 3px; + font-size: 1.1em; + color: #666; +} +form.jtable-dialog-form div.jtable-input { + padding: 2px; +} +form.jtable-dialog-form div.jtable-date-input { + /* No additional style */ + +} +form.jtable-dialog-form div.jtable-text-input { + /* No additional style */ + +} +form.jtable-dialog-form span.jtable-option-text-clickable { + position: relative; + top: -2px; +} +form.jtable-dialog-form div.jtable-textarea-input textarea { + width: 300px; + min-height: 60px; +} +form.jtable-dialog-form div.jtable-checkbox-input span, +form.jtable-dialog-form div.jtable-radio-input span { + padding-left: 4px; +} +form.jtable-dialog-form div.jtable-radio-input input, +form.jtable-dialog-form div.jtable-checkbox-input input, +form.jtable-dialog-form span.jtable-option-text-clickable { + cursor: pointer; +} +div.jtable-busy-panel-background { + opacity: 0.1; + filter: alpha(opacity=50); + z-index: 998; + position: absolute; + background-color: #000; +} +div.jtable-busy-panel-background.jtable-busy-panel-background-invisible { + background-color: transparent; +} +div.jtable-busy-message { + cursor: wait; + z-index: 999; + position: absolute; + margin: 5px; +} +div.jtable-contextmenu-overlay { + position: fixed; + left: 0px; + top: 0px; + width: 100%; + height: 100%; + z-index: 100; +} +div.jtable-main-container { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 14px; + background: #fff; + line-height: 1.3; +} +div.jtable-main-container > div.jtable-title { + background-color: #61380a; + padding-left: 10px; +} +div.jtable-main-container > div.jtable-title div.jtable-title-text { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 19px; + line-height: 34px; + color: #fff; +} +div.jtable-main-container > div.jtable-title .jtable-close-button { + right: 8px; + top: 8px; + bottom: 8px; + position: absolute; + opacity: 0.5; + filter: alpha(opacity=50); + background: url('../../metro/close.png') no-repeat; + width: 16px; + height: 16px; +} +div.jtable-main-container > div.jtable-title .jtable-close-button:hover { + opacity: 1; + filter: alpha(opacity=50); +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar { + bottom: 0px; + right: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item { + background-color: #6b4214; + color: white; +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon { + background-image: url('../../metro/add.png'); +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover { + background-color: #72491b; + padding-bottom: 6px; +} +div.jtable-main-container > table.jtable { + border: 1px solid #835a2c; + border-collapse: collapse; + border-spacing: 0; +} +div.jtable-main-container > table.jtable > thead { + background-color: #835a2c; +} +div.jtable-main-container > table.jtable > thead th { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 15px; + color: #fff; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container { + height: 24px; + margin-left: 4px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler { + height: 28px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text { + margin-top: 2px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sortable div.jtable-column-header-container { + background: url('../../metro/column-sortable.png') no-repeat right; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sorted-asc div.jtable-column-header-container { + background: url('../../metro/column-asc.png') no-repeat right; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sorted-desc div.jtable-column-header-container { + background: url('../../metro/column-desc.png') no-repeat right; +} +div.jtable-main-container > table.jtable > tbody > tr { + background-color: #fff; +} +div.jtable-main-container > table.jtable > tbody > tr > td { + border: 1px solid #ddd; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td { + padding: 4px; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-edit-command-button { + background: url('../../metro/edit.png') no-repeat; + width: 16px; + height: 16px; + opacity: 0.4; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-edit-command-button:hover { + opacity: 0.8; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-delete-command-button { + background: url('../../metro/delete.png') no-repeat; + width: 16px; + height: 16px; + opacity: 0.4; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-delete-command-button:hover { + opacity: 0.8; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-even { + background-color: #f9f9f9; +} +div.jtable-main-container > table.jtable > tbody > tr:hover { + background: #e8eaef; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-selected { + color: #fff; + background-color: #a57c4e; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-created { + background-color: #b68d5f; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-updated { + background-color: #b68d5f; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-deleting { + background-color: #e51400; + color: #fff; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-child-row > td { + padding: 2px; + background-color: #fff; +} +div.jtable-main-container > div.jtable-bottom-panel { + background-color: #72491b; + color: #fff; + min-height: 22.900000000000002px; + font-size: 13px; + border: 1px solid #835a2c; + border-top: none; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + margin: 1px 0px 0px 0px; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + background-color: #835a2c; + margin: 1px; + padding: 2px 5px; + color: #fff; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover { + background-color: #a57c4e; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + opacity: 0.75; + filter: alpha(opacity=50); + color: #ccc; + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover { + background-color: #835a2c; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + display: inline-block; + padding: 4px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + display: inline-block; + padding: 2px 0px 2px 0px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + display: inline-block; + padding: 2px 0px 2px 0px; +} +form.jtable-dialog-form { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 400; + font-size: 14px; +} +div.jtable-busy-message { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 16px; + border: 1px solid #fff; + padding: 5px 5px 5px 58px; + color: #fff; + background: url('../../metro/brown/loading.gif') no-repeat; + background-color: #61380a; + background-position: 8px; +} diff --git a/lib/themes/metro/brown/jtable.less b/lib/themes/metro/brown/jtable.less new file mode 100644 index 0000000..df6e52d --- /dev/null +++ b/lib/themes/metro/brown/jtable.less @@ -0,0 +1,11 @@ +/* jTable metro style theme - Brown + * Created by Halil İbrahim Kalkan + * http://www.jtable.org + */ + +@import "../jtable_metro_base.less"; + +@theme-folder:'brown'; +@main-theme-color: #835a2c; + +.jtable_metro_base(@theme-folder, @main-theme-color); \ No newline at end of file diff --git a/lib/themes/metro/brown/jtable.min.css b/lib/themes/metro/brown/jtable.min.css new file mode 100644 index 0000000..fff6336 --- /dev/null +++ b/lib/themes/metro/brown/jtable.min.css @@ -0,0 +1 @@ +@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('Open Sans Light'),local('OpenSans-Light'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/DXI1ORHCpsQm3Vp6mXoaTRa1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300;src:local('Open Sans Light Italic'),local('OpenSansLight-Italic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxrsuoFAk0leveMLeqYtnfAY.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans'),local('OpenSans'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/u-WUoqrET9fUeobQW7jkRT8E0i7KZn-EPnyo3HZu7kw.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/xjAJXh38I15wypJXxuGMBtIh4imgI8P11RFo6YPCPC0.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;src:local('Open Sans Semibold'),local('OpenSans-Semibold'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/MTP_ySUJH_bn48VBG8sNSha1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:600;src:local('Open Sans Semibold Italic'),local('OpenSans-SemiboldItalic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxmWeb5PoA5ztb49yLyUzH1A.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/k3k702ZOKiLJc3WVjuplzBa1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local('Open Sans Bold Italic'),local('OpenSans-BoldItalic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxoUt79146ZFaIJxILcpzmhI.woff) format('woff')}div.jtable-main-container{position:relative}div.jtable-main-container div.jtable-title{position:relative;text-align:left}div.jtable-main-container div.jtable-title .jtable-close-button{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute;display:inline-block;margin-right:5px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{position:relative;display:inline-block;margin:0 0 0 5px;cursor:pointer;font-size:.9em;padding:2px;vertical-align:bottom}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-icon{display:inline-block;margin:2px;vertical-align:middle;width:16px;height:16px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-text{display:inline-block;margin:2px;vertical-align:middle}div.jtable-main-container div.jtable-title .jtable-close-button+div.jtable-toolbar{margin-right:30px}div.jtable-main-container table.jtable{width:100%}div.jtable-main-container table.jtable thead th{vertical-align:middle;text-align:left}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container{position:relative}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{display:inline-block}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{position:absolute;height:24px;width:8px;right:-8px;top:-2px;z-index:2;cursor:col-resize}div.jtable-main-container table.jtable thead th.jtable-command-column-header{text-align:center}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting{text-align:center;width:1%}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting input{cursor:pointer}div.jtable-main-container table.jtable thead th.jtable-column-header-sortable{cursor:pointer}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button{margin:0;padding:0;cursor:pointer;border:none;display:inline}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button span{display:none}div.jtable-main-container table.jtable tbody tr>td.jtable-command-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column input{cursor:pointer}div.jtable-main-container table.jtable tbody tr.jtable-no-data-row{text-align:center}div.jtable-main-container>div.jtable-bottom-panel{position:relative;min-height:24px;text-align:left}div.jtable-main-container>div.jtable-bottom-panel div.jtable-right-area{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{display:inline-block}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{padding:2px 5px;display:inline-block;cursor:pointer}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{cursor:default}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page input[type=text]{width:22px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{vertical-align:middle}div.jtable-main-container div.jtable-column-resize-bar{opacity:.5;filter:alpha(opacity=50);position:absolute;display:none;width:1px;background-color:#000}div.jtable-main-container div.jtable-column-selection-container{position:absolute;display:none;border:1px solid #c8c8c8;background:#fff;color:#000;z-index:101;padding:5px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list{margin:0;padding:0;list-style:none}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li{margin:0;padding:2px 0}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span{position:relative;top:-1px;margin-left:4px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"]{cursor:pointer}form.jtable-dialog-form div.jtable-input-field-container{padding:2px 0 3px 0;border-bottom:1px solid #ddd}form.jtable-dialog-form div.jtable-input-field-container:last-child{border:none}form.jtable-dialog-form div.jtable-input-label{padding:2px 3px;font-size:1.1em;color:#666}form.jtable-dialog-form div.jtable-input{padding:2px}form.jtable-dialog-form div.jtable-date-input{}form.jtable-dialog-form div.jtable-text-input{}form.jtable-dialog-form span.jtable-option-text-clickable{position:relative;top:-2px}form.jtable-dialog-form div.jtable-textarea-input textarea{width:300px;min-height:60px}form.jtable-dialog-form div.jtable-checkbox-input span,form.jtable-dialog-form div.jtable-radio-input span{padding-left:4px}form.jtable-dialog-form div.jtable-radio-input input,form.jtable-dialog-form div.jtable-checkbox-input input,form.jtable-dialog-form span.jtable-option-text-clickable{cursor:pointer}div.jtable-busy-panel-background{opacity:.1;filter:alpha(opacity=50);z-index:998;position:absolute;background-color:#000}div.jtable-busy-panel-background.jtable-busy-panel-background-invisible{background-color:transparent}div.jtable-busy-message{cursor:wait;z-index:999;position:absolute;margin:5px}div.jtable-contextmenu-overlay{position:fixed;left:0;top:0;width:100%;height:100%;z-index:100}div.jtable-main-container{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:14px;background:#fff;line-height:1.3}div.jtable-main-container>div.jtable-title{background-color:#61380a;padding-left:10px}div.jtable-main-container>div.jtable-title div.jtable-title-text{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:19px;line-height:34px;color:#fff}div.jtable-main-container>div.jtable-title .jtable-close-button{right:8px;top:8px;bottom:8px;position:absolute;opacity:.5;filter:alpha(opacity=50);background:url('../../metro/close.png') no-repeat;width:16px;height:16px}div.jtable-main-container>div.jtable-title .jtable-close-button:hover{opacity:1;filter:alpha(opacity=50)}div.jtable-main-container>div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{background-color:#6b4214;color:#fff}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon{background-image:url('../../metro/add.png')}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover{background-color:#72491b;padding-bottom:6px}div.jtable-main-container>table.jtable{border:1px solid #835a2c;border-collapse:collapse;border-spacing:0}div.jtable-main-container>table.jtable>thead{background-color:#835a2c}div.jtable-main-container>table.jtable>thead th{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:15px;color:#fff}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container{height:24px;margin-left:4px}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{height:28px}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{margin-top:2px}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sortable div.jtable-column-header-container{background:url('../../metro/column-sortable.png') no-repeat right}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sorted-asc div.jtable-column-header-container{background:url('../../metro/column-asc.png') no-repeat right}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sorted-desc div.jtable-column-header-container{background:url('../../metro/column-desc.png') no-repeat right}div.jtable-main-container>table.jtable>tbody>tr{background-color:#fff}div.jtable-main-container>table.jtable>tbody>tr>td{border:1px solid #ddd}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td{padding:4px}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-edit-command-button{background:url('../../metro/edit.png') no-repeat;width:16px;height:16px;opacity:.4}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-edit-command-button:hover{opacity:.8}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-delete-command-button{background:url('../../metro/delete.png') no-repeat;width:16px;height:16px;opacity:.4}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-delete-command-button:hover{opacity:.8}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-even{background-color:#f9f9f9}div.jtable-main-container>table.jtable>tbody>tr:hover{background:#e8eaef}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-selected{color:#fff;background-color:#a57c4e}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-created{background-color:#b68d5f}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-updated{background-color:#b68d5f}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-deleting{background-color:#e51400;color:#fff}div.jtable-main-container>table.jtable>tbody>tr.jtable-child-row>td{padding:2px;background-color:#fff}div.jtable-main-container>div.jtable-bottom-panel{background-color:#72491b;color:#fff;min-height:22.900000000000002px;font-size:13px;border:1px solid #835a2c;border-top:none}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{margin:1px 0 0 0}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{background-color:#835a2c;margin:1px;padding:2px 5px;color:#fff}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover{background-color:#a57c4e}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{opacity:.75;filter:alpha(opacity=50);color:#ccc;cursor:default}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover{background-color:#835a2c}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{display:inline-block;padding:4px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{display:inline-block;padding:2px 0 2px 0}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{display:inline-block;padding:2px 0 2px 0}form.jtable-dialog-form{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:400;font-size:14px}div.jtable-busy-message{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:16px;border:1px solid #fff;padding:5px 5px 5px 58px;color:#fff;background:url('../../metro/brown/loading.gif') no-repeat;background-color:#61380a;background-position:8px} diff --git a/lib/themes/metro/brown/loading.gif b/lib/themes/metro/brown/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..61f9ef5f8ada9ad654a764fd43a45951c41fb77d GIT binary patch literal 404 zcmZ?wbhEHb)Mnsj_{hMJXuH?DoD!ncVrRYWR3;!|zkDZk5) zX6Yma9bXSKkqN~_ki!gsCa#>76@4fF5kHsk_R5EqJxi`ESh0(58TX;rKFMaC&rhCv z`7>zNj5Vfb40_y8z5Fy2XyS@>FcX=PO>}^Ib;guk?9z1`f9*{5Sz$8YT`o|oME&Tx vmB0Bmn$6xixBu^^#}iYWW8Xg0_9{E!DlD)kLFt@;=r1M_1_oJR( zlO9pldw?gGOyPN#E6|iniBcaxL=T87S_66Uz+sY5bxFr9b3=VK1{GQ%~7-Fd`PBDJJpQ2fcW!>1qZS-qM%(*pVjtOC7gn%JIC504SBTP)OM^B>$lEm{w z9z2!Mk!~dPRFOh6@>#?Aql(iMCHg0YGXY*vT1l~a5430OSyRrmEtUm>)C@}Oilt4HGG&IKOi3nh0{Eq9Kr5V~yGx%j$IhTl!Xb7k(=1Pm| zBA}Veno=-x9Evt3j*V}{^)8D@G*KOJ-Wbd9UN6shAEFtarY&@9!T2X|tcoV8AzezF zIg5lENIc__6`AK)Ce-5h205n17YZ|sKP)u+>5z~1aYBo~R&c=Fq*R zsK0@1hhjVptT2f2Htmuw<18}ubUtHcY=Q`4oZtYE5=0cF(mkpomBkAuMMdq@A#Or_ z;v;2BVk~$E%$t`fAZUnJj?NQjHB?1#!^Dm;%41bW}i0emb4?wH^`e4 z9&BbgMxec+X1jU?Kkn<^FfA}_owvCqR2up?;dsX|4A%bN3;)-`FImnp!pm;;8_0No zGLN7_Ve5_pHQC(4nDOjF)O?G@(mj3mc)a*fLA!?NI^AqID9P#Papi z+Cg4WTCCXe35X>WgTOD8$OqmF^(2AYxZ_~Bo)*K*i-#yDvA}0Z94pC`DVb-94jmE; zYg&}pD5xMOYBGStV~T;#%1k+?f}6$UL^WCL1JXfK&{ZTUp9iZyD;a>VU&*Ad8H9ik zRC?0Z9jHy$+~#utB}G(;Hk}9osANQh9gK1k3#67rha|HxMy(^9?=ZwThyj>1{y$>> zPMsa1<5q|z+t2WA6JKU z2ZiOCuV-%cwVyibnK;?A{KG}QW!qm{_h8fEM=NS_{OkRfd#`*}s^eA8O;;|QnxLM(O+>t-l%sV)AnwxuPb=SK4BiobT zt@)*!nmjt=#Y?WA77mTLK0kILbKvO8lloq6+o4};&R<>qUh>IzPo4+_mQ4AwcJArw z?12-XlAAVz>HCh~G7OdtuI+|f&dMD14e|DsJuBYt%w?|~suD>N9qXV}lwkfkt z`syz1y5JgpW5LfGhjyPcb`9TkdVRM_kYRc*S#VZb!5Eb0!jQ3+-<1e(ok7RCwBA{Qv(y10{fofV?LVm*7Ta$fLM_f14@DT&wo^~0f_mDF~9|gKmNxAAg|OB zGC&@PFa5_2z5%f>E(1h>c-?=(;1LiT!1S>oMTi3s+W_%9P~_l=I36I51mX)I4kM)r z3E2hwK&(Qfz866J6g?$=1med;X#N1i&v7N?*FgLhkLGVc`~-;q;W7XeAkTpKD;CXv zp>jV7Wu{+Hg@4e*UqZb}RBrr)>`x$g4-GiHv49RTj&^O>sH^2rvNP)N5*5 SJZ%C10000_o`0P;EFcV_{9}r6dF(aBd$Ured z2C(6>2?`{j0gKfD7N}o23B;Nl5OZOR1zsTL0pdRdq88*jK_LDH;xJM(A^8IFeTaD#J_9oSM_0ZX3CNd)@P4ZJ%dk~a}(!B{#6qXUCDfl^c_5gdt-QlJ1+sKyL^ z1~t_!G@$`6(3v9#J@Ee9N^2xLG^Dv<-4>SN8Ju8YP<(_<)GfHM*A#ow`5h(jg*99i z#V^U- td .jtable-command-button { + margin: 0px; + padding: 0px; + cursor: pointer; + border: none; + display: inline; +} +div.jtable-main-container table.jtable tbody tr > td .jtable-command-button span { + display: none; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-command-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column input { + cursor: pointer; +} +div.jtable-main-container table.jtable tbody tr.jtable-no-data-row { + text-align: center; +} +div.jtable-main-container > div.jtable-bottom-panel { + position: relative; + min-height: 24px; + text-align: left; +} +div.jtable-main-container > div.jtable-bottom-panel div.jtable-right-area { + right: 0px; + top: 0px; + bottom: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + display: inline-block; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + padding: 2px 5px; + display: inline-block; + cursor: pointer; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page input[type=text] { + width: 22px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + vertical-align: middle; +} +div.jtable-main-container div.jtable-column-resize-bar { + opacity: 0.5; + filter: alpha(opacity=50); + position: absolute; + display: none; + width: 1px; + background-color: #000; +} +div.jtable-main-container div.jtable-column-selection-container { + position: absolute; + display: none; + border: 1px solid #C8C8C8; + background: #fff; + color: #000; + z-index: 101; + padding: 5px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list { + margin: 0px; + padding: 0px; + list-style: none; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li { + margin: 0px; + padding: 2px 0px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span { + position: relative; + top: -1px; + margin-left: 4px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"] { + cursor: pointer; +} +form.jtable-dialog-form div.jtable-input-field-container { + padding: 2px 0px 3px 0px; + border-bottom: 1px solid #ddd; +} +form.jtable-dialog-form div.jtable-input-field-container:last-child { + border: none; +} +form.jtable-dialog-form div.jtable-input-label { + padding: 2px 3px; + font-size: 1.1em; + color: #666; +} +form.jtable-dialog-form div.jtable-input { + padding: 2px; +} +form.jtable-dialog-form div.jtable-date-input { + /* No additional style */ + +} +form.jtable-dialog-form div.jtable-text-input { + /* No additional style */ + +} +form.jtable-dialog-form span.jtable-option-text-clickable { + position: relative; + top: -2px; +} +form.jtable-dialog-form div.jtable-textarea-input textarea { + width: 300px; + min-height: 60px; +} +form.jtable-dialog-form div.jtable-checkbox-input span, +form.jtable-dialog-form div.jtable-radio-input span { + padding-left: 4px; +} +form.jtable-dialog-form div.jtable-radio-input input, +form.jtable-dialog-form div.jtable-checkbox-input input, +form.jtable-dialog-form span.jtable-option-text-clickable { + cursor: pointer; +} +div.jtable-busy-panel-background { + opacity: 0.1; + filter: alpha(opacity=50); + z-index: 998; + position: absolute; + background-color: #000; +} +div.jtable-busy-panel-background.jtable-busy-panel-background-invisible { + background-color: transparent; +} +div.jtable-busy-message { + cursor: wait; + z-index: 999; + position: absolute; + margin: 5px; +} +div.jtable-contextmenu-overlay { + position: fixed; + left: 0px; + top: 0px; + width: 100%; + height: 100%; + z-index: 100; +} +div.jtable-main-container { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 14px; + background: #fff; + line-height: 1.3; +} +div.jtable-main-container > div.jtable-title { + background-color: #a10000; + padding-left: 10px; +} +div.jtable-main-container > div.jtable-title div.jtable-title-text { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 19px; + line-height: 34px; + color: #fff; +} +div.jtable-main-container > div.jtable-title .jtable-close-button { + right: 8px; + top: 8px; + bottom: 8px; + position: absolute; + opacity: 0.5; + filter: alpha(opacity=50); + background: url('../../metro/close.png') no-repeat; + width: 16px; + height: 16px; +} +div.jtable-main-container > div.jtable-title .jtable-close-button:hover { + opacity: 1; + filter: alpha(opacity=50); +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar { + bottom: 0px; + right: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item { + background-color: #ab0000; + color: white; +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon { + background-image: url('../../metro/add.png'); +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover { + background-color: #b20000; + padding-bottom: 6px; +} +div.jtable-main-container > table.jtable { + border: 1px solid #c30000; + border-collapse: collapse; + border-spacing: 0; +} +div.jtable-main-container > table.jtable > thead { + background-color: #c30000; +} +div.jtable-main-container > table.jtable > thead th { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 15px; + color: #fff; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container { + height: 24px; + margin-left: 4px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler { + height: 28px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text { + margin-top: 2px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sortable div.jtable-column-header-container { + background: url('../../metro/column-sortable.png') no-repeat right; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sorted-asc div.jtable-column-header-container { + background: url('../../metro/column-asc.png') no-repeat right; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sorted-desc div.jtable-column-header-container { + background: url('../../metro/column-desc.png') no-repeat right; +} +div.jtable-main-container > table.jtable > tbody > tr { + background-color: #fff; +} +div.jtable-main-container > table.jtable > tbody > tr > td { + border: 1px solid #ddd; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td { + padding: 4px; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-edit-command-button { + background: url('../../metro/edit.png') no-repeat; + width: 16px; + height: 16px; + opacity: 0.4; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-edit-command-button:hover { + opacity: 0.8; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-delete-command-button { + background: url('../../metro/delete.png') no-repeat; + width: 16px; + height: 16px; + opacity: 0.4; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-delete-command-button:hover { + opacity: 0.8; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-even { + background-color: #f9f9f9; +} +div.jtable-main-container > table.jtable > tbody > tr:hover { + background: #e8eaef; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-selected { + color: #fff; + background-color: #e52222; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-created { + background-color: #f63333; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-updated { + background-color: #f63333; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-deleting { + background-color: #e51400; + color: #fff; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-child-row > td { + padding: 2px; + background-color: #fff; +} +div.jtable-main-container > div.jtable-bottom-panel { + background-color: #b20000; + color: #fff; + min-height: 22.900000000000002px; + font-size: 13px; + border: 1px solid #c30000; + border-top: none; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + margin: 1px 0px 0px 0px; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + background-color: #c30000; + margin: 1px; + padding: 2px 5px; + color: #fff; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover { + background-color: #e52222; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + opacity: 0.75; + filter: alpha(opacity=50); + color: #ccc; + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover { + background-color: #c30000; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + display: inline-block; + padding: 4px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + display: inline-block; + padding: 2px 0px 2px 0px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + display: inline-block; + padding: 2px 0px 2px 0px; +} +form.jtable-dialog-form { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 400; + font-size: 14px; +} +div.jtable-busy-message { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 16px; + border: 1px solid #fff; + padding: 5px 5px 5px 58px; + color: #fff; + background: url('../../metro/crimson/loading.gif') no-repeat; + background-color: #a10000; + background-position: 8px; +} diff --git a/lib/themes/metro/crimson/jtable.less b/lib/themes/metro/crimson/jtable.less new file mode 100644 index 0000000..a21de68 --- /dev/null +++ b/lib/themes/metro/crimson/jtable.less @@ -0,0 +1,11 @@ +/* jTable metro style theme - Crimson + * Created by Halil İbrahim Kalkan + * http://www.jtable.org + */ + +@import "../jtable_metro_base.less"; + +@theme-folder:'crimson'; +@main-theme-color: #c30000; + +.jtable_metro_base(@theme-folder, @main-theme-color); \ No newline at end of file diff --git a/lib/themes/metro/crimson/jtable.min.css b/lib/themes/metro/crimson/jtable.min.css new file mode 100644 index 0000000..1587b25 --- /dev/null +++ b/lib/themes/metro/crimson/jtable.min.css @@ -0,0 +1 @@ +@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('Open Sans Light'),local('OpenSans-Light'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/DXI1ORHCpsQm3Vp6mXoaTRa1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300;src:local('Open Sans Light Italic'),local('OpenSansLight-Italic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxrsuoFAk0leveMLeqYtnfAY.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans'),local('OpenSans'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/u-WUoqrET9fUeobQW7jkRT8E0i7KZn-EPnyo3HZu7kw.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/xjAJXh38I15wypJXxuGMBtIh4imgI8P11RFo6YPCPC0.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;src:local('Open Sans Semibold'),local('OpenSans-Semibold'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/MTP_ySUJH_bn48VBG8sNSha1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:600;src:local('Open Sans Semibold Italic'),local('OpenSans-SemiboldItalic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxmWeb5PoA5ztb49yLyUzH1A.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/k3k702ZOKiLJc3WVjuplzBa1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local('Open Sans Bold Italic'),local('OpenSans-BoldItalic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxoUt79146ZFaIJxILcpzmhI.woff) format('woff')}div.jtable-main-container{position:relative}div.jtable-main-container div.jtable-title{position:relative;text-align:left}div.jtable-main-container div.jtable-title .jtable-close-button{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute;display:inline-block;margin-right:5px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{position:relative;display:inline-block;margin:0 0 0 5px;cursor:pointer;font-size:.9em;padding:2px;vertical-align:bottom}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-icon{display:inline-block;margin:2px;vertical-align:middle;width:16px;height:16px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-text{display:inline-block;margin:2px;vertical-align:middle}div.jtable-main-container div.jtable-title .jtable-close-button+div.jtable-toolbar{margin-right:30px}div.jtable-main-container table.jtable{width:100%}div.jtable-main-container table.jtable thead th{vertical-align:middle;text-align:left}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container{position:relative}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{display:inline-block}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{position:absolute;height:24px;width:8px;right:-8px;top:-2px;z-index:2;cursor:col-resize}div.jtable-main-container table.jtable thead th.jtable-command-column-header{text-align:center}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting{text-align:center;width:1%}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting input{cursor:pointer}div.jtable-main-container table.jtable thead th.jtable-column-header-sortable{cursor:pointer}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button{margin:0;padding:0;cursor:pointer;border:none;display:inline}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button span{display:none}div.jtable-main-container table.jtable tbody tr>td.jtable-command-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column input{cursor:pointer}div.jtable-main-container table.jtable tbody tr.jtable-no-data-row{text-align:center}div.jtable-main-container>div.jtable-bottom-panel{position:relative;min-height:24px;text-align:left}div.jtable-main-container>div.jtable-bottom-panel div.jtable-right-area{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{display:inline-block}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{padding:2px 5px;display:inline-block;cursor:pointer}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{cursor:default}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page input[type=text]{width:22px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{vertical-align:middle}div.jtable-main-container div.jtable-column-resize-bar{opacity:.5;filter:alpha(opacity=50);position:absolute;display:none;width:1px;background-color:#000}div.jtable-main-container div.jtable-column-selection-container{position:absolute;display:none;border:1px solid #c8c8c8;background:#fff;color:#000;z-index:101;padding:5px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list{margin:0;padding:0;list-style:none}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li{margin:0;padding:2px 0}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span{position:relative;top:-1px;margin-left:4px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"]{cursor:pointer}form.jtable-dialog-form div.jtable-input-field-container{padding:2px 0 3px 0;border-bottom:1px solid #ddd}form.jtable-dialog-form div.jtable-input-field-container:last-child{border:none}form.jtable-dialog-form div.jtable-input-label{padding:2px 3px;font-size:1.1em;color:#666}form.jtable-dialog-form div.jtable-input{padding:2px}form.jtable-dialog-form div.jtable-date-input{}form.jtable-dialog-form div.jtable-text-input{}form.jtable-dialog-form span.jtable-option-text-clickable{position:relative;top:-2px}form.jtable-dialog-form div.jtable-textarea-input textarea{width:300px;min-height:60px}form.jtable-dialog-form div.jtable-checkbox-input span,form.jtable-dialog-form div.jtable-radio-input span{padding-left:4px}form.jtable-dialog-form div.jtable-radio-input input,form.jtable-dialog-form div.jtable-checkbox-input input,form.jtable-dialog-form span.jtable-option-text-clickable{cursor:pointer}div.jtable-busy-panel-background{opacity:.1;filter:alpha(opacity=50);z-index:998;position:absolute;background-color:#000}div.jtable-busy-panel-background.jtable-busy-panel-background-invisible{background-color:transparent}div.jtable-busy-message{cursor:wait;z-index:999;position:absolute;margin:5px}div.jtable-contextmenu-overlay{position:fixed;left:0;top:0;width:100%;height:100%;z-index:100}div.jtable-main-container{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:14px;background:#fff;line-height:1.3}div.jtable-main-container>div.jtable-title{background-color:#a10000;padding-left:10px}div.jtable-main-container>div.jtable-title div.jtable-title-text{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:19px;line-height:34px;color:#fff}div.jtable-main-container>div.jtable-title .jtable-close-button{right:8px;top:8px;bottom:8px;position:absolute;opacity:.5;filter:alpha(opacity=50);background:url('../../metro/close.png') no-repeat;width:16px;height:16px}div.jtable-main-container>div.jtable-title .jtable-close-button:hover{opacity:1;filter:alpha(opacity=50)}div.jtable-main-container>div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{background-color:#ab0000;color:#fff}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon{background-image:url('../../metro/add.png')}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover{background-color:#b20000;padding-bottom:6px}div.jtable-main-container>table.jtable{border:1px solid #c30000;border-collapse:collapse;border-spacing:0}div.jtable-main-container>table.jtable>thead{background-color:#c30000}div.jtable-main-container>table.jtable>thead th{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:15px;color:#fff}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container{height:24px;margin-left:4px}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{height:28px}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{margin-top:2px}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sortable div.jtable-column-header-container{background:url('../../metro/column-sortable.png') no-repeat right}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sorted-asc div.jtable-column-header-container{background:url('../../metro/column-asc.png') no-repeat right}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sorted-desc div.jtable-column-header-container{background:url('../../metro/column-desc.png') no-repeat right}div.jtable-main-container>table.jtable>tbody>tr{background-color:#fff}div.jtable-main-container>table.jtable>tbody>tr>td{border:1px solid #ddd}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td{padding:4px}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-edit-command-button{background:url('../../metro/edit.png') no-repeat;width:16px;height:16px;opacity:.4}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-edit-command-button:hover{opacity:.8}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-delete-command-button{background:url('../../metro/delete.png') no-repeat;width:16px;height:16px;opacity:.4}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-delete-command-button:hover{opacity:.8}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-even{background-color:#f9f9f9}div.jtable-main-container>table.jtable>tbody>tr:hover{background:#e8eaef}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-selected{color:#fff;background-color:#e52222}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-created{background-color:#f63333}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-updated{background-color:#f63333}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-deleting{background-color:#e51400;color:#fff}div.jtable-main-container>table.jtable>tbody>tr.jtable-child-row>td{padding:2px;background-color:#fff}div.jtable-main-container>div.jtable-bottom-panel{background-color:#b20000;color:#fff;min-height:22.900000000000002px;font-size:13px;border:1px solid #c30000;border-top:none}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{margin:1px 0 0 0}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{background-color:#c30000;margin:1px;padding:2px 5px;color:#fff}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover{background-color:#e52222}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{opacity:.75;filter:alpha(opacity=50);color:#ccc;cursor:default}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover{background-color:#c30000}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{display:inline-block;padding:4px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{display:inline-block;padding:2px 0 2px 0}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{display:inline-block;padding:2px 0 2px 0}form.jtable-dialog-form{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:400;font-size:14px}div.jtable-busy-message{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:16px;border:1px solid #fff;padding:5px 5px 5px 58px;color:#fff;background:url('../../metro/crimson/loading.gif') no-repeat;background-color:#a10000;background-position:8px} diff --git a/lib/themes/metro/crimson/loading.gif b/lib/themes/metro/crimson/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..1c729ed0d4e7dffdef726dfbebfcfc13181e6da9 GIT binary patch literal 404 zcmZ?wbhEHb)Mnsj_{hMpkb&X<|NrM|YJjBTKPl&;)Wnk16ovB4k_?5!ti+0({KOQ! z%)GRG2F0H&3|tHh42u7`{aizWogD*Qjr0td8G%ANK+FI#kb%jlrH|wEw3|1YKOg0i zz8CiSbn64Nwus1uY3jB2X6;+fldkJ|z5SHluOpj(+U;1NVB{kTG!bkvBeF5JM}WpC z@Fym3oYiuCP0i;SiTA$uq|BHx|I|V+XRiXC9qid>H?DoD!ncVrRYWR3;!|zkDZk5) zX6Yma9bXSKkqN~_ki!gsCa#>76@4fF5kHsk_R5EqJxi`ESh0(58TX;rKFMaC&rhCv z`7>zNj5Vfb40_y8z5Fy2XyS@>FcX=PO>}^Ib;guk?9z1`f9*{5Sz$8YT`o|oME&Tx vmB0Bmn$6xixBu^^#}iYWW8Xg0_9{E!DlD)kLFt@;=r1M_1_o td .jtable-command-button { + margin: 0px; + padding: 0px; + cursor: pointer; + border: none; + display: inline; +} +div.jtable-main-container table.jtable tbody tr > td .jtable-command-button span { + display: none; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-command-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column input { + cursor: pointer; +} +div.jtable-main-container table.jtable tbody tr.jtable-no-data-row { + text-align: center; +} +div.jtable-main-container > div.jtable-bottom-panel { + position: relative; + min-height: 24px; + text-align: left; +} +div.jtable-main-container > div.jtable-bottom-panel div.jtable-right-area { + right: 0px; + top: 0px; + bottom: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + display: inline-block; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + padding: 2px 5px; + display: inline-block; + cursor: pointer; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page input[type=text] { + width: 22px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + vertical-align: middle; +} +div.jtable-main-container div.jtable-column-resize-bar { + opacity: 0.5; + filter: alpha(opacity=50); + position: absolute; + display: none; + width: 1px; + background-color: #000; +} +div.jtable-main-container div.jtable-column-selection-container { + position: absolute; + display: none; + border: 1px solid #C8C8C8; + background: #fff; + color: #000; + z-index: 101; + padding: 5px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list { + margin: 0px; + padding: 0px; + list-style: none; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li { + margin: 0px; + padding: 2px 0px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span { + position: relative; + top: -1px; + margin-left: 4px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"] { + cursor: pointer; +} +form.jtable-dialog-form div.jtable-input-field-container { + padding: 2px 0px 3px 0px; + border-bottom: 1px solid #ddd; +} +form.jtable-dialog-form div.jtable-input-field-container:last-child { + border: none; +} +form.jtable-dialog-form div.jtable-input-label { + padding: 2px 3px; + font-size: 1.1em; + color: #666; +} +form.jtable-dialog-form div.jtable-input { + padding: 2px; +} +form.jtable-dialog-form div.jtable-date-input { + /* No additional style */ + +} +form.jtable-dialog-form div.jtable-text-input { + /* No additional style */ + +} +form.jtable-dialog-form span.jtable-option-text-clickable { + position: relative; + top: -2px; +} +form.jtable-dialog-form div.jtable-textarea-input textarea { + width: 300px; + min-height: 60px; +} +form.jtable-dialog-form div.jtable-checkbox-input span, +form.jtable-dialog-form div.jtable-radio-input span { + padding-left: 4px; +} +form.jtable-dialog-form div.jtable-radio-input input, +form.jtable-dialog-form div.jtable-checkbox-input input, +form.jtable-dialog-form span.jtable-option-text-clickable { + cursor: pointer; +} +div.jtable-busy-panel-background { + opacity: 0.1; + filter: alpha(opacity=50); + z-index: 998; + position: absolute; + background-color: #000; +} +div.jtable-busy-panel-background.jtable-busy-panel-background-invisible { + background-color: transparent; +} +div.jtable-busy-message { + cursor: wait; + z-index: 999; + position: absolute; + margin: 5px; +} +div.jtable-contextmenu-overlay { + position: fixed; + left: 0px; + top: 0px; + width: 100%; + height: 100%; + z-index: 100; +} +div.jtable-main-container { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 14px; + background: #fff; + line-height: 1.3; +} +div.jtable-main-container > div.jtable-title { + background-color: #232323; + padding-left: 10px; +} +div.jtable-main-container > div.jtable-title div.jtable-title-text { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 19px; + line-height: 34px; + color: #fff; +} +div.jtable-main-container > div.jtable-title .jtable-close-button { + right: 8px; + top: 8px; + bottom: 8px; + position: absolute; + opacity: 0.5; + filter: alpha(opacity=50); + background: url('../../metro/close.png') no-repeat; + width: 16px; + height: 16px; +} +div.jtable-main-container > div.jtable-title .jtable-close-button:hover { + opacity: 1; + filter: alpha(opacity=50); +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar { + bottom: 0px; + right: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item { + background-color: #2d2d2d; + color: white; +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon { + background-image: url('../../metro/add.png'); +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover { + background-color: #343434; + padding-bottom: 6px; +} +div.jtable-main-container > table.jtable { + border: 1px solid #454545; + border-collapse: collapse; + border-spacing: 0; +} +div.jtable-main-container > table.jtable > thead { + background-color: #454545; +} +div.jtable-main-container > table.jtable > thead th { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 15px; + color: #fff; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container { + height: 24px; + margin-left: 4px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler { + height: 28px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text { + margin-top: 2px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sortable div.jtable-column-header-container { + background: url('../../metro/column-sortable.png') no-repeat right; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sorted-asc div.jtable-column-header-container { + background: url('../../metro/column-asc.png') no-repeat right; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sorted-desc div.jtable-column-header-container { + background: url('../../metro/column-desc.png') no-repeat right; +} +div.jtable-main-container > table.jtable > tbody > tr { + background-color: #fff; +} +div.jtable-main-container > table.jtable > tbody > tr > td { + border: 1px solid #ddd; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td { + padding: 4px; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-edit-command-button { + background: url('../../metro/edit.png') no-repeat; + width: 16px; + height: 16px; + opacity: 0.4; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-edit-command-button:hover { + opacity: 0.8; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-delete-command-button { + background: url('../../metro/delete.png') no-repeat; + width: 16px; + height: 16px; + opacity: 0.4; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-delete-command-button:hover { + opacity: 0.8; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-even { + background-color: #f9f9f9; +} +div.jtable-main-container > table.jtable > tbody > tr:hover { + background: #e8eaef; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-selected { + color: #fff; + background-color: #676767; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-created { + background-color: #787878; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-updated { + background-color: #787878; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-deleting { + background-color: #e51400; + color: #fff; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-child-row > td { + padding: 2px; + background-color: #fff; +} +div.jtable-main-container > div.jtable-bottom-panel { + background-color: #343434; + color: #fff; + min-height: 22.900000000000002px; + font-size: 13px; + border: 1px solid #454545; + border-top: none; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + margin: 1px 0px 0px 0px; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + background-color: #454545; + margin: 1px; + padding: 2px 5px; + color: #fff; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover { + background-color: #676767; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + opacity: 0.75; + filter: alpha(opacity=50); + color: #ccc; + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover { + background-color: #454545; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + display: inline-block; + padding: 4px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + display: inline-block; + padding: 2px 0px 2px 0px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + display: inline-block; + padding: 2px 0px 2px 0px; +} +form.jtable-dialog-form { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 400; + font-size: 14px; +} +div.jtable-busy-message { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 16px; + border: 1px solid #fff; + padding: 5px 5px 5px 58px; + color: #fff; + background: url('../../metro/darkgray/loading.gif') no-repeat; + background-color: #232323; + background-position: 8px; +} diff --git a/lib/themes/metro/darkgray/jtable.less b/lib/themes/metro/darkgray/jtable.less new file mode 100644 index 0000000..b254a35 --- /dev/null +++ b/lib/themes/metro/darkgray/jtable.less @@ -0,0 +1,11 @@ +/* jTable metro style theme - Dark gray + * Created by Halil İbrahim Kalkan + * http://www.jtable.org + */ + +@import "../jtable_metro_base.less"; + +@theme-folder:'darkgray'; +@main-theme-color: #454545; + +.jtable_metro_base(@theme-folder, @main-theme-color); \ No newline at end of file diff --git a/lib/themes/metro/darkgray/jtable.min.css b/lib/themes/metro/darkgray/jtable.min.css new file mode 100644 index 0000000..ce36f3f --- /dev/null +++ b/lib/themes/metro/darkgray/jtable.min.css @@ -0,0 +1 @@ +@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('Open Sans Light'),local('OpenSans-Light'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/DXI1ORHCpsQm3Vp6mXoaTRa1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300;src:local('Open Sans Light Italic'),local('OpenSansLight-Italic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxrsuoFAk0leveMLeqYtnfAY.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans'),local('OpenSans'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/u-WUoqrET9fUeobQW7jkRT8E0i7KZn-EPnyo3HZu7kw.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/xjAJXh38I15wypJXxuGMBtIh4imgI8P11RFo6YPCPC0.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;src:local('Open Sans Semibold'),local('OpenSans-Semibold'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/MTP_ySUJH_bn48VBG8sNSha1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:600;src:local('Open Sans Semibold Italic'),local('OpenSans-SemiboldItalic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxmWeb5PoA5ztb49yLyUzH1A.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/k3k702ZOKiLJc3WVjuplzBa1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local('Open Sans Bold Italic'),local('OpenSans-BoldItalic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxoUt79146ZFaIJxILcpzmhI.woff) format('woff')}div.jtable-main-container{position:relative}div.jtable-main-container div.jtable-title{position:relative;text-align:left}div.jtable-main-container div.jtable-title .jtable-close-button{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute;display:inline-block;margin-right:5px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{position:relative;display:inline-block;margin:0 0 0 5px;cursor:pointer;font-size:.9em;padding:2px;vertical-align:bottom}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-icon{display:inline-block;margin:2px;vertical-align:middle;width:16px;height:16px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-text{display:inline-block;margin:2px;vertical-align:middle}div.jtable-main-container div.jtable-title .jtable-close-button+div.jtable-toolbar{margin-right:30px}div.jtable-main-container table.jtable{width:100%}div.jtable-main-container table.jtable thead th{vertical-align:middle;text-align:left}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container{position:relative}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{display:inline-block}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{position:absolute;height:24px;width:8px;right:-8px;top:-2px;z-index:2;cursor:col-resize}div.jtable-main-container table.jtable thead th.jtable-command-column-header{text-align:center}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting{text-align:center;width:1%}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting input{cursor:pointer}div.jtable-main-container table.jtable thead th.jtable-column-header-sortable{cursor:pointer}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button{margin:0;padding:0;cursor:pointer;border:none;display:inline}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button span{display:none}div.jtable-main-container table.jtable tbody tr>td.jtable-command-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column input{cursor:pointer}div.jtable-main-container table.jtable tbody tr.jtable-no-data-row{text-align:center}div.jtable-main-container>div.jtable-bottom-panel{position:relative;min-height:24px;text-align:left}div.jtable-main-container>div.jtable-bottom-panel div.jtable-right-area{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{display:inline-block}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{padding:2px 5px;display:inline-block;cursor:pointer}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{cursor:default}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page input[type=text]{width:22px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{vertical-align:middle}div.jtable-main-container div.jtable-column-resize-bar{opacity:.5;filter:alpha(opacity=50);position:absolute;display:none;width:1px;background-color:#000}div.jtable-main-container div.jtable-column-selection-container{position:absolute;display:none;border:1px solid #c8c8c8;background:#fff;color:#000;z-index:101;padding:5px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list{margin:0;padding:0;list-style:none}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li{margin:0;padding:2px 0}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span{position:relative;top:-1px;margin-left:4px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"]{cursor:pointer}form.jtable-dialog-form div.jtable-input-field-container{padding:2px 0 3px 0;border-bottom:1px solid #ddd}form.jtable-dialog-form div.jtable-input-field-container:last-child{border:none}form.jtable-dialog-form div.jtable-input-label{padding:2px 3px;font-size:1.1em;color:#666}form.jtable-dialog-form div.jtable-input{padding:2px}form.jtable-dialog-form div.jtable-date-input{}form.jtable-dialog-form div.jtable-text-input{}form.jtable-dialog-form span.jtable-option-text-clickable{position:relative;top:-2px}form.jtable-dialog-form div.jtable-textarea-input textarea{width:300px;min-height:60px}form.jtable-dialog-form div.jtable-checkbox-input span,form.jtable-dialog-form div.jtable-radio-input span{padding-left:4px}form.jtable-dialog-form div.jtable-radio-input input,form.jtable-dialog-form div.jtable-checkbox-input input,form.jtable-dialog-form span.jtable-option-text-clickable{cursor:pointer}div.jtable-busy-panel-background{opacity:.1;filter:alpha(opacity=50);z-index:998;position:absolute;background-color:#000}div.jtable-busy-panel-background.jtable-busy-panel-background-invisible{background-color:transparent}div.jtable-busy-message{cursor:wait;z-index:999;position:absolute;margin:5px}div.jtable-contextmenu-overlay{position:fixed;left:0;top:0;width:100%;height:100%;z-index:100}div.jtable-main-container{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:14px;background:#fff;line-height:1.3}div.jtable-main-container>div.jtable-title{background-color:#232323;padding-left:10px}div.jtable-main-container>div.jtable-title div.jtable-title-text{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:19px;line-height:34px;color:#fff}div.jtable-main-container>div.jtable-title .jtable-close-button{right:8px;top:8px;bottom:8px;position:absolute;opacity:.5;filter:alpha(opacity=50);background:url('../../metro/close.png') no-repeat;width:16px;height:16px}div.jtable-main-container>div.jtable-title .jtable-close-button:hover{opacity:1;filter:alpha(opacity=50)}div.jtable-main-container>div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{background-color:#2d2d2d;color:#fff}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon{background-image:url('../../metro/add.png')}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover{background-color:#343434;padding-bottom:6px}div.jtable-main-container>table.jtable{border:1px solid #454545;border-collapse:collapse;border-spacing:0}div.jtable-main-container>table.jtable>thead{background-color:#454545}div.jtable-main-container>table.jtable>thead th{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:15px;color:#fff}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container{height:24px;margin-left:4px}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{height:28px}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{margin-top:2px}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sortable div.jtable-column-header-container{background:url('../../metro/column-sortable.png') no-repeat right}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sorted-asc div.jtable-column-header-container{background:url('../../metro/column-asc.png') no-repeat right}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sorted-desc div.jtable-column-header-container{background:url('../../metro/column-desc.png') no-repeat right}div.jtable-main-container>table.jtable>tbody>tr{background-color:#fff}div.jtable-main-container>table.jtable>tbody>tr>td{border:1px solid #ddd}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td{padding:4px}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-edit-command-button{background:url('../../metro/edit.png') no-repeat;width:16px;height:16px;opacity:.4}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-edit-command-button:hover{opacity:.8}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-delete-command-button{background:url('../../metro/delete.png') no-repeat;width:16px;height:16px;opacity:.4}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-delete-command-button:hover{opacity:.8}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-even{background-color:#f9f9f9}div.jtable-main-container>table.jtable>tbody>tr:hover{background:#e8eaef}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-selected{color:#fff;background-color:#676767}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-created{background-color:#787878}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-updated{background-color:#787878}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-deleting{background-color:#e51400;color:#fff}div.jtable-main-container>table.jtable>tbody>tr.jtable-child-row>td{padding:2px;background-color:#fff}div.jtable-main-container>div.jtable-bottom-panel{background-color:#343434;color:#fff;min-height:22.900000000000002px;font-size:13px;border:1px solid #454545;border-top:none}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{margin:1px 0 0 0}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{background-color:#454545;margin:1px;padding:2px 5px;color:#fff}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover{background-color:#676767}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{opacity:.75;filter:alpha(opacity=50);color:#ccc;cursor:default}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover{background-color:#454545}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{display:inline-block;padding:4px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{display:inline-block;padding:2px 0 2px 0}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{display:inline-block;padding:2px 0 2px 0}form.jtable-dialog-form{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:400;font-size:14px}div.jtable-busy-message{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:16px;border:1px solid #fff;padding:5px 5px 5px 58px;color:#fff;background:url('../../metro/darkgray/loading.gif') no-repeat;background-color:#232323;background-position:8px} diff --git a/lib/themes/metro/darkgray/loading.gif b/lib/themes/metro/darkgray/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..59a1d49f5f2e7e3fcda64b5fa2cc75ee3e412cf6 GIT binary patch literal 404 zcmZ?wbhEHb)Mnsj_{hMZtgQV1|Nq|JULdLXPs+I{HL)Z$MWH;iBts!FE3qOcKQTow zGcPTlLGdRG0~Z4WgW`W~Ki808XU70nBRvCVMxc-m5Ho-bWMDFC>Ek#(?dFZ<&qukW z?}dFn-TJ_+Eh2JZntJWMS^Jjrr0aTKZ$G8?>&WJxb~_d*82N|-O$3|Fh-{4Q5uh;& z{E5jMXSEz(Q}cO7;=S)ZDKlowKef=y*{eWj2YdF}jcZ@3@NHsD6_Lu1_*C0>%J1@{ zSvpBU$JfJ5WI{0!JP#Lp$Xz4BpY&yp((R_x+i#(n6uPqJC(^ONUZ z{tTKmV~yzyL8>gUprHMR+!9pmkZP?Q9rtF v?f<*!@x&D8*tgHLy~<9w3JdH>P&y|d`in_~fx#LSZeRcaUjUci literal 0 HcmV?d00001 diff --git a/lib/themes/metro/darkorange/jtable.css b/lib/themes/metro/darkorange/jtable.css new file mode 100644 index 0000000..3590e76 --- /dev/null +++ b/lib/themes/metro/darkorange/jtable.css @@ -0,0 +1,495 @@ +/* jTable metro style theme - Dark orange + * Created by Halil İbrahim Kalkan + * http://www.jtable.org + */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + src: local('Open Sans Light'), local('OpenSans-Light'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/DXI1ORHCpsQm3Vp6mXoaTRa1RVmPjeKy21_GQJaLlJI.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 300; + src: local('Open Sans Light Italic'), local('OpenSansLight-Italic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxrsuoFAk0leveMLeqYtnfAY.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans'), local('OpenSans'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/u-WUoqrET9fUeobQW7jkRT8E0i7KZn-EPnyo3HZu7kw.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans Italic'), local('OpenSans-Italic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/xjAJXh38I15wypJXxuGMBtIh4imgI8P11RFo6YPCPC0.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/MTP_ySUJH_bn48VBG8sNSha1RVmPjeKy21_GQJaLlJI.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 600; + src: local('Open Sans Semibold Italic'), local('OpenSans-SemiboldItalic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxmWeb5PoA5ztb49yLyUzH1A.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: local('Open Sans Bold'), local('OpenSans-Bold'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/k3k702ZOKiLJc3WVjuplzBa1RVmPjeKy21_GQJaLlJI.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxoUt79146ZFaIJxILcpzmhI.woff) format('woff'); +} +div.jtable-main-container { + position: relative; +} +div.jtable-main-container div.jtable-title { + position: relative; + text-align: left; +} +div.jtable-main-container div.jtable-title .jtable-close-button { + right: 0px; + top: 0px; + bottom: 0px; + position: absolute; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar { + bottom: 0px; + right: 0px; + position: absolute; + display: inline-block; + margin-right: 5px; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item { + position: relative; + display: inline-block; + margin: 0px 0px 0px 5px; + cursor: pointer; + font-size: 0.9em; + padding: 2px; + vertical-align: bottom; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-icon { + display: inline-block; + margin: 2px; + vertical-align: middle; + width: 16px; + height: 16px; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-text { + display: inline-block; + margin: 2px; + vertical-align: middle; +} +div.jtable-main-container div.jtable-title .jtable-close-button + div.jtable-toolbar { + margin-right: 30px; +} +div.jtable-main-container table.jtable { + width: 100%; +} +div.jtable-main-container table.jtable thead th { + vertical-align: middle; + text-align: left; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container { + position: relative; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text { + display: inline-block; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler { + position: absolute; + height: 24px; + width: 8px; + right: -8px; + top: -2px; + z-index: 2; + cursor: col-resize; +} +div.jtable-main-container table.jtable thead th.jtable-command-column-header { + text-align: center; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-selecting { + text-align: center; + width: 1%; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-selecting input { + cursor: pointer; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sortable { + cursor: pointer; +} +div.jtable-main-container table.jtable tbody tr > td .jtable-command-button { + margin: 0px; + padding: 0px; + cursor: pointer; + border: none; + display: inline; +} +div.jtable-main-container table.jtable tbody tr > td .jtable-command-button span { + display: none; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-command-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column input { + cursor: pointer; +} +div.jtable-main-container table.jtable tbody tr.jtable-no-data-row { + text-align: center; +} +div.jtable-main-container > div.jtable-bottom-panel { + position: relative; + min-height: 24px; + text-align: left; +} +div.jtable-main-container > div.jtable-bottom-panel div.jtable-right-area { + right: 0px; + top: 0px; + bottom: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + display: inline-block; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + padding: 2px 5px; + display: inline-block; + cursor: pointer; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page input[type=text] { + width: 22px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + vertical-align: middle; +} +div.jtable-main-container div.jtable-column-resize-bar { + opacity: 0.5; + filter: alpha(opacity=50); + position: absolute; + display: none; + width: 1px; + background-color: #000; +} +div.jtable-main-container div.jtable-column-selection-container { + position: absolute; + display: none; + border: 1px solid #C8C8C8; + background: #fff; + color: #000; + z-index: 101; + padding: 5px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list { + margin: 0px; + padding: 0px; + list-style: none; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li { + margin: 0px; + padding: 2px 0px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span { + position: relative; + top: -1px; + margin-left: 4px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"] { + cursor: pointer; +} +form.jtable-dialog-form div.jtable-input-field-container { + padding: 2px 0px 3px 0px; + border-bottom: 1px solid #ddd; +} +form.jtable-dialog-form div.jtable-input-field-container:last-child { + border: none; +} +form.jtable-dialog-form div.jtable-input-label { + padding: 2px 3px; + font-size: 1.1em; + color: #666; +} +form.jtable-dialog-form div.jtable-input { + padding: 2px; +} +form.jtable-dialog-form div.jtable-date-input { + /* No additional style */ + +} +form.jtable-dialog-form div.jtable-text-input { + /* No additional style */ + +} +form.jtable-dialog-form span.jtable-option-text-clickable { + position: relative; + top: -2px; +} +form.jtable-dialog-form div.jtable-textarea-input textarea { + width: 300px; + min-height: 60px; +} +form.jtable-dialog-form div.jtable-checkbox-input span, +form.jtable-dialog-form div.jtable-radio-input span { + padding-left: 4px; +} +form.jtable-dialog-form div.jtable-radio-input input, +form.jtable-dialog-form div.jtable-checkbox-input input, +form.jtable-dialog-form span.jtable-option-text-clickable { + cursor: pointer; +} +div.jtable-busy-panel-background { + opacity: 0.1; + filter: alpha(opacity=50); + z-index: 998; + position: absolute; + background-color: #000; +} +div.jtable-busy-panel-background.jtable-busy-panel-background-invisible { + background-color: transparent; +} +div.jtable-busy-message { + cursor: wait; + z-index: 999; + position: absolute; + margin: 5px; +} +div.jtable-contextmenu-overlay { + position: fixed; + left: 0px; + top: 0px; + width: 100%; + height: 100%; + z-index: 100; +} +div.jtable-main-container { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 14px; + background: #fff; + line-height: 1.3; +} +div.jtable-main-container > div.jtable-title { + background-color: #b8310a; + padding-left: 10px; +} +div.jtable-main-container > div.jtable-title div.jtable-title-text { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 19px; + line-height: 34px; + color: #fff; +} +div.jtable-main-container > div.jtable-title .jtable-close-button { + right: 8px; + top: 8px; + bottom: 8px; + position: absolute; + opacity: 0.5; + filter: alpha(opacity=50); + background: url('../../metro/close.png') no-repeat; + width: 16px; + height: 16px; +} +div.jtable-main-container > div.jtable-title .jtable-close-button:hover { + opacity: 1; + filter: alpha(opacity=50); +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar { + bottom: 0px; + right: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item { + background-color: #c23b14; + color: white; +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon { + background-image: url('../../metro/add.png'); +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover { + background-color: #c9421b; + padding-bottom: 6px; +} +div.jtable-main-container > table.jtable { + border: 1px solid #da532c; + border-collapse: collapse; + border-spacing: 0; +} +div.jtable-main-container > table.jtable > thead { + background-color: #da532c; +} +div.jtable-main-container > table.jtable > thead th { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 15px; + color: #fff; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container { + height: 24px; + margin-left: 4px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler { + height: 28px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text { + margin-top: 2px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sortable div.jtable-column-header-container { + background: url('../../metro/column-sortable.png') no-repeat right; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sorted-asc div.jtable-column-header-container { + background: url('../../metro/column-asc.png') no-repeat right; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sorted-desc div.jtable-column-header-container { + background: url('../../metro/column-desc.png') no-repeat right; +} +div.jtable-main-container > table.jtable > tbody > tr { + background-color: #fff; +} +div.jtable-main-container > table.jtable > tbody > tr > td { + border: 1px solid #ddd; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td { + padding: 4px; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-edit-command-button { + background: url('../../metro/edit.png') no-repeat; + width: 16px; + height: 16px; + opacity: 0.4; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-edit-command-button:hover { + opacity: 0.8; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-delete-command-button { + background: url('../../metro/delete.png') no-repeat; + width: 16px; + height: 16px; + opacity: 0.4; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-delete-command-button:hover { + opacity: 0.8; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-even { + background-color: #f9f9f9; +} +div.jtable-main-container > table.jtable > tbody > tr:hover { + background: #e8eaef; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-selected { + color: #fff; + background-color: #fc754e; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-created { + background-color: #ff865f; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-updated { + background-color: #ff865f; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-deleting { + background-color: #e51400; + color: #fff; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-child-row > td { + padding: 2px; + background-color: #fff; +} +div.jtable-main-container > div.jtable-bottom-panel { + background-color: #c9421b; + color: #fff; + min-height: 22.900000000000002px; + font-size: 13px; + border: 1px solid #da532c; + border-top: none; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + margin: 1px 0px 0px 0px; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + background-color: #da532c; + margin: 1px; + padding: 2px 5px; + color: #fff; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover { + background-color: #fc754e; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + opacity: 0.75; + filter: alpha(opacity=50); + color: #ccc; + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover { + background-color: #da532c; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + display: inline-block; + padding: 4px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + display: inline-block; + padding: 2px 0px 2px 0px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + display: inline-block; + padding: 2px 0px 2px 0px; +} +form.jtable-dialog-form { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 400; + font-size: 14px; +} +div.jtable-busy-message { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 16px; + border: 1px solid #fff; + padding: 5px 5px 5px 58px; + color: #fff; + background: url('../../metro/darkorange/loading.gif') no-repeat; + background-color: #b8310a; + background-position: 8px; +} diff --git a/lib/themes/metro/darkorange/jtable.less b/lib/themes/metro/darkorange/jtable.less new file mode 100644 index 0000000..cb32bac --- /dev/null +++ b/lib/themes/metro/darkorange/jtable.less @@ -0,0 +1,11 @@ +/* jTable metro style theme - Dark orange + * Created by Halil İbrahim Kalkan + * http://www.jtable.org + */ + +@import "../jtable_metro_base.less"; + +@theme-folder:'darkorange'; +@main-theme-color: #da532c; + +.jtable_metro_base(@theme-folder, @main-theme-color); \ No newline at end of file diff --git a/lib/themes/metro/darkorange/jtable.min.css b/lib/themes/metro/darkorange/jtable.min.css new file mode 100644 index 0000000..414b2e7 --- /dev/null +++ b/lib/themes/metro/darkorange/jtable.min.css @@ -0,0 +1 @@ +@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('Open Sans Light'),local('OpenSans-Light'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/DXI1ORHCpsQm3Vp6mXoaTRa1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300;src:local('Open Sans Light Italic'),local('OpenSansLight-Italic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxrsuoFAk0leveMLeqYtnfAY.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans'),local('OpenSans'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/u-WUoqrET9fUeobQW7jkRT8E0i7KZn-EPnyo3HZu7kw.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/xjAJXh38I15wypJXxuGMBtIh4imgI8P11RFo6YPCPC0.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;src:local('Open Sans Semibold'),local('OpenSans-Semibold'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/MTP_ySUJH_bn48VBG8sNSha1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:600;src:local('Open Sans Semibold Italic'),local('OpenSans-SemiboldItalic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxmWeb5PoA5ztb49yLyUzH1A.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/k3k702ZOKiLJc3WVjuplzBa1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local('Open Sans Bold Italic'),local('OpenSans-BoldItalic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxoUt79146ZFaIJxILcpzmhI.woff) format('woff')}div.jtable-main-container{position:relative}div.jtable-main-container div.jtable-title{position:relative;text-align:left}div.jtable-main-container div.jtable-title .jtable-close-button{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute;display:inline-block;margin-right:5px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{position:relative;display:inline-block;margin:0 0 0 5px;cursor:pointer;font-size:.9em;padding:2px;vertical-align:bottom}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-icon{display:inline-block;margin:2px;vertical-align:middle;width:16px;height:16px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-text{display:inline-block;margin:2px;vertical-align:middle}div.jtable-main-container div.jtable-title .jtable-close-button+div.jtable-toolbar{margin-right:30px}div.jtable-main-container table.jtable{width:100%}div.jtable-main-container table.jtable thead th{vertical-align:middle;text-align:left}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container{position:relative}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{display:inline-block}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{position:absolute;height:24px;width:8px;right:-8px;top:-2px;z-index:2;cursor:col-resize}div.jtable-main-container table.jtable thead th.jtable-command-column-header{text-align:center}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting{text-align:center;width:1%}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting input{cursor:pointer}div.jtable-main-container table.jtable thead th.jtable-column-header-sortable{cursor:pointer}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button{margin:0;padding:0;cursor:pointer;border:none;display:inline}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button span{display:none}div.jtable-main-container table.jtable tbody tr>td.jtable-command-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column input{cursor:pointer}div.jtable-main-container table.jtable tbody tr.jtable-no-data-row{text-align:center}div.jtable-main-container>div.jtable-bottom-panel{position:relative;min-height:24px;text-align:left}div.jtable-main-container>div.jtable-bottom-panel div.jtable-right-area{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{display:inline-block}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{padding:2px 5px;display:inline-block;cursor:pointer}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{cursor:default}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page input[type=text]{width:22px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{vertical-align:middle}div.jtable-main-container div.jtable-column-resize-bar{opacity:.5;filter:alpha(opacity=50);position:absolute;display:none;width:1px;background-color:#000}div.jtable-main-container div.jtable-column-selection-container{position:absolute;display:none;border:1px solid #c8c8c8;background:#fff;color:#000;z-index:101;padding:5px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list{margin:0;padding:0;list-style:none}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li{margin:0;padding:2px 0}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span{position:relative;top:-1px;margin-left:4px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"]{cursor:pointer}form.jtable-dialog-form div.jtable-input-field-container{padding:2px 0 3px 0;border-bottom:1px solid #ddd}form.jtable-dialog-form div.jtable-input-field-container:last-child{border:none}form.jtable-dialog-form div.jtable-input-label{padding:2px 3px;font-size:1.1em;color:#666}form.jtable-dialog-form div.jtable-input{padding:2px}form.jtable-dialog-form div.jtable-date-input{}form.jtable-dialog-form div.jtable-text-input{}form.jtable-dialog-form span.jtable-option-text-clickable{position:relative;top:-2px}form.jtable-dialog-form div.jtable-textarea-input textarea{width:300px;min-height:60px}form.jtable-dialog-form div.jtable-checkbox-input span,form.jtable-dialog-form div.jtable-radio-input span{padding-left:4px}form.jtable-dialog-form div.jtable-radio-input input,form.jtable-dialog-form div.jtable-checkbox-input input,form.jtable-dialog-form span.jtable-option-text-clickable{cursor:pointer}div.jtable-busy-panel-background{opacity:.1;filter:alpha(opacity=50);z-index:998;position:absolute;background-color:#000}div.jtable-busy-panel-background.jtable-busy-panel-background-invisible{background-color:transparent}div.jtable-busy-message{cursor:wait;z-index:999;position:absolute;margin:5px}div.jtable-contextmenu-overlay{position:fixed;left:0;top:0;width:100%;height:100%;z-index:100}div.jtable-main-container{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:14px;background:#fff;line-height:1.3}div.jtable-main-container>div.jtable-title{background-color:#b8310a;padding-left:10px}div.jtable-main-container>div.jtable-title div.jtable-title-text{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:19px;line-height:34px;color:#fff}div.jtable-main-container>div.jtable-title .jtable-close-button{right:8px;top:8px;bottom:8px;position:absolute;opacity:.5;filter:alpha(opacity=50);background:url('../../metro/close.png') no-repeat;width:16px;height:16px}div.jtable-main-container>div.jtable-title .jtable-close-button:hover{opacity:1;filter:alpha(opacity=50)}div.jtable-main-container>div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{background-color:#c23b14;color:#fff}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon{background-image:url('../../metro/add.png')}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover{background-color:#c9421b;padding-bottom:6px}div.jtable-main-container>table.jtable{border:1px solid #da532c;border-collapse:collapse;border-spacing:0}div.jtable-main-container>table.jtable>thead{background-color:#da532c}div.jtable-main-container>table.jtable>thead th{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:15px;color:#fff}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container{height:24px;margin-left:4px}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{height:28px}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{margin-top:2px}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sortable div.jtable-column-header-container{background:url('../../metro/column-sortable.png') no-repeat right}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sorted-asc div.jtable-column-header-container{background:url('../../metro/column-asc.png') no-repeat right}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sorted-desc div.jtable-column-header-container{background:url('../../metro/column-desc.png') no-repeat right}div.jtable-main-container>table.jtable>tbody>tr{background-color:#fff}div.jtable-main-container>table.jtable>tbody>tr>td{border:1px solid #ddd}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td{padding:4px}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-edit-command-button{background:url('../../metro/edit.png') no-repeat;width:16px;height:16px;opacity:.4}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-edit-command-button:hover{opacity:.8}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-delete-command-button{background:url('../../metro/delete.png') no-repeat;width:16px;height:16px;opacity:.4}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-delete-command-button:hover{opacity:.8}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-even{background-color:#f9f9f9}div.jtable-main-container>table.jtable>tbody>tr:hover{background:#e8eaef}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-selected{color:#fff;background-color:#fc754e}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-created{background-color:#ff865f}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-updated{background-color:#ff865f}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-deleting{background-color:#e51400;color:#fff}div.jtable-main-container>table.jtable>tbody>tr.jtable-child-row>td{padding:2px;background-color:#fff}div.jtable-main-container>div.jtable-bottom-panel{background-color:#c9421b;color:#fff;min-height:22.900000000000002px;font-size:13px;border:1px solid #da532c;border-top:none}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{margin:1px 0 0 0}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{background-color:#da532c;margin:1px;padding:2px 5px;color:#fff}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover{background-color:#fc754e}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{opacity:.75;filter:alpha(opacity=50);color:#ccc;cursor:default}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover{background-color:#da532c}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{display:inline-block;padding:4px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{display:inline-block;padding:2px 0 2px 0}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{display:inline-block;padding:2px 0 2px 0}form.jtable-dialog-form{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:400;font-size:14px}div.jtable-busy-message{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:16px;border:1px solid #fff;padding:5px 5px 5px 58px;color:#fff;background:url('../../metro/darkorange/loading.gif') no-repeat;background-color:#b8310a;background-position:8px} diff --git a/lib/themes/metro/darkorange/loading.gif b/lib/themes/metro/darkorange/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b0d436c4f24a39fddf44772d07f4fd0e586c382 GIT binary patch literal 404 zcmZ?wbhEHb)Mnsj_{hMp!;tI$|Npn9HUde-e^Smxsfi`2DGKG8B^e5dS&0=n`H3ld znR#jX42nNl7`PZ17!?0=`?-b$J39ur8tEA@GXjNlfS3VfAOn+8OCQJSX*X{)e?H13 zeJ||u>DC8kZ4r?R)6{G4&Dyt|CtcU`diyE8Uq?3owA-;j!N^AxXd>8TMr31bj{uEP z;7?56IIHFOnwrlu67PNQNtrQY{;7pt&RzvNJJ_?&Ze06Pg>MsMs)$s6#HZT6Q+}5p z&C*E81%TGdiiN4(8Lw%U?wsno9F=b>WnG7*rn?>{@R)9v%+M)yIi1FiTcrX vD}VECG@HG3ZvWp+k0+)$$G&~0?NxTdRajt8g3>tw(O*m=3=Gzwa03GXpVFAJ literal 0 HcmV?d00001 diff --git a/lib/themes/metro/delete.png b/lib/themes/metro/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..f4c24dbc76713e3be268390e57c45dd7391200f5 GIT binary patch literal 3167 zcmd57%Q6kdWTB~a)IQ9$izdjstKi~m-35_{KaEb0(BP8*OwS?^BlA?satcAPjl z&{7Z-DHn=3qH;sxfK+aXLwe|?94K7jP^knVRiL6GAtVsx?XJCDCk852LPU=3oq6y3 zzW3(MoAEpIbH@&hKRM2E+=0rhUW3nr{{Q}c@P6c%+Xlxyyh!RxY^i!&HQjd7u-pbt z_Szko=eYb-uVa|2n4t!45~sl5{Ct~7#47M7Q&q9r(Qu2*Zc@CkIafC~SIwNoPfd>J zdny35F*8uFZ9AUYEARoX3g7)2b&!u~G~6yL@I1_;K6t0)GS_RloruEm z`dNeg3DLA5B}F0bSm`ix0`lUA8TkU28Hn?kCB!WP_aJ*iAmAVQ4)OMk&K^cEu2%oq zyxksx_gHxi;_c^dB!O4o=wP9SJ-16uTwcQtI~otuG9&*^m)b#amMLHxx53l{kmTT6Ta99iKyZFVG(n1u zR}2#;VbOLO>ITDL4DV3qvM7lOQG!=s6<;E?;xKI6z|}SEW7zSRwL^fpNsSN_VpFS7 z@0P&~A2kN2)MZIk6jf556(v;^1N30Q)E6LD;uyB>nq5C<6}`a2OwuBjn#yF;MM=@J z(o9A#OH!^}EagN!BWAM2ncPG%26K<@6~|+SW8wij0rs?Bp3xK~UChj6efF#@Y2}HM ztYykd8bkye3FU{96lBt+nhU$lWEE${4K~xT4JlewBW$C<&r_q>#X%Toug$#aT98F4 zE%q}u!bW2haI{Tqwonasx(%C{Bk{^@gV-ls3QcI$m>y9QyTKP}-+V*~34RYj`EUhi zi3jz!5e$WmWdWZGpTb9*1W76R4lAKaX zGx~7odxXP|kt9`4{rAHEweW|QbC>XuTm3FFo)`QhXizzMVQ+2aEmLI#I$5mJiZ&ar zH2>UEZCF<5A_)tcUe{*)6v;`9}G-NviX1Y;UX zMsrxhqz^p|JJ<-5QOg{j51$4|0d1VfC${dK)-m#d(x_rbC!pRU9)cHZ^#fm_ZW}=x zj~xtm(&G7fNup5_2Yi9V-I9Enrhk^WG$wJdrjf+SqK$ioV_}M(Cmx)YYonM3ZUIvq z)n^G0$Qa2$S41*84?%w>YZ$Iy?Y8T9sK^*4jc#xUnsc3mKaQzM3>(e4NXL|{84Mh} zQ4$BFfy9_3zcJQ=BV1kdj3%yQ+V=iGV*gHE7-H;J2$I7wxNX8kSBP%9@DSaVu>%d1 z!cF+`WADENx9CHxyu=pV6}E0r%!L=;N*l6J!-lnS>I%+-(T5eiSnqw)u+EHWn)VvP z+~ot)KVCZXl+9g#=!dHpruJVKZ``QQe24;_5{t9i4?dO z_n*J-gX+1%&OY?^Gcb7g=~vEtq@Or(;{3w(o7c7vz5DXduV4Oyt6k*|E_084|Hb}k S`_@_icR{5*r+-pfKKmEWwAmH_ literal 0 HcmV?d00001 diff --git a/lib/themes/metro/edit.png b/lib/themes/metro/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..406e5af18dded4ecda44a1cad0a3ce965c99aceb GIT binary patch literal 3359 zcmd5<4{Q@v7%vRT7%ps)KY;{z9uT6?-oI{b&vskacF;h_*q^|Rvfb`p+hfVqRV5)YE?wJq z@B4ng-}k-meeZRBOY@@2iWwCShodsOINXXqtBn8h@%VlA)w{gIF|k8xUx`-6mU4oc za`B?t16|ov8qYf%{`zd17kVKAJuo3D0pjxBPYEE20b)f>jEbd0Fexn_)L`3SbGtCu zEBHjBzOKTbC_`C6#B!FpxdILnzAOtI8Eg+<75V&28i*X86 zEemQ`7hA*BGVXJL8F~ThPVlKfHrz4THTbS-<_KHBTf5Eqi zH_N9-F=FFb?4Qk3sUmnCMfz~Ox!jc`(Ax*nkZgszn$ZLp>4OTIV-Hgl3jXPgCY!;D z0tsc9!lpVFNf%LKk*!i9iS&Y7Nm|Xcu{;Yo=7JfNR5iUt)g@!ia5ZTNge46MNYzYL z_iRHN6eS#-Q4t9&MTT)+fG)gfBMielg4h_p<2q+3nsQP!ewkMGCE}tAg0hUcGQ7M9 zD#o&=CCr@AcncH9#>H^Gi#*~DR2v-I&d?moax}YuqB)8((aig_pyskTG%= z4F?E3;}Rv2^HOxU$;XDgbdx6>p=nB^8_WZ`M-?6MiU9NM5@x4- zZl9ZBJwZ>C*I@TDbSUC(WI~<@TZ=`Q8wvP}l4NF5)j}%XZ32oaan;;R#Wqq<)It&( z2oNnApU6Nn3^3ZJMNmbYMY@*CWvqlv2x%B6Gzf(xXocxak1Po#@ggZ+l2@o2ZbH3$ zLy3|Y3ErXQ%uAFIY4i}_w^nemq~rP`~bDzO=5mc z3li&sGR*Rd2sN-o((zf@SBfd`W-{4P4HoNww2|a>6-Y|w!R*gcAH>(MR7zEJ5JX6m zdNSr6s99B<#&f6%5-)>h6@;NC_3;Qh=%pm)Nll41Nk(IAHIHzvL+2B)9cn54|0DMA z)L9|gZiQH~^$g!O@kN&`+;s7va94&3ZlD^z2~U|6+=y?{(@|t4YE$E=pVy$ny6{F* zI18D|EHB?e+&F%e3=Y3Dp|^9|PSm~m)bRmUO(Z@z>+O1>>cyo8D~}FuIsb^K z>f+if4TrwEyYIrD<}vfw4T*BFD|LH!{7zYNb?33GGiK_Ij|HA~y>b1|=PplLzkl7a zOSfmGc5gb3_O0rQee=gdTOEfZV9BzlN}v*D!zMr^4KHu(#t1*wqrKk0D6y5WgE&} z2bt5)F1T~*3{`e<=%wqoXI>h9;`*E0Z&ppe@^E@jx%*rA`YSDKx=)W`$F1|ex^>+5 z3jq9R+uG^3ejPjYc-8p2h4f+1TVJ1QK>>m0H<90Mr literal 0 HcmV?d00001 diff --git a/lib/themes/metro/green/jtable.css b/lib/themes/metro/green/jtable.css new file mode 100644 index 0000000..6ad5828 --- /dev/null +++ b/lib/themes/metro/green/jtable.css @@ -0,0 +1,495 @@ +/* jTable metro style theme - Green + * Created by Halil İbrahim Kalkan + * http://www.jtable.org + */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + src: local('Open Sans Light'), local('OpenSans-Light'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/DXI1ORHCpsQm3Vp6mXoaTRa1RVmPjeKy21_GQJaLlJI.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 300; + src: local('Open Sans Light Italic'), local('OpenSansLight-Italic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxrsuoFAk0leveMLeqYtnfAY.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans'), local('OpenSans'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/u-WUoqrET9fUeobQW7jkRT8E0i7KZn-EPnyo3HZu7kw.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans Italic'), local('OpenSans-Italic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/xjAJXh38I15wypJXxuGMBtIh4imgI8P11RFo6YPCPC0.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/MTP_ySUJH_bn48VBG8sNSha1RVmPjeKy21_GQJaLlJI.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 600; + src: local('Open Sans Semibold Italic'), local('OpenSans-SemiboldItalic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxmWeb5PoA5ztb49yLyUzH1A.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: local('Open Sans Bold'), local('OpenSans-Bold'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/k3k702ZOKiLJc3WVjuplzBa1RVmPjeKy21_GQJaLlJI.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxoUt79146ZFaIJxILcpzmhI.woff) format('woff'); +} +div.jtable-main-container { + position: relative; +} +div.jtable-main-container div.jtable-title { + position: relative; + text-align: left; +} +div.jtable-main-container div.jtable-title .jtable-close-button { + right: 0px; + top: 0px; + bottom: 0px; + position: absolute; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar { + bottom: 0px; + right: 0px; + position: absolute; + display: inline-block; + margin-right: 5px; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item { + position: relative; + display: inline-block; + margin: 0px 0px 0px 5px; + cursor: pointer; + font-size: 0.9em; + padding: 2px; + vertical-align: bottom; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-icon { + display: inline-block; + margin: 2px; + vertical-align: middle; + width: 16px; + height: 16px; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-text { + display: inline-block; + margin: 2px; + vertical-align: middle; +} +div.jtable-main-container div.jtable-title .jtable-close-button + div.jtable-toolbar { + margin-right: 30px; +} +div.jtable-main-container table.jtable { + width: 100%; +} +div.jtable-main-container table.jtable thead th { + vertical-align: middle; + text-align: left; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container { + position: relative; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text { + display: inline-block; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler { + position: absolute; + height: 24px; + width: 8px; + right: -8px; + top: -2px; + z-index: 2; + cursor: col-resize; +} +div.jtable-main-container table.jtable thead th.jtable-command-column-header { + text-align: center; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-selecting { + text-align: center; + width: 1%; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-selecting input { + cursor: pointer; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sortable { + cursor: pointer; +} +div.jtable-main-container table.jtable tbody tr > td .jtable-command-button { + margin: 0px; + padding: 0px; + cursor: pointer; + border: none; + display: inline; +} +div.jtable-main-container table.jtable tbody tr > td .jtable-command-button span { + display: none; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-command-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column input { + cursor: pointer; +} +div.jtable-main-container table.jtable tbody tr.jtable-no-data-row { + text-align: center; +} +div.jtable-main-container > div.jtable-bottom-panel { + position: relative; + min-height: 24px; + text-align: left; +} +div.jtable-main-container > div.jtable-bottom-panel div.jtable-right-area { + right: 0px; + top: 0px; + bottom: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + display: inline-block; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + padding: 2px 5px; + display: inline-block; + cursor: pointer; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page input[type=text] { + width: 22px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + vertical-align: middle; +} +div.jtable-main-container div.jtable-column-resize-bar { + opacity: 0.5; + filter: alpha(opacity=50); + position: absolute; + display: none; + width: 1px; + background-color: #000; +} +div.jtable-main-container div.jtable-column-selection-container { + position: absolute; + display: none; + border: 1px solid #C8C8C8; + background: #fff; + color: #000; + z-index: 101; + padding: 5px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list { + margin: 0px; + padding: 0px; + list-style: none; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li { + margin: 0px; + padding: 2px 0px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span { + position: relative; + top: -1px; + margin-left: 4px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"] { + cursor: pointer; +} +form.jtable-dialog-form div.jtable-input-field-container { + padding: 2px 0px 3px 0px; + border-bottom: 1px solid #ddd; +} +form.jtable-dialog-form div.jtable-input-field-container:last-child { + border: none; +} +form.jtable-dialog-form div.jtable-input-label { + padding: 2px 3px; + font-size: 1.1em; + color: #666; +} +form.jtable-dialog-form div.jtable-input { + padding: 2px; +} +form.jtable-dialog-form div.jtable-date-input { + /* No additional style */ + +} +form.jtable-dialog-form div.jtable-text-input { + /* No additional style */ + +} +form.jtable-dialog-form span.jtable-option-text-clickable { + position: relative; + top: -2px; +} +form.jtable-dialog-form div.jtable-textarea-input textarea { + width: 300px; + min-height: 60px; +} +form.jtable-dialog-form div.jtable-checkbox-input span, +form.jtable-dialog-form div.jtable-radio-input span { + padding-left: 4px; +} +form.jtable-dialog-form div.jtable-radio-input input, +form.jtable-dialog-form div.jtable-checkbox-input input, +form.jtable-dialog-form span.jtable-option-text-clickable { + cursor: pointer; +} +div.jtable-busy-panel-background { + opacity: 0.1; + filter: alpha(opacity=50); + z-index: 998; + position: absolute; + background-color: #000; +} +div.jtable-busy-panel-background.jtable-busy-panel-background-invisible { + background-color: transparent; +} +div.jtable-busy-message { + cursor: wait; + z-index: 999; + position: absolute; + margin: 5px; +} +div.jtable-contextmenu-overlay { + position: fixed; + left: 0px; + top: 0px; + width: 100%; + height: 100%; + z-index: 100; +} +div.jtable-main-container { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 14px; + background: #fff; + line-height: 1.3; +} +div.jtable-main-container > div.jtable-title { + background-color: #008100; + padding-left: 10px; +} +div.jtable-main-container > div.jtable-title div.jtable-title-text { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 19px; + line-height: 34px; + color: #fff; +} +div.jtable-main-container > div.jtable-title .jtable-close-button { + right: 8px; + top: 8px; + bottom: 8px; + position: absolute; + opacity: 0.5; + filter: alpha(opacity=50); + background: url('../../metro/close.png') no-repeat; + width: 16px; + height: 16px; +} +div.jtable-main-container > div.jtable-title .jtable-close-button:hover { + opacity: 1; + filter: alpha(opacity=50); +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar { + bottom: 0px; + right: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item { + background-color: #008b00; + color: white; +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon { + background-image: url('../../metro/add.png'); +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover { + background-color: #009200; + padding-bottom: 6px; +} +div.jtable-main-container > table.jtable { + border: 1px solid #00a300; + border-collapse: collapse; + border-spacing: 0; +} +div.jtable-main-container > table.jtable > thead { + background-color: #00a300; +} +div.jtable-main-container > table.jtable > thead th { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 15px; + color: #fff; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container { + height: 24px; + margin-left: 4px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler { + height: 28px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text { + margin-top: 2px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sortable div.jtable-column-header-container { + background: url('../../metro/column-sortable.png') no-repeat right; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sorted-asc div.jtable-column-header-container { + background: url('../../metro/column-asc.png') no-repeat right; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sorted-desc div.jtable-column-header-container { + background: url('../../metro/column-desc.png') no-repeat right; +} +div.jtable-main-container > table.jtable > tbody > tr { + background-color: #fff; +} +div.jtable-main-container > table.jtable > tbody > tr > td { + border: 1px solid #ddd; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td { + padding: 4px; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-edit-command-button { + background: url('../../metro/edit.png') no-repeat; + width: 16px; + height: 16px; + opacity: 0.4; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-edit-command-button:hover { + opacity: 0.8; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-delete-command-button { + background: url('../../metro/delete.png') no-repeat; + width: 16px; + height: 16px; + opacity: 0.4; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-delete-command-button:hover { + opacity: 0.8; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-even { + background-color: #f9f9f9; +} +div.jtable-main-container > table.jtable > tbody > tr:hover { + background: #e8eaef; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-selected { + color: #fff; + background-color: #22c522; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-created { + background-color: #33d633; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-updated { + background-color: #33d633; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-deleting { + background-color: #e51400; + color: #fff; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-child-row > td { + padding: 2px; + background-color: #fff; +} +div.jtable-main-container > div.jtable-bottom-panel { + background-color: #009200; + color: #fff; + min-height: 22.900000000000002px; + font-size: 13px; + border: 1px solid #00a300; + border-top: none; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + margin: 1px 0px 0px 0px; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + background-color: #00a300; + margin: 1px; + padding: 2px 5px; + color: #fff; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover { + background-color: #22c522; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + opacity: 0.75; + filter: alpha(opacity=50); + color: #ccc; + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover { + background-color: #00a300; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + display: inline-block; + padding: 4px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + display: inline-block; + padding: 2px 0px 2px 0px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + display: inline-block; + padding: 2px 0px 2px 0px; +} +form.jtable-dialog-form { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 400; + font-size: 14px; +} +div.jtable-busy-message { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 16px; + border: 1px solid #fff; + padding: 5px 5px 5px 58px; + color: #fff; + background: url('../../metro/green/loading.gif') no-repeat; + background-color: #008100; + background-position: 8px; +} diff --git a/lib/themes/metro/green/jtable.less b/lib/themes/metro/green/jtable.less new file mode 100644 index 0000000..c92ca9a --- /dev/null +++ b/lib/themes/metro/green/jtable.less @@ -0,0 +1,11 @@ +/* jTable metro style theme - Green + * Created by Halil İbrahim Kalkan + * http://www.jtable.org + */ + +@import "../jtable_metro_base.less"; + +@theme-folder:'green'; +@main-theme-color: #00a300; + +.jtable_metro_base(@theme-folder, @main-theme-color); \ No newline at end of file diff --git a/lib/themes/metro/green/jtable.min.css b/lib/themes/metro/green/jtable.min.css new file mode 100644 index 0000000..09f15de --- /dev/null +++ b/lib/themes/metro/green/jtable.min.css @@ -0,0 +1 @@ +@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('Open Sans Light'),local('OpenSans-Light'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/DXI1ORHCpsQm3Vp6mXoaTRa1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300;src:local('Open Sans Light Italic'),local('OpenSansLight-Italic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxrsuoFAk0leveMLeqYtnfAY.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans'),local('OpenSans'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/u-WUoqrET9fUeobQW7jkRT8E0i7KZn-EPnyo3HZu7kw.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/xjAJXh38I15wypJXxuGMBtIh4imgI8P11RFo6YPCPC0.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;src:local('Open Sans Semibold'),local('OpenSans-Semibold'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/MTP_ySUJH_bn48VBG8sNSha1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:600;src:local('Open Sans Semibold Italic'),local('OpenSans-SemiboldItalic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxmWeb5PoA5ztb49yLyUzH1A.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/k3k702ZOKiLJc3WVjuplzBa1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local('Open Sans Bold Italic'),local('OpenSans-BoldItalic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxoUt79146ZFaIJxILcpzmhI.woff) format('woff')}div.jtable-main-container{position:relative}div.jtable-main-container div.jtable-title{position:relative;text-align:left}div.jtable-main-container div.jtable-title .jtable-close-button{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute;display:inline-block;margin-right:5px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{position:relative;display:inline-block;margin:0 0 0 5px;cursor:pointer;font-size:.9em;padding:2px;vertical-align:bottom}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-icon{display:inline-block;margin:2px;vertical-align:middle;width:16px;height:16px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-text{display:inline-block;margin:2px;vertical-align:middle}div.jtable-main-container div.jtable-title .jtable-close-button+div.jtable-toolbar{margin-right:30px}div.jtable-main-container table.jtable{width:100%}div.jtable-main-container table.jtable thead th{vertical-align:middle;text-align:left}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container{position:relative}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{display:inline-block}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{position:absolute;height:24px;width:8px;right:-8px;top:-2px;z-index:2;cursor:col-resize}div.jtable-main-container table.jtable thead th.jtable-command-column-header{text-align:center}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting{text-align:center;width:1%}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting input{cursor:pointer}div.jtable-main-container table.jtable thead th.jtable-column-header-sortable{cursor:pointer}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button{margin:0;padding:0;cursor:pointer;border:none;display:inline}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button span{display:none}div.jtable-main-container table.jtable tbody tr>td.jtable-command-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column input{cursor:pointer}div.jtable-main-container table.jtable tbody tr.jtable-no-data-row{text-align:center}div.jtable-main-container>div.jtable-bottom-panel{position:relative;min-height:24px;text-align:left}div.jtable-main-container>div.jtable-bottom-panel div.jtable-right-area{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{display:inline-block}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{padding:2px 5px;display:inline-block;cursor:pointer}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{cursor:default}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page input[type=text]{width:22px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{vertical-align:middle}div.jtable-main-container div.jtable-column-resize-bar{opacity:.5;filter:alpha(opacity=50);position:absolute;display:none;width:1px;background-color:#000}div.jtable-main-container div.jtable-column-selection-container{position:absolute;display:none;border:1px solid #c8c8c8;background:#fff;color:#000;z-index:101;padding:5px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list{margin:0;padding:0;list-style:none}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li{margin:0;padding:2px 0}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span{position:relative;top:-1px;margin-left:4px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"]{cursor:pointer}form.jtable-dialog-form div.jtable-input-field-container{padding:2px 0 3px 0;border-bottom:1px solid #ddd}form.jtable-dialog-form div.jtable-input-field-container:last-child{border:none}form.jtable-dialog-form div.jtable-input-label{padding:2px 3px;font-size:1.1em;color:#666}form.jtable-dialog-form div.jtable-input{padding:2px}form.jtable-dialog-form div.jtable-date-input{}form.jtable-dialog-form div.jtable-text-input{}form.jtable-dialog-form span.jtable-option-text-clickable{position:relative;top:-2px}form.jtable-dialog-form div.jtable-textarea-input textarea{width:300px;min-height:60px}form.jtable-dialog-form div.jtable-checkbox-input span,form.jtable-dialog-form div.jtable-radio-input span{padding-left:4px}form.jtable-dialog-form div.jtable-radio-input input,form.jtable-dialog-form div.jtable-checkbox-input input,form.jtable-dialog-form span.jtable-option-text-clickable{cursor:pointer}div.jtable-busy-panel-background{opacity:.1;filter:alpha(opacity=50);z-index:998;position:absolute;background-color:#000}div.jtable-busy-panel-background.jtable-busy-panel-background-invisible{background-color:transparent}div.jtable-busy-message{cursor:wait;z-index:999;position:absolute;margin:5px}div.jtable-contextmenu-overlay{position:fixed;left:0;top:0;width:100%;height:100%;z-index:100}div.jtable-main-container{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:14px;background:#fff;line-height:1.3}div.jtable-main-container>div.jtable-title{background-color:#008100;padding-left:10px}div.jtable-main-container>div.jtable-title div.jtable-title-text{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:19px;line-height:34px;color:#fff}div.jtable-main-container>div.jtable-title .jtable-close-button{right:8px;top:8px;bottom:8px;position:absolute;opacity:.5;filter:alpha(opacity=50);background:url('../../metro/close.png') no-repeat;width:16px;height:16px}div.jtable-main-container>div.jtable-title .jtable-close-button:hover{opacity:1;filter:alpha(opacity=50)}div.jtable-main-container>div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{background-color:#008b00;color:#fff}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon{background-image:url('../../metro/add.png')}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover{background-color:#009200;padding-bottom:6px}div.jtable-main-container>table.jtable{border:1px solid #00a300;border-collapse:collapse;border-spacing:0}div.jtable-main-container>table.jtable>thead{background-color:#00a300}div.jtable-main-container>table.jtable>thead th{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:15px;color:#fff}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container{height:24px;margin-left:4px}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{height:28px}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{margin-top:2px}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sortable div.jtable-column-header-container{background:url('../../metro/column-sortable.png') no-repeat right}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sorted-asc div.jtable-column-header-container{background:url('../../metro/column-asc.png') no-repeat right}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sorted-desc div.jtable-column-header-container{background:url('../../metro/column-desc.png') no-repeat right}div.jtable-main-container>table.jtable>tbody>tr{background-color:#fff}div.jtable-main-container>table.jtable>tbody>tr>td{border:1px solid #ddd}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td{padding:4px}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-edit-command-button{background:url('../../metro/edit.png') no-repeat;width:16px;height:16px;opacity:.4}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-edit-command-button:hover{opacity:.8}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-delete-command-button{background:url('../../metro/delete.png') no-repeat;width:16px;height:16px;opacity:.4}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-delete-command-button:hover{opacity:.8}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-even{background-color:#f9f9f9}div.jtable-main-container>table.jtable>tbody>tr:hover{background:#e8eaef}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-selected{color:#fff;background-color:#22c522}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-created{background-color:#33d633}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-updated{background-color:#33d633}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-deleting{background-color:#e51400;color:#fff}div.jtable-main-container>table.jtable>tbody>tr.jtable-child-row>td{padding:2px;background-color:#fff}div.jtable-main-container>div.jtable-bottom-panel{background-color:#009200;color:#fff;min-height:22.900000000000002px;font-size:13px;border:1px solid #00a300;border-top:none}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{margin:1px 0 0 0}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{background-color:#00a300;margin:1px;padding:2px 5px;color:#fff}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover{background-color:#22c522}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{opacity:.75;filter:alpha(opacity=50);color:#ccc;cursor:default}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover{background-color:#00a300}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{display:inline-block;padding:4px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{display:inline-block;padding:2px 0 2px 0}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{display:inline-block;padding:2px 0 2px 0}form.jtable-dialog-form{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:400;font-size:14px}div.jtable-busy-message{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:16px;border:1px solid #fff;padding:5px 5px 5px 58px;color:#fff;background:url('../../metro/green/loading.gif') no-repeat;background-color:#008100;background-position:8px} diff --git a/lib/themes/metro/green/loading.gif b/lib/themes/metro/green/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..6febd90a08aa160719a7208330c8e5aff56aab54 GIT binary patch literal 404 zcmZ?wbhEHb)Mnsj_{hM((8%!r|NokOH9%7FpOkY^YGO%hib8p2NrpmVR$@g?eqxGV zW?ou8gW^vX1}>lm#sA!Xt|7tBjsdPldIrplKp`CYN402SAotB_UyA8*S=KY+r*eEB9$NUskZNw-{nWM zbdrLOuZNk)gkmDdVFo}GSI)|czLWompG$aq<-^LJC07=#*u}Su`_OBjWV6oaC(ph7 z88mCg8q+fdJ?^Joewqn1am6~AiOk3*IzYWTW6Cae>AH=-cBcBQFq!Wz7pPUDestZ+ u-+UX*W^bL_|98{li7C#pZ=Y# div.jtable-title + { + background-color: @table-title-background; + padding-left: 10px; + + div.jtable-title-text + { + .font-light(@table-title-font-size); + line-height: @table-title-font-size + 15px; + color: #fff; + } + + .jtable-close-button + { + .dock(right, 8px); + .opacity(0.5); + background: url('metro/close.png') no-repeat; + width: 16px; + height: 16px; + + &:hover + { + .opacity(1); + } + } + + // Toolbar ------------------------------------------------------------- + + div.jtable-toolbar + { + .dock(bottom-right); + + span.jtable-toolbar-item + { + background-color: @table-title-background + #0A0A0A; + color: white; + + &.jtable-toolbar-item-add-record + { + span.jtable-toolbar-item-icon + { + background-image: url('metro/add.png'); + } + } + + &.jtable-toolbar-item-hover + { + background-color: @main-theme-color - #111; + padding-bottom: 6px; + } + } + } + } + + // Table --------------------------------------------------------------- + + > table.jtable + { + border: 1px solid @main-theme-color; + border-collapse: collapse; + border-spacing: 0; + + > thead + { + background-color: @table-header-background; + + th + { + .font-light(@table-header-font-size); + color: #fff; + + &.jtable-column-header + { + @header-container-height: 24px; + + div.jtable-column-header-container + { + height: @header-container-height; + margin-left: 4px; + + div.jtable-column-resize-handler + { + height: @header-container-height + 4px; + } + + span.jtable-column-header-text + { + margin-top: 2px; + } + } + } + + &.jtable-column-header-sortable + { + div.jtable-column-header-container + { + background: url('metro/column-sortable.png') no-repeat right; + } + } + + &.jtable-column-header-sorted-asc + { + div.jtable-column-header-container + { + background: url('metro/column-asc.png') no-repeat right; + } + } + + &.jtable-column-header-sorted-desc + { + div.jtable-column-header-container + { + background: url('metro/column-desc.png') no-repeat right; + } + } + } + } + + > tbody + { + > tr + { + background-color: #fff; + + > td + { + border: 1px solid #ddd; + } + + &.jtable-data-row + { + > td + { + padding: 4px; + + > .jtable-edit-command-button + { + background: url('metro/edit.png') no-repeat; + width: 16px; + height: 16px; + opacity: 0.4; + + &:hover + { + opacity: 0.8; + } + } + + > .jtable-delete-command-button + { + background: url('metro/delete.png') no-repeat; + width: 16px; + height: 16px; + opacity: 0.4; + + &:hover + { + opacity: 0.8; + } + } + } + } + + &.jtable-row-even + { + background-color: #f9f9f9; + } + + &:hover + { + background: #e8eaef; + } + + &.jtable-row-selected + { + color: #fff; + background-color: @main-theme-color + #222; + } + + &.jtable-row-created + { + background-color: @main-theme-color + #333; + } + + &.jtable-row-updated + { + background-color: @main-theme-color + #333; + } + + &.jtable-row-deleting + { + background-color: #e51400; + color: #fff; + } + + &.jtable-child-row + { + > td + { + padding: 2px; + background-color: #fff; + } + } + } + } + } + + // Bottom panel -------------------------------------------------------------- + + > div.jtable-bottom-panel + { + @page-number-margin: 1px; + @page-number-padding-vertical: 2px; + @page-number-padding-horizontal: 5px; + + @bottom-panel-height: (@table-bottom-panel-font-size * @default-line-height) + (@page-number-margin * 2) + (@page-number-padding-vertical * 2); + + background-color: @table-bottom-panel-background; + color: #fff; + min-height: @bottom-panel-height; + font-size: @table-bottom-panel-font-size; + border: 1px solid @main-theme-color; + border-top: none; + + .jtable-page-list + { + margin: 1px 0px 0px 0px; + + .jtable-page-number, + .jtable-page-number-space, + .jtable-page-number-first, + .jtable-page-number-last, + .jtable-page-number-previous, + .jtable-page-number-next, + .jtable-page-number-active + { + background-color: @table-bottom-panel-background + #111; + margin: @page-number-margin; + padding: @page-number-padding-vertical @page-number-padding-horizontal; + color: #fff; + } + + .jtable-page-number:hover, + .jtable-page-number-first:hover, + .jtable-page-number-last:hover, + .jtable-page-number-previous:hover, + .jtable-page-number-next:hover + { + background-color: @table-bottom-panel-background + #333; + } + + .jtable-page-number-disabled + { + .opacity(0.75); + color: #ccc; + cursor: default; + + &:hover + { + background-color: @table-bottom-panel-background + #111; + } + } + } + + span.jtable-page-info + { + display: inline-block; + padding: 4px; + } + + span.jtable-page-size-change + { + display:inline-block; + padding:2px 0px 2px 0px; + } + + span.jtable-goto-page + { + display:inline-block; + padding:2px 0px 2px 0px; + } + } + } + + // Forms ------------------------------------------------------------------- + + form.jtable-dialog-form + { + .font-normal(); + } + + // Busy message------------------------------------------------------------- + + div.jtable-busy-message + { + .font-light(16px); + border: 1px solid #fff; + padding: 5px 5px 5px 58px; + color: #fff; + background: url('metro/@{theme-folder}/loading.gif') no-repeat; + background-color: @main-theme-color - #222; + background-position: 8px; + } +} diff --git a/lib/themes/metro/jtable_metro_base.min.css b/lib/themes/metro/jtable_metro_base.min.css new file mode 100644 index 0000000..9f234dc --- /dev/null +++ b/lib/themes/metro/jtable_metro_base.min.css @@ -0,0 +1 @@ +@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('Open Sans Light'),local('OpenSans-Light'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/DXI1ORHCpsQm3Vp6mXoaTRa1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300;src:local('Open Sans Light Italic'),local('OpenSansLight-Italic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxrsuoFAk0leveMLeqYtnfAY.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans'),local('OpenSans'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/u-WUoqrET9fUeobQW7jkRT8E0i7KZn-EPnyo3HZu7kw.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/xjAJXh38I15wypJXxuGMBtIh4imgI8P11RFo6YPCPC0.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;src:local('Open Sans Semibold'),local('OpenSans-Semibold'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/MTP_ySUJH_bn48VBG8sNSha1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:600;src:local('Open Sans Semibold Italic'),local('OpenSans-SemiboldItalic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxmWeb5PoA5ztb49yLyUzH1A.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/k3k702ZOKiLJc3WVjuplzBa1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local('Open Sans Bold Italic'),local('OpenSans-BoldItalic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxoUt79146ZFaIJxILcpzmhI.woff) format('woff')} diff --git a/lib/themes/metro/lightgray/jtable.css b/lib/themes/metro/lightgray/jtable.css new file mode 100644 index 0000000..45a1e55 --- /dev/null +++ b/lib/themes/metro/lightgray/jtable.css @@ -0,0 +1,495 @@ +/* jTable metro style theme - Light gray + * Created by Halil İbrahim Kalkan + * http://www.jtable.org + */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + src: local('Open Sans Light'), local('OpenSans-Light'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/DXI1ORHCpsQm3Vp6mXoaTRa1RVmPjeKy21_GQJaLlJI.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 300; + src: local('Open Sans Light Italic'), local('OpenSansLight-Italic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxrsuoFAk0leveMLeqYtnfAY.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans'), local('OpenSans'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/u-WUoqrET9fUeobQW7jkRT8E0i7KZn-EPnyo3HZu7kw.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans Italic'), local('OpenSans-Italic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/xjAJXh38I15wypJXxuGMBtIh4imgI8P11RFo6YPCPC0.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/MTP_ySUJH_bn48VBG8sNSha1RVmPjeKy21_GQJaLlJI.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 600; + src: local('Open Sans Semibold Italic'), local('OpenSans-SemiboldItalic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxmWeb5PoA5ztb49yLyUzH1A.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: local('Open Sans Bold'), local('OpenSans-Bold'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/k3k702ZOKiLJc3WVjuplzBa1RVmPjeKy21_GQJaLlJI.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxoUt79146ZFaIJxILcpzmhI.woff) format('woff'); +} +div.jtable-main-container { + position: relative; +} +div.jtable-main-container div.jtable-title { + position: relative; + text-align: left; +} +div.jtable-main-container div.jtable-title .jtable-close-button { + right: 0px; + top: 0px; + bottom: 0px; + position: absolute; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar { + bottom: 0px; + right: 0px; + position: absolute; + display: inline-block; + margin-right: 5px; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item { + position: relative; + display: inline-block; + margin: 0px 0px 0px 5px; + cursor: pointer; + font-size: 0.9em; + padding: 2px; + vertical-align: bottom; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-icon { + display: inline-block; + margin: 2px; + vertical-align: middle; + width: 16px; + height: 16px; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-text { + display: inline-block; + margin: 2px; + vertical-align: middle; +} +div.jtable-main-container div.jtable-title .jtable-close-button + div.jtable-toolbar { + margin-right: 30px; +} +div.jtable-main-container table.jtable { + width: 100%; +} +div.jtable-main-container table.jtable thead th { + vertical-align: middle; + text-align: left; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container { + position: relative; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text { + display: inline-block; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler { + position: absolute; + height: 24px; + width: 8px; + right: -8px; + top: -2px; + z-index: 2; + cursor: col-resize; +} +div.jtable-main-container table.jtable thead th.jtable-command-column-header { + text-align: center; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-selecting { + text-align: center; + width: 1%; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-selecting input { + cursor: pointer; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sortable { + cursor: pointer; +} +div.jtable-main-container table.jtable tbody tr > td .jtable-command-button { + margin: 0px; + padding: 0px; + cursor: pointer; + border: none; + display: inline; +} +div.jtable-main-container table.jtable tbody tr > td .jtable-command-button span { + display: none; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-command-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column input { + cursor: pointer; +} +div.jtable-main-container table.jtable tbody tr.jtable-no-data-row { + text-align: center; +} +div.jtable-main-container > div.jtable-bottom-panel { + position: relative; + min-height: 24px; + text-align: left; +} +div.jtable-main-container > div.jtable-bottom-panel div.jtable-right-area { + right: 0px; + top: 0px; + bottom: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + display: inline-block; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + padding: 2px 5px; + display: inline-block; + cursor: pointer; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page input[type=text] { + width: 22px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + vertical-align: middle; +} +div.jtable-main-container div.jtable-column-resize-bar { + opacity: 0.5; + filter: alpha(opacity=50); + position: absolute; + display: none; + width: 1px; + background-color: #000; +} +div.jtable-main-container div.jtable-column-selection-container { + position: absolute; + display: none; + border: 1px solid #C8C8C8; + background: #fff; + color: #000; + z-index: 101; + padding: 5px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list { + margin: 0px; + padding: 0px; + list-style: none; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li { + margin: 0px; + padding: 2px 0px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span { + position: relative; + top: -1px; + margin-left: 4px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"] { + cursor: pointer; +} +form.jtable-dialog-form div.jtable-input-field-container { + padding: 2px 0px 3px 0px; + border-bottom: 1px solid #ddd; +} +form.jtable-dialog-form div.jtable-input-field-container:last-child { + border: none; +} +form.jtable-dialog-form div.jtable-input-label { + padding: 2px 3px; + font-size: 1.1em; + color: #666; +} +form.jtable-dialog-form div.jtable-input { + padding: 2px; +} +form.jtable-dialog-form div.jtable-date-input { + /* No additional style */ + +} +form.jtable-dialog-form div.jtable-text-input { + /* No additional style */ + +} +form.jtable-dialog-form span.jtable-option-text-clickable { + position: relative; + top: -2px; +} +form.jtable-dialog-form div.jtable-textarea-input textarea { + width: 300px; + min-height: 60px; +} +form.jtable-dialog-form div.jtable-checkbox-input span, +form.jtable-dialog-form div.jtable-radio-input span { + padding-left: 4px; +} +form.jtable-dialog-form div.jtable-radio-input input, +form.jtable-dialog-form div.jtable-checkbox-input input, +form.jtable-dialog-form span.jtable-option-text-clickable { + cursor: pointer; +} +div.jtable-busy-panel-background { + opacity: 0.1; + filter: alpha(opacity=50); + z-index: 998; + position: absolute; + background-color: #000; +} +div.jtable-busy-panel-background.jtable-busy-panel-background-invisible { + background-color: transparent; +} +div.jtable-busy-message { + cursor: wait; + z-index: 999; + position: absolute; + margin: 5px; +} +div.jtable-contextmenu-overlay { + position: fixed; + left: 0px; + top: 0px; + width: 100%; + height: 100%; + z-index: 100; +} +div.jtable-main-container { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 14px; + background: #fff; + line-height: 1.3; +} +div.jtable-main-container > div.jtable-title { + background-color: #4e4e4e; + padding-left: 10px; +} +div.jtable-main-container > div.jtable-title div.jtable-title-text { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 19px; + line-height: 34px; + color: #fff; +} +div.jtable-main-container > div.jtable-title .jtable-close-button { + right: 8px; + top: 8px; + bottom: 8px; + position: absolute; + opacity: 0.5; + filter: alpha(opacity=50); + background: url('../../metro/close.png') no-repeat; + width: 16px; + height: 16px; +} +div.jtable-main-container > div.jtable-title .jtable-close-button:hover { + opacity: 1; + filter: alpha(opacity=50); +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar { + bottom: 0px; + right: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item { + background-color: #585858; + color: white; +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon { + background-image: url('../../metro/add.png'); +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover { + background-color: #5f5f5f; + padding-bottom: 6px; +} +div.jtable-main-container > table.jtable { + border: 1px solid #707070; + border-collapse: collapse; + border-spacing: 0; +} +div.jtable-main-container > table.jtable > thead { + background-color: #707070; +} +div.jtable-main-container > table.jtable > thead th { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 15px; + color: #fff; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container { + height: 24px; + margin-left: 4px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler { + height: 28px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text { + margin-top: 2px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sortable div.jtable-column-header-container { + background: url('../../metro/column-sortable.png') no-repeat right; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sorted-asc div.jtable-column-header-container { + background: url('../../metro/column-asc.png') no-repeat right; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sorted-desc div.jtable-column-header-container { + background: url('../../metro/column-desc.png') no-repeat right; +} +div.jtable-main-container > table.jtable > tbody > tr { + background-color: #fff; +} +div.jtable-main-container > table.jtable > tbody > tr > td { + border: 1px solid #ddd; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td { + padding: 4px; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-edit-command-button { + background: url('../../metro/edit.png') no-repeat; + width: 16px; + height: 16px; + opacity: 0.4; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-edit-command-button:hover { + opacity: 0.8; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-delete-command-button { + background: url('../../metro/delete.png') no-repeat; + width: 16px; + height: 16px; + opacity: 0.4; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-delete-command-button:hover { + opacity: 0.8; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-even { + background-color: #f9f9f9; +} +div.jtable-main-container > table.jtable > tbody > tr:hover { + background: #e8eaef; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-selected { + color: #fff; + background-color: #929292; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-created { + background-color: #a3a3a3; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-updated { + background-color: #a3a3a3; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-deleting { + background-color: #e51400; + color: #fff; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-child-row > td { + padding: 2px; + background-color: #fff; +} +div.jtable-main-container > div.jtable-bottom-panel { + background-color: #5f5f5f; + color: #fff; + min-height: 22.900000000000002px; + font-size: 13px; + border: 1px solid #707070; + border-top: none; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + margin: 1px 0px 0px 0px; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + background-color: #707070; + margin: 1px; + padding: 2px 5px; + color: #fff; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover { + background-color: #929292; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + opacity: 0.75; + filter: alpha(opacity=50); + color: #ccc; + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover { + background-color: #707070; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + display: inline-block; + padding: 4px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + display: inline-block; + padding: 2px 0px 2px 0px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + display: inline-block; + padding: 2px 0px 2px 0px; +} +form.jtable-dialog-form { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 400; + font-size: 14px; +} +div.jtable-busy-message { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 16px; + border: 1px solid #fff; + padding: 5px 5px 5px 58px; + color: #fff; + background: url('../../metro/lightgray/loading.gif') no-repeat; + background-color: #4e4e4e; + background-position: 8px; +} diff --git a/lib/themes/metro/lightgray/jtable.less b/lib/themes/metro/lightgray/jtable.less new file mode 100644 index 0000000..3a0d194 --- /dev/null +++ b/lib/themes/metro/lightgray/jtable.less @@ -0,0 +1,11 @@ +/* jTable metro style theme - Light gray + * Created by Halil İbrahim Kalkan + * http://www.jtable.org + */ + +@import "../jtable_metro_base.less"; + +@theme-folder:'lightgray'; +@main-theme-color: #707070; + +.jtable_metro_base(@theme-folder, @main-theme-color); \ No newline at end of file diff --git a/lib/themes/metro/lightgray/jtable.min.css b/lib/themes/metro/lightgray/jtable.min.css new file mode 100644 index 0000000..52a2661 --- /dev/null +++ b/lib/themes/metro/lightgray/jtable.min.css @@ -0,0 +1 @@ +@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('Open Sans Light'),local('OpenSans-Light'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/DXI1ORHCpsQm3Vp6mXoaTRa1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300;src:local('Open Sans Light Italic'),local('OpenSansLight-Italic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxrsuoFAk0leveMLeqYtnfAY.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans'),local('OpenSans'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/u-WUoqrET9fUeobQW7jkRT8E0i7KZn-EPnyo3HZu7kw.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/xjAJXh38I15wypJXxuGMBtIh4imgI8P11RFo6YPCPC0.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;src:local('Open Sans Semibold'),local('OpenSans-Semibold'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/MTP_ySUJH_bn48VBG8sNSha1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:600;src:local('Open Sans Semibold Italic'),local('OpenSans-SemiboldItalic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxmWeb5PoA5ztb49yLyUzH1A.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/k3k702ZOKiLJc3WVjuplzBa1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local('Open Sans Bold Italic'),local('OpenSans-BoldItalic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxoUt79146ZFaIJxILcpzmhI.woff) format('woff')}div.jtable-main-container{position:relative}div.jtable-main-container div.jtable-title{position:relative;text-align:left}div.jtable-main-container div.jtable-title .jtable-close-button{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute;display:inline-block;margin-right:5px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{position:relative;display:inline-block;margin:0 0 0 5px;cursor:pointer;font-size:.9em;padding:2px;vertical-align:bottom}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-icon{display:inline-block;margin:2px;vertical-align:middle;width:16px;height:16px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-text{display:inline-block;margin:2px;vertical-align:middle}div.jtable-main-container div.jtable-title .jtable-close-button+div.jtable-toolbar{margin-right:30px}div.jtable-main-container table.jtable{width:100%}div.jtable-main-container table.jtable thead th{vertical-align:middle;text-align:left}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container{position:relative}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{display:inline-block}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{position:absolute;height:24px;width:8px;right:-8px;top:-2px;z-index:2;cursor:col-resize}div.jtable-main-container table.jtable thead th.jtable-command-column-header{text-align:center}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting{text-align:center;width:1%}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting input{cursor:pointer}div.jtable-main-container table.jtable thead th.jtable-column-header-sortable{cursor:pointer}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button{margin:0;padding:0;cursor:pointer;border:none;display:inline}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button span{display:none}div.jtable-main-container table.jtable tbody tr>td.jtable-command-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column input{cursor:pointer}div.jtable-main-container table.jtable tbody tr.jtable-no-data-row{text-align:center}div.jtable-main-container>div.jtable-bottom-panel{position:relative;min-height:24px;text-align:left}div.jtable-main-container>div.jtable-bottom-panel div.jtable-right-area{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{display:inline-block}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{padding:2px 5px;display:inline-block;cursor:pointer}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{cursor:default}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page input[type=text]{width:22px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{vertical-align:middle}div.jtable-main-container div.jtable-column-resize-bar{opacity:.5;filter:alpha(opacity=50);position:absolute;display:none;width:1px;background-color:#000}div.jtable-main-container div.jtable-column-selection-container{position:absolute;display:none;border:1px solid #c8c8c8;background:#fff;color:#000;z-index:101;padding:5px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list{margin:0;padding:0;list-style:none}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li{margin:0;padding:2px 0}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span{position:relative;top:-1px;margin-left:4px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"]{cursor:pointer}form.jtable-dialog-form div.jtable-input-field-container{padding:2px 0 3px 0;border-bottom:1px solid #ddd}form.jtable-dialog-form div.jtable-input-field-container:last-child{border:none}form.jtable-dialog-form div.jtable-input-label{padding:2px 3px;font-size:1.1em;color:#666}form.jtable-dialog-form div.jtable-input{padding:2px}form.jtable-dialog-form div.jtable-date-input{}form.jtable-dialog-form div.jtable-text-input{}form.jtable-dialog-form span.jtable-option-text-clickable{position:relative;top:-2px}form.jtable-dialog-form div.jtable-textarea-input textarea{width:300px;min-height:60px}form.jtable-dialog-form div.jtable-checkbox-input span,form.jtable-dialog-form div.jtable-radio-input span{padding-left:4px}form.jtable-dialog-form div.jtable-radio-input input,form.jtable-dialog-form div.jtable-checkbox-input input,form.jtable-dialog-form span.jtable-option-text-clickable{cursor:pointer}div.jtable-busy-panel-background{opacity:.1;filter:alpha(opacity=50);z-index:998;position:absolute;background-color:#000}div.jtable-busy-panel-background.jtable-busy-panel-background-invisible{background-color:transparent}div.jtable-busy-message{cursor:wait;z-index:999;position:absolute;margin:5px}div.jtable-contextmenu-overlay{position:fixed;left:0;top:0;width:100%;height:100%;z-index:100}div.jtable-main-container{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:14px;background:#fff;line-height:1.3}div.jtable-main-container>div.jtable-title{background-color:#4e4e4e;padding-left:10px}div.jtable-main-container>div.jtable-title div.jtable-title-text{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:19px;line-height:34px;color:#fff}div.jtable-main-container>div.jtable-title .jtable-close-button{right:8px;top:8px;bottom:8px;position:absolute;opacity:.5;filter:alpha(opacity=50);background:url('../../metro/close.png') no-repeat;width:16px;height:16px}div.jtable-main-container>div.jtable-title .jtable-close-button:hover{opacity:1;filter:alpha(opacity=50)}div.jtable-main-container>div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{background-color:#585858;color:#fff}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon{background-image:url('../../metro/add.png')}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover{background-color:#5f5f5f;padding-bottom:6px}div.jtable-main-container>table.jtable{border:1px solid #707070;border-collapse:collapse;border-spacing:0}div.jtable-main-container>table.jtable>thead{background-color:#707070}div.jtable-main-container>table.jtable>thead th{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:15px;color:#fff}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container{height:24px;margin-left:4px}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{height:28px}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{margin-top:2px}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sortable div.jtable-column-header-container{background:url('../../metro/column-sortable.png') no-repeat right}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sorted-asc div.jtable-column-header-container{background:url('../../metro/column-asc.png') no-repeat right}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sorted-desc div.jtable-column-header-container{background:url('../../metro/column-desc.png') no-repeat right}div.jtable-main-container>table.jtable>tbody>tr{background-color:#fff}div.jtable-main-container>table.jtable>tbody>tr>td{border:1px solid #ddd}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td{padding:4px}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-edit-command-button{background:url('../../metro/edit.png') no-repeat;width:16px;height:16px;opacity:.4}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-edit-command-button:hover{opacity:.8}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-delete-command-button{background:url('../../metro/delete.png') no-repeat;width:16px;height:16px;opacity:.4}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-delete-command-button:hover{opacity:.8}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-even{background-color:#f9f9f9}div.jtable-main-container>table.jtable>tbody>tr:hover{background:#e8eaef}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-selected{color:#fff;background-color:#929292}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-created{background-color:#a3a3a3}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-updated{background-color:#a3a3a3}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-deleting{background-color:#e51400;color:#fff}div.jtable-main-container>table.jtable>tbody>tr.jtable-child-row>td{padding:2px;background-color:#fff}div.jtable-main-container>div.jtable-bottom-panel{background-color:#5f5f5f;color:#fff;min-height:22.900000000000002px;font-size:13px;border:1px solid #707070;border-top:none}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{margin:1px 0 0 0}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{background-color:#707070;margin:1px;padding:2px 5px;color:#fff}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover{background-color:#929292}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{opacity:.75;filter:alpha(opacity=50);color:#ccc;cursor:default}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover{background-color:#707070}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{display:inline-block;padding:4px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{display:inline-block;padding:2px 0 2px 0}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{display:inline-block;padding:2px 0 2px 0}form.jtable-dialog-form{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:400;font-size:14px}div.jtable-busy-message{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:16px;border:1px solid #fff;padding:5px 5px 5px 58px;color:#fff;background:url('../../metro/lightgray/loading.gif') no-repeat;background-color:#4e4e4e;background-position:8px} diff --git a/lib/themes/metro/lightgray/loading.gif b/lib/themes/metro/lightgray/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..e56f8556d584325f53ea8fd7e4a8cae4b315fc01 GIT binary patch literal 404 zcmZ?wbhEHb)Mnsj_{hNE=jZqT|Nq5{7XwMfe^Smxsfi`2DGKG8B^e5dS&0=n`H3ld znR#jX42nNl7`PZ17!?0=`?-b$J39ur8tEA@GXjNlfS3VfAOn+8OCQJSX*X{)e?H13 zeJ||u>DC8kZ4r?R)6{G4&Dyt|CtcU`diyE8Uq?3owA-;j!N^AxXd>8TMr31bj{uEP z;7?56IIHFOnwrlu67PNQNtrQY{;7pt&RzvNJJ_?&Ze06Pg>MsMs)$s6#HZT6Q+}5p z&C*E81%TGdiiN4(8Lw%U?wsno9F=b>WnG7*rn?>{@R)9v%+M)yIi1FiTcrX vD}VECG@HG3ZvWp+k0+)$$G&~0?NxTdRajt8g3>tw(O*m=3=Gzwa03GXhLxD2 literal 0 HcmV?d00001 diff --git a/lib/themes/metro/pink/jtable.css b/lib/themes/metro/pink/jtable.css new file mode 100644 index 0000000..d980c03 --- /dev/null +++ b/lib/themes/metro/pink/jtable.css @@ -0,0 +1,495 @@ +/* jTable metro style theme - Pink + * Created by Halil İbrahim Kalkan + * http://www.jtable.org + */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + src: local('Open Sans Light'), local('OpenSans-Light'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/DXI1ORHCpsQm3Vp6mXoaTRa1RVmPjeKy21_GQJaLlJI.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 300; + src: local('Open Sans Light Italic'), local('OpenSansLight-Italic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxrsuoFAk0leveMLeqYtnfAY.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans'), local('OpenSans'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/u-WUoqrET9fUeobQW7jkRT8E0i7KZn-EPnyo3HZu7kw.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans Italic'), local('OpenSans-Italic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/xjAJXh38I15wypJXxuGMBtIh4imgI8P11RFo6YPCPC0.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/MTP_ySUJH_bn48VBG8sNSha1RVmPjeKy21_GQJaLlJI.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 600; + src: local('Open Sans Semibold Italic'), local('OpenSans-SemiboldItalic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxmWeb5PoA5ztb49yLyUzH1A.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: local('Open Sans Bold'), local('OpenSans-Bold'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/k3k702ZOKiLJc3WVjuplzBa1RVmPjeKy21_GQJaLlJI.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxoUt79146ZFaIJxILcpzmhI.woff) format('woff'); +} +div.jtable-main-container { + position: relative; +} +div.jtable-main-container div.jtable-title { + position: relative; + text-align: left; +} +div.jtable-main-container div.jtable-title .jtable-close-button { + right: 0px; + top: 0px; + bottom: 0px; + position: absolute; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar { + bottom: 0px; + right: 0px; + position: absolute; + display: inline-block; + margin-right: 5px; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item { + position: relative; + display: inline-block; + margin: 0px 0px 0px 5px; + cursor: pointer; + font-size: 0.9em; + padding: 2px; + vertical-align: bottom; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-icon { + display: inline-block; + margin: 2px; + vertical-align: middle; + width: 16px; + height: 16px; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-text { + display: inline-block; + margin: 2px; + vertical-align: middle; +} +div.jtable-main-container div.jtable-title .jtable-close-button + div.jtable-toolbar { + margin-right: 30px; +} +div.jtable-main-container table.jtable { + width: 100%; +} +div.jtable-main-container table.jtable thead th { + vertical-align: middle; + text-align: left; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container { + position: relative; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text { + display: inline-block; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler { + position: absolute; + height: 24px; + width: 8px; + right: -8px; + top: -2px; + z-index: 2; + cursor: col-resize; +} +div.jtable-main-container table.jtable thead th.jtable-command-column-header { + text-align: center; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-selecting { + text-align: center; + width: 1%; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-selecting input { + cursor: pointer; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sortable { + cursor: pointer; +} +div.jtable-main-container table.jtable tbody tr > td .jtable-command-button { + margin: 0px; + padding: 0px; + cursor: pointer; + border: none; + display: inline; +} +div.jtable-main-container table.jtable tbody tr > td .jtable-command-button span { + display: none; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-command-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column input { + cursor: pointer; +} +div.jtable-main-container table.jtable tbody tr.jtable-no-data-row { + text-align: center; +} +div.jtable-main-container > div.jtable-bottom-panel { + position: relative; + min-height: 24px; + text-align: left; +} +div.jtable-main-container > div.jtable-bottom-panel div.jtable-right-area { + right: 0px; + top: 0px; + bottom: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + display: inline-block; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + padding: 2px 5px; + display: inline-block; + cursor: pointer; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page input[type=text] { + width: 22px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + vertical-align: middle; +} +div.jtable-main-container div.jtable-column-resize-bar { + opacity: 0.5; + filter: alpha(opacity=50); + position: absolute; + display: none; + width: 1px; + background-color: #000; +} +div.jtable-main-container div.jtable-column-selection-container { + position: absolute; + display: none; + border: 1px solid #C8C8C8; + background: #fff; + color: #000; + z-index: 101; + padding: 5px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list { + margin: 0px; + padding: 0px; + list-style: none; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li { + margin: 0px; + padding: 2px 0px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span { + position: relative; + top: -1px; + margin-left: 4px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"] { + cursor: pointer; +} +form.jtable-dialog-form div.jtable-input-field-container { + padding: 2px 0px 3px 0px; + border-bottom: 1px solid #ddd; +} +form.jtable-dialog-form div.jtable-input-field-container:last-child { + border: none; +} +form.jtable-dialog-form div.jtable-input-label { + padding: 2px 3px; + font-size: 1.1em; + color: #666; +} +form.jtable-dialog-form div.jtable-input { + padding: 2px; +} +form.jtable-dialog-form div.jtable-date-input { + /* No additional style */ + +} +form.jtable-dialog-form div.jtable-text-input { + /* No additional style */ + +} +form.jtable-dialog-form span.jtable-option-text-clickable { + position: relative; + top: -2px; +} +form.jtable-dialog-form div.jtable-textarea-input textarea { + width: 300px; + min-height: 60px; +} +form.jtable-dialog-form div.jtable-checkbox-input span, +form.jtable-dialog-form div.jtable-radio-input span { + padding-left: 4px; +} +form.jtable-dialog-form div.jtable-radio-input input, +form.jtable-dialog-form div.jtable-checkbox-input input, +form.jtable-dialog-form span.jtable-option-text-clickable { + cursor: pointer; +} +div.jtable-busy-panel-background { + opacity: 0.1; + filter: alpha(opacity=50); + z-index: 998; + position: absolute; + background-color: #000; +} +div.jtable-busy-panel-background.jtable-busy-panel-background-invisible { + background-color: transparent; +} +div.jtable-busy-message { + cursor: wait; + z-index: 999; + position: absolute; + margin: 5px; +} +div.jtable-contextmenu-overlay { + position: fixed; + left: 0px; + top: 0px; + width: 100%; + height: 100%; + z-index: 100; +} +div.jtable-main-container { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 14px; + background: #fff; + line-height: 1.3; +} +div.jtable-main-container > div.jtable-title { + background-color: #7d0085; + padding-left: 10px; +} +div.jtable-main-container > div.jtable-title div.jtable-title-text { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 19px; + line-height: 34px; + color: #fff; +} +div.jtable-main-container > div.jtable-title .jtable-close-button { + right: 8px; + top: 8px; + bottom: 8px; + position: absolute; + opacity: 0.5; + filter: alpha(opacity=50); + background: url('../../metro/close.png') no-repeat; + width: 16px; + height: 16px; +} +div.jtable-main-container > div.jtable-title .jtable-close-button:hover { + opacity: 1; + filter: alpha(opacity=50); +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar { + bottom: 0px; + right: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item { + background-color: #87008f; + color: white; +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon { + background-image: url('../../metro/add.png'); +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover { + background-color: #8e0096; + padding-bottom: 6px; +} +div.jtable-main-container > table.jtable { + border: 1px solid #9f00a7; + border-collapse: collapse; + border-spacing: 0; +} +div.jtable-main-container > table.jtable > thead { + background-color: #9f00a7; +} +div.jtable-main-container > table.jtable > thead th { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 15px; + color: #fff; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container { + height: 24px; + margin-left: 4px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler { + height: 28px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text { + margin-top: 2px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sortable div.jtable-column-header-container { + background: url('../../metro/column-sortable.png') no-repeat right; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sorted-asc div.jtable-column-header-container { + background: url('../../metro/column-asc.png') no-repeat right; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sorted-desc div.jtable-column-header-container { + background: url('../../metro/column-desc.png') no-repeat right; +} +div.jtable-main-container > table.jtable > tbody > tr { + background-color: #fff; +} +div.jtable-main-container > table.jtable > tbody > tr > td { + border: 1px solid #ddd; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td { + padding: 4px; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-edit-command-button { + background: url('../../metro/edit.png') no-repeat; + width: 16px; + height: 16px; + opacity: 0.4; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-edit-command-button:hover { + opacity: 0.8; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-delete-command-button { + background: url('../../metro/delete.png') no-repeat; + width: 16px; + height: 16px; + opacity: 0.4; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-delete-command-button:hover { + opacity: 0.8; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-even { + background-color: #f9f9f9; +} +div.jtable-main-container > table.jtable > tbody > tr:hover { + background: #e8eaef; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-selected { + color: #fff; + background-color: #c122c9; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-created { + background-color: #d233da; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-updated { + background-color: #d233da; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-deleting { + background-color: #e51400; + color: #fff; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-child-row > td { + padding: 2px; + background-color: #fff; +} +div.jtable-main-container > div.jtable-bottom-panel { + background-color: #8e0096; + color: #fff; + min-height: 22.900000000000002px; + font-size: 13px; + border: 1px solid #9f00a7; + border-top: none; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + margin: 1px 0px 0px 0px; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + background-color: #9f00a7; + margin: 1px; + padding: 2px 5px; + color: #fff; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover { + background-color: #c122c9; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + opacity: 0.75; + filter: alpha(opacity=50); + color: #ccc; + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover { + background-color: #9f00a7; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + display: inline-block; + padding: 4px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + display: inline-block; + padding: 2px 0px 2px 0px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + display: inline-block; + padding: 2px 0px 2px 0px; +} +form.jtable-dialog-form { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 400; + font-size: 14px; +} +div.jtable-busy-message { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 16px; + border: 1px solid #fff; + padding: 5px 5px 5px 58px; + color: #fff; + background: url('../../metro/pink/loading.gif') no-repeat; + background-color: #7d0085; + background-position: 8px; +} diff --git a/lib/themes/metro/pink/jtable.less b/lib/themes/metro/pink/jtable.less new file mode 100644 index 0000000..4df2c43 --- /dev/null +++ b/lib/themes/metro/pink/jtable.less @@ -0,0 +1,11 @@ +/* jTable metro style theme - Pink + * Created by Halil İbrahim Kalkan + * http://www.jtable.org + */ + +@import "../jtable_metro_base.less"; + +@theme-folder:'pink'; +@main-theme-color: #9f00a7; + +.jtable_metro_base(@theme-folder, @main-theme-color); \ No newline at end of file diff --git a/lib/themes/metro/pink/jtable.min.css b/lib/themes/metro/pink/jtable.min.css new file mode 100644 index 0000000..041fb0a --- /dev/null +++ b/lib/themes/metro/pink/jtable.min.css @@ -0,0 +1 @@ +@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('Open Sans Light'),local('OpenSans-Light'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/DXI1ORHCpsQm3Vp6mXoaTRa1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300;src:local('Open Sans Light Italic'),local('OpenSansLight-Italic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxrsuoFAk0leveMLeqYtnfAY.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans'),local('OpenSans'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/u-WUoqrET9fUeobQW7jkRT8E0i7KZn-EPnyo3HZu7kw.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/xjAJXh38I15wypJXxuGMBtIh4imgI8P11RFo6YPCPC0.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;src:local('Open Sans Semibold'),local('OpenSans-Semibold'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/MTP_ySUJH_bn48VBG8sNSha1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:600;src:local('Open Sans Semibold Italic'),local('OpenSans-SemiboldItalic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxmWeb5PoA5ztb49yLyUzH1A.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/k3k702ZOKiLJc3WVjuplzBa1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local('Open Sans Bold Italic'),local('OpenSans-BoldItalic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxoUt79146ZFaIJxILcpzmhI.woff) format('woff')}div.jtable-main-container{position:relative}div.jtable-main-container div.jtable-title{position:relative;text-align:left}div.jtable-main-container div.jtable-title .jtable-close-button{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute;display:inline-block;margin-right:5px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{position:relative;display:inline-block;margin:0 0 0 5px;cursor:pointer;font-size:.9em;padding:2px;vertical-align:bottom}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-icon{display:inline-block;margin:2px;vertical-align:middle;width:16px;height:16px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-text{display:inline-block;margin:2px;vertical-align:middle}div.jtable-main-container div.jtable-title .jtable-close-button+div.jtable-toolbar{margin-right:30px}div.jtable-main-container table.jtable{width:100%}div.jtable-main-container table.jtable thead th{vertical-align:middle;text-align:left}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container{position:relative}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{display:inline-block}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{position:absolute;height:24px;width:8px;right:-8px;top:-2px;z-index:2;cursor:col-resize}div.jtable-main-container table.jtable thead th.jtable-command-column-header{text-align:center}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting{text-align:center;width:1%}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting input{cursor:pointer}div.jtable-main-container table.jtable thead th.jtable-column-header-sortable{cursor:pointer}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button{margin:0;padding:0;cursor:pointer;border:none;display:inline}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button span{display:none}div.jtable-main-container table.jtable tbody tr>td.jtable-command-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column input{cursor:pointer}div.jtable-main-container table.jtable tbody tr.jtable-no-data-row{text-align:center}div.jtable-main-container>div.jtable-bottom-panel{position:relative;min-height:24px;text-align:left}div.jtable-main-container>div.jtable-bottom-panel div.jtable-right-area{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{display:inline-block}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{padding:2px 5px;display:inline-block;cursor:pointer}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{cursor:default}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page input[type=text]{width:22px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{vertical-align:middle}div.jtable-main-container div.jtable-column-resize-bar{opacity:.5;filter:alpha(opacity=50);position:absolute;display:none;width:1px;background-color:#000}div.jtable-main-container div.jtable-column-selection-container{position:absolute;display:none;border:1px solid #c8c8c8;background:#fff;color:#000;z-index:101;padding:5px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list{margin:0;padding:0;list-style:none}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li{margin:0;padding:2px 0}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span{position:relative;top:-1px;margin-left:4px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"]{cursor:pointer}form.jtable-dialog-form div.jtable-input-field-container{padding:2px 0 3px 0;border-bottom:1px solid #ddd}form.jtable-dialog-form div.jtable-input-field-container:last-child{border:none}form.jtable-dialog-form div.jtable-input-label{padding:2px 3px;font-size:1.1em;color:#666}form.jtable-dialog-form div.jtable-input{padding:2px}form.jtable-dialog-form div.jtable-date-input{}form.jtable-dialog-form div.jtable-text-input{}form.jtable-dialog-form span.jtable-option-text-clickable{position:relative;top:-2px}form.jtable-dialog-form div.jtable-textarea-input textarea{width:300px;min-height:60px}form.jtable-dialog-form div.jtable-checkbox-input span,form.jtable-dialog-form div.jtable-radio-input span{padding-left:4px}form.jtable-dialog-form div.jtable-radio-input input,form.jtable-dialog-form div.jtable-checkbox-input input,form.jtable-dialog-form span.jtable-option-text-clickable{cursor:pointer}div.jtable-busy-panel-background{opacity:.1;filter:alpha(opacity=50);z-index:998;position:absolute;background-color:#000}div.jtable-busy-panel-background.jtable-busy-panel-background-invisible{background-color:transparent}div.jtable-busy-message{cursor:wait;z-index:999;position:absolute;margin:5px}div.jtable-contextmenu-overlay{position:fixed;left:0;top:0;width:100%;height:100%;z-index:100}div.jtable-main-container{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:14px;background:#fff;line-height:1.3}div.jtable-main-container>div.jtable-title{background-color:#7d0085;padding-left:10px}div.jtable-main-container>div.jtable-title div.jtable-title-text{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:19px;line-height:34px;color:#fff}div.jtable-main-container>div.jtable-title .jtable-close-button{right:8px;top:8px;bottom:8px;position:absolute;opacity:.5;filter:alpha(opacity=50);background:url('../../metro/close.png') no-repeat;width:16px;height:16px}div.jtable-main-container>div.jtable-title .jtable-close-button:hover{opacity:1;filter:alpha(opacity=50)}div.jtable-main-container>div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{background-color:#87008f;color:#fff}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon{background-image:url('../../metro/add.png')}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover{background-color:#8e0096;padding-bottom:6px}div.jtable-main-container>table.jtable{border:1px solid #9f00a7;border-collapse:collapse;border-spacing:0}div.jtable-main-container>table.jtable>thead{background-color:#9f00a7}div.jtable-main-container>table.jtable>thead th{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:15px;color:#fff}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container{height:24px;margin-left:4px}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{height:28px}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{margin-top:2px}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sortable div.jtable-column-header-container{background:url('../../metro/column-sortable.png') no-repeat right}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sorted-asc div.jtable-column-header-container{background:url('../../metro/column-asc.png') no-repeat right}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sorted-desc div.jtable-column-header-container{background:url('../../metro/column-desc.png') no-repeat right}div.jtable-main-container>table.jtable>tbody>tr{background-color:#fff}div.jtable-main-container>table.jtable>tbody>tr>td{border:1px solid #ddd}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td{padding:4px}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-edit-command-button{background:url('../../metro/edit.png') no-repeat;width:16px;height:16px;opacity:.4}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-edit-command-button:hover{opacity:.8}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-delete-command-button{background:url('../../metro/delete.png') no-repeat;width:16px;height:16px;opacity:.4}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-delete-command-button:hover{opacity:.8}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-even{background-color:#f9f9f9}div.jtable-main-container>table.jtable>tbody>tr:hover{background:#e8eaef}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-selected{color:#fff;background-color:#c122c9}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-created{background-color:#d233da}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-updated{background-color:#d233da}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-deleting{background-color:#e51400;color:#fff}div.jtable-main-container>table.jtable>tbody>tr.jtable-child-row>td{padding:2px;background-color:#fff}div.jtable-main-container>div.jtable-bottom-panel{background-color:#8e0096;color:#fff;min-height:22.900000000000002px;font-size:13px;border:1px solid #9f00a7;border-top:none}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{margin:1px 0 0 0}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{background-color:#9f00a7;margin:1px;padding:2px 5px;color:#fff}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover{background-color:#c122c9}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{opacity:.75;filter:alpha(opacity=50);color:#ccc;cursor:default}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover{background-color:#9f00a7}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{display:inline-block;padding:4px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{display:inline-block;padding:2px 0 2px 0}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{display:inline-block;padding:2px 0 2px 0}form.jtable-dialog-form{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:400;font-size:14px}div.jtable-busy-message{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:16px;border:1px solid #fff;padding:5px 5px 5px 58px;color:#fff;background:url('../../metro/pink/loading.gif') no-repeat;background-color:#7d0085;background-position:8px} diff --git a/lib/themes/metro/pink/loading.gif b/lib/themes/metro/pink/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..bb362b55b2c67636fddc745f8e06c4d4a8029ed5 GIT binary patch literal 404 zcmZ?wbhEHb)Mnsj_{hLe%h3A&|Nq@J2Y{sFKPl&;)Wnk16ovB4k_?5!ti+0({KOQ! z%)GRG2F0H&3|tHh42u7`{aizWogD*Qjr0td8G%ANK+FI#kb%jlrH|wEw3|1YKOg0i zz8CiSbn64Nwus1uY3jB2X6;+fldkJ|z5SHluOpj(+U;1NVB{kTG!bkvBeF5JM}WpC z@Fym3oYiuCP0i;SiTA$uq|BHx|I|V+XRiXC9qid>H?DoD!ncVrRYWR3;!|zkDZk5) zX6Yma9bXSKkqN~_ki!gsCa#>76@4fF5kHsk_R5EqJxi`ESh0(58TX;rKFMaC&rhCv z`7>zNj5Vfb40_y8z5Fy2XyS@>FcX=PO>}^Ib;guk?9z1`f9*{5Sz$8YT`o|oME&Tx vmB0Bmn$6xixBu^^#}iYWW8Xg0_9{E!DlD)kLFt@;=r1M_1_o td .jtable-command-button { + margin: 0px; + padding: 0px; + cursor: pointer; + border: none; + display: inline; +} +div.jtable-main-container table.jtable tbody tr > td .jtable-command-button span { + display: none; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-command-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column input { + cursor: pointer; +} +div.jtable-main-container table.jtable tbody tr.jtable-no-data-row { + text-align: center; +} +div.jtable-main-container > div.jtable-bottom-panel { + position: relative; + min-height: 24px; + text-align: left; +} +div.jtable-main-container > div.jtable-bottom-panel div.jtable-right-area { + right: 0px; + top: 0px; + bottom: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + display: inline-block; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + padding: 2px 5px; + display: inline-block; + cursor: pointer; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page input[type=text] { + width: 22px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + vertical-align: middle; +} +div.jtable-main-container div.jtable-column-resize-bar { + opacity: 0.5; + filter: alpha(opacity=50); + position: absolute; + display: none; + width: 1px; + background-color: #000; +} +div.jtable-main-container div.jtable-column-selection-container { + position: absolute; + display: none; + border: 1px solid #C8C8C8; + background: #fff; + color: #000; + z-index: 101; + padding: 5px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list { + margin: 0px; + padding: 0px; + list-style: none; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li { + margin: 0px; + padding: 2px 0px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span { + position: relative; + top: -1px; + margin-left: 4px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"] { + cursor: pointer; +} +form.jtable-dialog-form div.jtable-input-field-container { + padding: 2px 0px 3px 0px; + border-bottom: 1px solid #ddd; +} +form.jtable-dialog-form div.jtable-input-field-container:last-child { + border: none; +} +form.jtable-dialog-form div.jtable-input-label { + padding: 2px 3px; + font-size: 1.1em; + color: #666; +} +form.jtable-dialog-form div.jtable-input { + padding: 2px; +} +form.jtable-dialog-form div.jtable-date-input { + /* No additional style */ + +} +form.jtable-dialog-form div.jtable-text-input { + /* No additional style */ + +} +form.jtable-dialog-form span.jtable-option-text-clickable { + position: relative; + top: -2px; +} +form.jtable-dialog-form div.jtable-textarea-input textarea { + width: 300px; + min-height: 60px; +} +form.jtable-dialog-form div.jtable-checkbox-input span, +form.jtable-dialog-form div.jtable-radio-input span { + padding-left: 4px; +} +form.jtable-dialog-form div.jtable-radio-input input, +form.jtable-dialog-form div.jtable-checkbox-input input, +form.jtable-dialog-form span.jtable-option-text-clickable { + cursor: pointer; +} +div.jtable-busy-panel-background { + opacity: 0.1; + filter: alpha(opacity=50); + z-index: 998; + position: absolute; + background-color: #000; +} +div.jtable-busy-panel-background.jtable-busy-panel-background-invisible { + background-color: transparent; +} +div.jtable-busy-message { + cursor: wait; + z-index: 999; + position: absolute; + margin: 5px; +} +div.jtable-contextmenu-overlay { + position: fixed; + left: 0px; + top: 0px; + width: 100%; + height: 100%; + z-index: 100; +} +div.jtable-main-container { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 14px; + background: #fff; + line-height: 1.3; +} +div.jtable-main-container > div.jtable-title { + background-color: #3e1a98; + padding-left: 10px; +} +div.jtable-main-container > div.jtable-title div.jtable-title-text { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 19px; + line-height: 34px; + color: #fff; +} +div.jtable-main-container > div.jtable-title .jtable-close-button { + right: 8px; + top: 8px; + bottom: 8px; + position: absolute; + opacity: 0.5; + filter: alpha(opacity=50); + background: url('../../metro/close.png') no-repeat; + width: 16px; + height: 16px; +} +div.jtable-main-container > div.jtable-title .jtable-close-button:hover { + opacity: 1; + filter: alpha(opacity=50); +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar { + bottom: 0px; + right: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item { + background-color: #4824a2; + color: white; +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon { + background-image: url('../../metro/add.png'); +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover { + background-color: #4f2ba9; + padding-bottom: 6px; +} +div.jtable-main-container > table.jtable { + border: 1px solid #603cba; + border-collapse: collapse; + border-spacing: 0; +} +div.jtable-main-container > table.jtable > thead { + background-color: #603cba; +} +div.jtable-main-container > table.jtable > thead th { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 15px; + color: #fff; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container { + height: 24px; + margin-left: 4px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler { + height: 28px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text { + margin-top: 2px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sortable div.jtable-column-header-container { + background: url('../../metro/column-sortable.png') no-repeat right; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sorted-asc div.jtable-column-header-container { + background: url('../../metro/column-asc.png') no-repeat right; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sorted-desc div.jtable-column-header-container { + background: url('../../metro/column-desc.png') no-repeat right; +} +div.jtable-main-container > table.jtable > tbody > tr { + background-color: #fff; +} +div.jtable-main-container > table.jtable > tbody > tr > td { + border: 1px solid #ddd; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td { + padding: 4px; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-edit-command-button { + background: url('../../metro/edit.png') no-repeat; + width: 16px; + height: 16px; + opacity: 0.4; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-edit-command-button:hover { + opacity: 0.8; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-delete-command-button { + background: url('../../metro/delete.png') no-repeat; + width: 16px; + height: 16px; + opacity: 0.4; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-delete-command-button:hover { + opacity: 0.8; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-even { + background-color: #f9f9f9; +} +div.jtable-main-container > table.jtable > tbody > tr:hover { + background: #e8eaef; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-selected { + color: #fff; + background-color: #825edc; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-created { + background-color: #936fed; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-updated { + background-color: #936fed; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-deleting { + background-color: #e51400; + color: #fff; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-child-row > td { + padding: 2px; + background-color: #fff; +} +div.jtable-main-container > div.jtable-bottom-panel { + background-color: #4f2ba9; + color: #fff; + min-height: 22.900000000000002px; + font-size: 13px; + border: 1px solid #603cba; + border-top: none; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + margin: 1px 0px 0px 0px; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + background-color: #603cba; + margin: 1px; + padding: 2px 5px; + color: #fff; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover { + background-color: #825edc; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + opacity: 0.75; + filter: alpha(opacity=50); + color: #ccc; + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover { + background-color: #603cba; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + display: inline-block; + padding: 4px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + display: inline-block; + padding: 2px 0px 2px 0px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + display: inline-block; + padding: 2px 0px 2px 0px; +} +form.jtable-dialog-form { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 400; + font-size: 14px; +} +div.jtable-busy-message { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 16px; + border: 1px solid #fff; + padding: 5px 5px 5px 58px; + color: #fff; + background: url('../../metro/purple/loading.gif') no-repeat; + background-color: #3e1a98; + background-position: 8px; +} diff --git a/lib/themes/metro/purple/jtable.less b/lib/themes/metro/purple/jtable.less new file mode 100644 index 0000000..145a04d --- /dev/null +++ b/lib/themes/metro/purple/jtable.less @@ -0,0 +1,11 @@ +/* jTable metro style theme - Purple + * Created by Halil İbrahim Kalkan + * http://www.jtable.org + */ + +@import "../jtable_metro_base.less"; + +@theme-folder:'purple'; +@main-theme-color: #603cba; + +.jtable_metro_base(@theme-folder, @main-theme-color); \ No newline at end of file diff --git a/lib/themes/metro/purple/jtable.min.css b/lib/themes/metro/purple/jtable.min.css new file mode 100644 index 0000000..d7b7d15 --- /dev/null +++ b/lib/themes/metro/purple/jtable.min.css @@ -0,0 +1 @@ +@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('Open Sans Light'),local('OpenSans-Light'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/DXI1ORHCpsQm3Vp6mXoaTRa1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300;src:local('Open Sans Light Italic'),local('OpenSansLight-Italic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxrsuoFAk0leveMLeqYtnfAY.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans'),local('OpenSans'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/u-WUoqrET9fUeobQW7jkRT8E0i7KZn-EPnyo3HZu7kw.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/xjAJXh38I15wypJXxuGMBtIh4imgI8P11RFo6YPCPC0.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;src:local('Open Sans Semibold'),local('OpenSans-Semibold'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/MTP_ySUJH_bn48VBG8sNSha1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:600;src:local('Open Sans Semibold Italic'),local('OpenSans-SemiboldItalic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxmWeb5PoA5ztb49yLyUzH1A.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/k3k702ZOKiLJc3WVjuplzBa1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local('Open Sans Bold Italic'),local('OpenSans-BoldItalic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxoUt79146ZFaIJxILcpzmhI.woff) format('woff')}div.jtable-main-container{position:relative}div.jtable-main-container div.jtable-title{position:relative;text-align:left}div.jtable-main-container div.jtable-title .jtable-close-button{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute;display:inline-block;margin-right:5px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{position:relative;display:inline-block;margin:0 0 0 5px;cursor:pointer;font-size:.9em;padding:2px;vertical-align:bottom}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-icon{display:inline-block;margin:2px;vertical-align:middle;width:16px;height:16px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-text{display:inline-block;margin:2px;vertical-align:middle}div.jtable-main-container div.jtable-title .jtable-close-button+div.jtable-toolbar{margin-right:30px}div.jtable-main-container table.jtable{width:100%}div.jtable-main-container table.jtable thead th{vertical-align:middle;text-align:left}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container{position:relative}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{display:inline-block}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{position:absolute;height:24px;width:8px;right:-8px;top:-2px;z-index:2;cursor:col-resize}div.jtable-main-container table.jtable thead th.jtable-command-column-header{text-align:center}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting{text-align:center;width:1%}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting input{cursor:pointer}div.jtable-main-container table.jtable thead th.jtable-column-header-sortable{cursor:pointer}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button{margin:0;padding:0;cursor:pointer;border:none;display:inline}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button span{display:none}div.jtable-main-container table.jtable tbody tr>td.jtable-command-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column input{cursor:pointer}div.jtable-main-container table.jtable tbody tr.jtable-no-data-row{text-align:center}div.jtable-main-container>div.jtable-bottom-panel{position:relative;min-height:24px;text-align:left}div.jtable-main-container>div.jtable-bottom-panel div.jtable-right-area{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{display:inline-block}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{padding:2px 5px;display:inline-block;cursor:pointer}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{cursor:default}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page input[type=text]{width:22px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{vertical-align:middle}div.jtable-main-container div.jtable-column-resize-bar{opacity:.5;filter:alpha(opacity=50);position:absolute;display:none;width:1px;background-color:#000}div.jtable-main-container div.jtable-column-selection-container{position:absolute;display:none;border:1px solid #c8c8c8;background:#fff;color:#000;z-index:101;padding:5px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list{margin:0;padding:0;list-style:none}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li{margin:0;padding:2px 0}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span{position:relative;top:-1px;margin-left:4px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"]{cursor:pointer}form.jtable-dialog-form div.jtable-input-field-container{padding:2px 0 3px 0;border-bottom:1px solid #ddd}form.jtable-dialog-form div.jtable-input-field-container:last-child{border:none}form.jtable-dialog-form div.jtable-input-label{padding:2px 3px;font-size:1.1em;color:#666}form.jtable-dialog-form div.jtable-input{padding:2px}form.jtable-dialog-form div.jtable-date-input{}form.jtable-dialog-form div.jtable-text-input{}form.jtable-dialog-form span.jtable-option-text-clickable{position:relative;top:-2px}form.jtable-dialog-form div.jtable-textarea-input textarea{width:300px;min-height:60px}form.jtable-dialog-form div.jtable-checkbox-input span,form.jtable-dialog-form div.jtable-radio-input span{padding-left:4px}form.jtable-dialog-form div.jtable-radio-input input,form.jtable-dialog-form div.jtable-checkbox-input input,form.jtable-dialog-form span.jtable-option-text-clickable{cursor:pointer}div.jtable-busy-panel-background{opacity:.1;filter:alpha(opacity=50);z-index:998;position:absolute;background-color:#000}div.jtable-busy-panel-background.jtable-busy-panel-background-invisible{background-color:transparent}div.jtable-busy-message{cursor:wait;z-index:999;position:absolute;margin:5px}div.jtable-contextmenu-overlay{position:fixed;left:0;top:0;width:100%;height:100%;z-index:100}div.jtable-main-container{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:14px;background:#fff;line-height:1.3}div.jtable-main-container>div.jtable-title{background-color:#3e1a98;padding-left:10px}div.jtable-main-container>div.jtable-title div.jtable-title-text{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:19px;line-height:34px;color:#fff}div.jtable-main-container>div.jtable-title .jtable-close-button{right:8px;top:8px;bottom:8px;position:absolute;opacity:.5;filter:alpha(opacity=50);background:url('../../metro/close.png') no-repeat;width:16px;height:16px}div.jtable-main-container>div.jtable-title .jtable-close-button:hover{opacity:1;filter:alpha(opacity=50)}div.jtable-main-container>div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{background-color:#4824a2;color:#fff}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon{background-image:url('../../metro/add.png')}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover{background-color:#4f2ba9;padding-bottom:6px}div.jtable-main-container>table.jtable{border:1px solid #603cba;border-collapse:collapse;border-spacing:0}div.jtable-main-container>table.jtable>thead{background-color:#603cba}div.jtable-main-container>table.jtable>thead th{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:15px;color:#fff}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container{height:24px;margin-left:4px}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{height:28px}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{margin-top:2px}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sortable div.jtable-column-header-container{background:url('../../metro/column-sortable.png') no-repeat right}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sorted-asc div.jtable-column-header-container{background:url('../../metro/column-asc.png') no-repeat right}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sorted-desc div.jtable-column-header-container{background:url('../../metro/column-desc.png') no-repeat right}div.jtable-main-container>table.jtable>tbody>tr{background-color:#fff}div.jtable-main-container>table.jtable>tbody>tr>td{border:1px solid #ddd}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td{padding:4px}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-edit-command-button{background:url('../../metro/edit.png') no-repeat;width:16px;height:16px;opacity:.4}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-edit-command-button:hover{opacity:.8}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-delete-command-button{background:url('../../metro/delete.png') no-repeat;width:16px;height:16px;opacity:.4}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-delete-command-button:hover{opacity:.8}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-even{background-color:#f9f9f9}div.jtable-main-container>table.jtable>tbody>tr:hover{background:#e8eaef}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-selected{color:#fff;background-color:#825edc}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-created{background-color:#936fed}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-updated{background-color:#936fed}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-deleting{background-color:#e51400;color:#fff}div.jtable-main-container>table.jtable>tbody>tr.jtable-child-row>td{padding:2px;background-color:#fff}div.jtable-main-container>div.jtable-bottom-panel{background-color:#4f2ba9;color:#fff;min-height:22.900000000000002px;font-size:13px;border:1px solid #603cba;border-top:none}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{margin:1px 0 0 0}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{background-color:#603cba;margin:1px;padding:2px 5px;color:#fff}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover{background-color:#825edc}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{opacity:.75;filter:alpha(opacity=50);color:#ccc;cursor:default}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover{background-color:#603cba}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{display:inline-block;padding:4px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{display:inline-block;padding:2px 0 2px 0}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{display:inline-block;padding:2px 0 2px 0}form.jtable-dialog-form{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:400;font-size:14px}div.jtable-busy-message{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:16px;border:1px solid #fff;padding:5px 5px 5px 58px;color:#fff;background:url('../../metro/purple/loading.gif') no-repeat;background-color:#3e1a98;background-position:8px} diff --git a/lib/themes/metro/purple/loading.gif b/lib/themes/metro/purple/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..5bda0eb9a0ae434495ea306a1fa88fa3b4cabb57 GIT binary patch literal 404 zcmZ?wbhEHb)Mnsj_{hLuCpF{$|NpZ)PXbBBe^Smxsfi`2DGKG8B^e5dS&0=n`H3ld znR#jX42nNl7`PZ17!?0=`?-b$J39ur8tEA@GXjNlfS3VfAOn+8OCQJSX*X{)e?H13 zeJ||u>DC8kZ4r?R)6{G4&Dyt|CtcU`diyE8Uq?3owA-;j!N^AxXd>8TMr31bj{uEP z;7?56IIHFOnwrlu67PNQNtrQY{;7pt&RzvNJJ_?&Ze06Pg>MsMs)$s6#HZT6Q+}5p z&C*E81%TGdiiN4(8Lw%U?wsno9F=b>WnG7*rn?>{@R)9v%+M)yIi1FiTcrX vD}VECG@HG3ZvWp+k0+)$$G&~0?NxTdRajt8g3>tw(O*m=3=Gzwa03GXl`)vC literal 0 HcmV?d00001 diff --git a/lib/themes/metro/red/jtable.css b/lib/themes/metro/red/jtable.css new file mode 100644 index 0000000..3c2e20a --- /dev/null +++ b/lib/themes/metro/red/jtable.css @@ -0,0 +1,495 @@ +/* jTable metro style theme - Red + * Created by Halil İbrahim Kalkan + * http://www.jtable.org + */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + src: local('Open Sans Light'), local('OpenSans-Light'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/DXI1ORHCpsQm3Vp6mXoaTRa1RVmPjeKy21_GQJaLlJI.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 300; + src: local('Open Sans Light Italic'), local('OpenSansLight-Italic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxrsuoFAk0leveMLeqYtnfAY.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans'), local('OpenSans'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/u-WUoqrET9fUeobQW7jkRT8E0i7KZn-EPnyo3HZu7kw.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans Italic'), local('OpenSans-Italic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/xjAJXh38I15wypJXxuGMBtIh4imgI8P11RFo6YPCPC0.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/MTP_ySUJH_bn48VBG8sNSha1RVmPjeKy21_GQJaLlJI.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 600; + src: local('Open Sans Semibold Italic'), local('OpenSans-SemiboldItalic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxmWeb5PoA5ztb49yLyUzH1A.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: local('Open Sans Bold'), local('OpenSans-Bold'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/k3k702ZOKiLJc3WVjuplzBa1RVmPjeKy21_GQJaLlJI.woff) format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxoUt79146ZFaIJxILcpzmhI.woff) format('woff'); +} +div.jtable-main-container { + position: relative; +} +div.jtable-main-container div.jtable-title { + position: relative; + text-align: left; +} +div.jtable-main-container div.jtable-title .jtable-close-button { + right: 0px; + top: 0px; + bottom: 0px; + position: absolute; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar { + bottom: 0px; + right: 0px; + position: absolute; + display: inline-block; + margin-right: 5px; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item { + position: relative; + display: inline-block; + margin: 0px 0px 0px 5px; + cursor: pointer; + font-size: 0.9em; + padding: 2px; + vertical-align: bottom; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-icon { + display: inline-block; + margin: 2px; + vertical-align: middle; + width: 16px; + height: 16px; +} +div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-text { + display: inline-block; + margin: 2px; + vertical-align: middle; +} +div.jtable-main-container div.jtable-title .jtable-close-button + div.jtable-toolbar { + margin-right: 30px; +} +div.jtable-main-container table.jtable { + width: 100%; +} +div.jtable-main-container table.jtable thead th { + vertical-align: middle; + text-align: left; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container { + position: relative; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text { + display: inline-block; +} +div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler { + position: absolute; + height: 24px; + width: 8px; + right: -8px; + top: -2px; + z-index: 2; + cursor: col-resize; +} +div.jtable-main-container table.jtable thead th.jtable-command-column-header { + text-align: center; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-selecting { + text-align: center; + width: 1%; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-selecting input { + cursor: pointer; +} +div.jtable-main-container table.jtable thead th.jtable-column-header-sortable { + cursor: pointer; +} +div.jtable-main-container table.jtable tbody tr > td .jtable-command-button { + margin: 0px; + padding: 0px; + cursor: pointer; + border: none; + display: inline; +} +div.jtable-main-container table.jtable tbody tr > td .jtable-command-button span { + display: none; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-command-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column { + text-align: center; + vertical-align: middle; +} +div.jtable-main-container table.jtable tbody tr > td.jtable-selecting-column input { + cursor: pointer; +} +div.jtable-main-container table.jtable tbody tr.jtable-no-data-row { + text-align: center; +} +div.jtable-main-container > div.jtable-bottom-panel { + position: relative; + min-height: 24px; + text-align: left; +} +div.jtable-main-container > div.jtable-bottom-panel div.jtable-right-area { + right: 0px; + top: 0px; + bottom: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + display: inline-block; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + padding: 2px 5px; + display: inline-block; + cursor: pointer; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + margin-left: 5px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page input[type=text] { + width: 22px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + vertical-align: middle; +} +div.jtable-main-container div.jtable-column-resize-bar { + opacity: 0.5; + filter: alpha(opacity=50); + position: absolute; + display: none; + width: 1px; + background-color: #000; +} +div.jtable-main-container div.jtable-column-selection-container { + position: absolute; + display: none; + border: 1px solid #C8C8C8; + background: #fff; + color: #000; + z-index: 101; + padding: 5px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list { + margin: 0px; + padding: 0px; + list-style: none; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li { + margin: 0px; + padding: 2px 0px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span { + position: relative; + top: -1px; + margin-left: 4px; +} +div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"] { + cursor: pointer; +} +form.jtable-dialog-form div.jtable-input-field-container { + padding: 2px 0px 3px 0px; + border-bottom: 1px solid #ddd; +} +form.jtable-dialog-form div.jtable-input-field-container:last-child { + border: none; +} +form.jtable-dialog-form div.jtable-input-label { + padding: 2px 3px; + font-size: 1.1em; + color: #666; +} +form.jtable-dialog-form div.jtable-input { + padding: 2px; +} +form.jtable-dialog-form div.jtable-date-input { + /* No additional style */ + +} +form.jtable-dialog-form div.jtable-text-input { + /* No additional style */ + +} +form.jtable-dialog-form span.jtable-option-text-clickable { + position: relative; + top: -2px; +} +form.jtable-dialog-form div.jtable-textarea-input textarea { + width: 300px; + min-height: 60px; +} +form.jtable-dialog-form div.jtable-checkbox-input span, +form.jtable-dialog-form div.jtable-radio-input span { + padding-left: 4px; +} +form.jtable-dialog-form div.jtable-radio-input input, +form.jtable-dialog-form div.jtable-checkbox-input input, +form.jtable-dialog-form span.jtable-option-text-clickable { + cursor: pointer; +} +div.jtable-busy-panel-background { + opacity: 0.1; + filter: alpha(opacity=50); + z-index: 998; + position: absolute; + background-color: #000; +} +div.jtable-busy-panel-background.jtable-busy-panel-background-invisible { + background-color: transparent; +} +div.jtable-busy-message { + cursor: wait; + z-index: 999; + position: absolute; + margin: 5px; +} +div.jtable-contextmenu-overlay { + position: fixed; + left: 0px; + top: 0px; + width: 100%; + height: 100%; + z-index: 100; +} +div.jtable-main-container { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 14px; + background: #fff; + line-height: 1.3; +} +div.jtable-main-container > div.jtable-title { + background-color: #c30000; + padding-left: 10px; +} +div.jtable-main-container > div.jtable-title div.jtable-title-text { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 19px; + line-height: 34px; + color: #fff; +} +div.jtable-main-container > div.jtable-title .jtable-close-button { + right: 8px; + top: 8px; + bottom: 8px; + position: absolute; + opacity: 0.5; + filter: alpha(opacity=50); + background: url('../../metro/close.png') no-repeat; + width: 16px; + height: 16px; +} +div.jtable-main-container > div.jtable-title .jtable-close-button:hover { + opacity: 1; + filter: alpha(opacity=50); +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar { + bottom: 0px; + right: 0px; + position: absolute; +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item { + background-color: #cd0000; + color: white; +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon { + background-image: url('../../metro/add.png'); +} +div.jtable-main-container > div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover { + background-color: #d40300; + padding-bottom: 6px; +} +div.jtable-main-container > table.jtable { + border: 1px solid #e51400; + border-collapse: collapse; + border-spacing: 0; +} +div.jtable-main-container > table.jtable > thead { + background-color: #e51400; +} +div.jtable-main-container > table.jtable > thead th { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 15px; + color: #fff; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container { + height: 24px; + margin-left: 4px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler { + height: 28px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text { + margin-top: 2px; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sortable div.jtable-column-header-container { + background: url('../../metro/column-sortable.png') no-repeat right; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sorted-asc div.jtable-column-header-container { + background: url('../../metro/column-asc.png') no-repeat right; +} +div.jtable-main-container > table.jtable > thead th.jtable-column-header-sorted-desc div.jtable-column-header-container { + background: url('../../metro/column-desc.png') no-repeat right; +} +div.jtable-main-container > table.jtable > tbody > tr { + background-color: #fff; +} +div.jtable-main-container > table.jtable > tbody > tr > td { + border: 1px solid #ddd; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td { + padding: 4px; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-edit-command-button { + background: url('../../metro/edit.png') no-repeat; + width: 16px; + height: 16px; + opacity: 0.4; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-edit-command-button:hover { + opacity: 0.8; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-delete-command-button { + background: url('../../metro/delete.png') no-repeat; + width: 16px; + height: 16px; + opacity: 0.4; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-data-row > td > .jtable-delete-command-button:hover { + opacity: 0.8; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-even { + background-color: #f9f9f9; +} +div.jtable-main-container > table.jtable > tbody > tr:hover { + background: #e8eaef; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-selected { + color: #fff; + background-color: #ff3622; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-created { + background-color: #ff4733; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-updated { + background-color: #ff4733; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-row-deleting { + background-color: #e51400; + color: #fff; +} +div.jtable-main-container > table.jtable > tbody > tr.jtable-child-row > td { + padding: 2px; + background-color: #fff; +} +div.jtable-main-container > div.jtable-bottom-panel { + background-color: #d40300; + color: #fff; + min-height: 22.900000000000002px; + font-size: 13px; + border: 1px solid #e51400; + border-top: none; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list { + margin: 1px 0px 0px 0px; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active { + background-color: #e51400; + margin: 1px; + padding: 2px 5px; + color: #fff; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover, +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover { + background-color: #ff3622; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled { + opacity: 0.75; + filter: alpha(opacity=50); + color: #ccc; + cursor: default; +} +div.jtable-main-container > div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover { + background-color: #e51400; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-info { + display: inline-block; + padding: 4px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-page-size-change { + display: inline-block; + padding: 2px 0px 2px 0px; +} +div.jtable-main-container > div.jtable-bottom-panel span.jtable-goto-page { + display: inline-block; + padding: 2px 0px 2px 0px; +} +form.jtable-dialog-form { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 400; + font-size: 14px; +} +div.jtable-busy-message { + font-family: 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + font-weight: 300; + font-size: 16px; + border: 1px solid #fff; + padding: 5px 5px 5px 58px; + color: #fff; + background: url('../../metro/red/loading.gif') no-repeat; + background-color: #c30000; + background-position: 8px; +} diff --git a/lib/themes/metro/red/jtable.less b/lib/themes/metro/red/jtable.less new file mode 100644 index 0000000..8d8d81a --- /dev/null +++ b/lib/themes/metro/red/jtable.less @@ -0,0 +1,11 @@ +/* jTable metro style theme - Red + * Created by Halil İbrahim Kalkan + * http://www.jtable.org + */ + +@import "../jtable_metro_base.less"; + +@theme-folder:'red'; +@main-theme-color: #e51400; + +.jtable_metro_base(@theme-folder, @main-theme-color); \ No newline at end of file diff --git a/lib/themes/metro/red/jtable.min.css b/lib/themes/metro/red/jtable.min.css new file mode 100644 index 0000000..214ccf0 --- /dev/null +++ b/lib/themes/metro/red/jtable.min.css @@ -0,0 +1 @@ +@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('Open Sans Light'),local('OpenSans-Light'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/DXI1ORHCpsQm3Vp6mXoaTRa1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300;src:local('Open Sans Light Italic'),local('OpenSansLight-Italic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxrsuoFAk0leveMLeqYtnfAY.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans'),local('OpenSans'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/u-WUoqrET9fUeobQW7jkRT8E0i7KZn-EPnyo3HZu7kw.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/xjAJXh38I15wypJXxuGMBtIh4imgI8P11RFo6YPCPC0.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;src:local('Open Sans Semibold'),local('OpenSans-Semibold'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/MTP_ySUJH_bn48VBG8sNSha1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:600;src:local('Open Sans Semibold Italic'),local('OpenSans-SemiboldItalic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxmWeb5PoA5ztb49yLyUzH1A.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/k3k702ZOKiLJc3WVjuplzBa1RVmPjeKy21_GQJaLlJI.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local('Open Sans Bold Italic'),local('OpenSans-BoldItalic'),url(https://themes.googleusercontent.com/static/fonts/opensans/v6/PRmiXeptR36kaC0GEAetxoUt79146ZFaIJxILcpzmhI.woff) format('woff')}div.jtable-main-container{position:relative}div.jtable-main-container div.jtable-title{position:relative;text-align:left}div.jtable-main-container div.jtable-title .jtable-close-button{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute;display:inline-block;margin-right:5px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{position:relative;display:inline-block;margin:0 0 0 5px;cursor:pointer;font-size:.9em;padding:2px;vertical-align:bottom}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-icon{display:inline-block;margin:2px;vertical-align:middle;width:16px;height:16px}div.jtable-main-container div.jtable-title div.jtable-toolbar span.jtable-toolbar-item span.jtable-toolbar-item-text{display:inline-block;margin:2px;vertical-align:middle}div.jtable-main-container div.jtable-title .jtable-close-button+div.jtable-toolbar{margin-right:30px}div.jtable-main-container table.jtable{width:100%}div.jtable-main-container table.jtable thead th{vertical-align:middle;text-align:left}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container{position:relative}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{display:inline-block}div.jtable-main-container table.jtable thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{position:absolute;height:24px;width:8px;right:-8px;top:-2px;z-index:2;cursor:col-resize}div.jtable-main-container table.jtable thead th.jtable-command-column-header{text-align:center}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting{text-align:center;width:1%}div.jtable-main-container table.jtable thead th.jtable-column-header-selecting input{cursor:pointer}div.jtable-main-container table.jtable thead th.jtable-column-header-sortable{cursor:pointer}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button{margin:0;padding:0;cursor:pointer;border:none;display:inline}div.jtable-main-container table.jtable tbody tr>td .jtable-command-button span{display:none}div.jtable-main-container table.jtable tbody tr>td.jtable-command-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column{text-align:center;vertical-align:middle}div.jtable-main-container table.jtable tbody tr>td.jtable-selecting-column input{cursor:pointer}div.jtable-main-container table.jtable tbody tr.jtable-no-data-row{text-align:center}div.jtable-main-container>div.jtable-bottom-panel{position:relative;min-height:24px;text-align:left}div.jtable-main-container>div.jtable-bottom-panel div.jtable-right-area{right:0;top:0;bottom:0;position:absolute}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{display:inline-block}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{padding:2px 5px;display:inline-block;cursor:pointer}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{cursor:default}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{margin-left:5px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page input[type=text]{width:22px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{vertical-align:middle}div.jtable-main-container div.jtable-column-resize-bar{opacity:.5;filter:alpha(opacity=50);position:absolute;display:none;width:1px;background-color:#000}div.jtable-main-container div.jtable-column-selection-container{position:absolute;display:none;border:1px solid #c8c8c8;background:#fff;color:#000;z-index:101;padding:5px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list{margin:0;padding:0;list-style:none}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li{margin:0;padding:2px 0}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li label span{position:relative;top:-1px;margin-left:4px}div.jtable-main-container div.jtable-column-selection-container ul.jtable-column-select-list li input[type="checkbox"]{cursor:pointer}form.jtable-dialog-form div.jtable-input-field-container{padding:2px 0 3px 0;border-bottom:1px solid #ddd}form.jtable-dialog-form div.jtable-input-field-container:last-child{border:none}form.jtable-dialog-form div.jtable-input-label{padding:2px 3px;font-size:1.1em;color:#666}form.jtable-dialog-form div.jtable-input{padding:2px}form.jtable-dialog-form div.jtable-date-input{}form.jtable-dialog-form div.jtable-text-input{}form.jtable-dialog-form span.jtable-option-text-clickable{position:relative;top:-2px}form.jtable-dialog-form div.jtable-textarea-input textarea{width:300px;min-height:60px}form.jtable-dialog-form div.jtable-checkbox-input span,form.jtable-dialog-form div.jtable-radio-input span{padding-left:4px}form.jtable-dialog-form div.jtable-radio-input input,form.jtable-dialog-form div.jtable-checkbox-input input,form.jtable-dialog-form span.jtable-option-text-clickable{cursor:pointer}div.jtable-busy-panel-background{opacity:.1;filter:alpha(opacity=50);z-index:998;position:absolute;background-color:#000}div.jtable-busy-panel-background.jtable-busy-panel-background-invisible{background-color:transparent}div.jtable-busy-message{cursor:wait;z-index:999;position:absolute;margin:5px}div.jtable-contextmenu-overlay{position:fixed;left:0;top:0;width:100%;height:100%;z-index:100}div.jtable-main-container{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:14px;background:#fff;line-height:1.3}div.jtable-main-container>div.jtable-title{background-color:#c30000;padding-left:10px}div.jtable-main-container>div.jtable-title div.jtable-title-text{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:19px;line-height:34px;color:#fff}div.jtable-main-container>div.jtable-title .jtable-close-button{right:8px;top:8px;bottom:8px;position:absolute;opacity:.5;filter:alpha(opacity=50);background:url('../../metro/close.png') no-repeat;width:16px;height:16px}div.jtable-main-container>div.jtable-title .jtable-close-button:hover{opacity:1;filter:alpha(opacity=50)}div.jtable-main-container>div.jtable-title div.jtable-toolbar{bottom:0;right:0;position:absolute}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item{background-color:#cd0000;color:#fff}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-add-record span.jtable-toolbar-item-icon{background-image:url('../../metro/add.png')}div.jtable-main-container>div.jtable-title div.jtable-toolbar span.jtable-toolbar-item.jtable-toolbar-item-hover{background-color:#d40300;padding-bottom:6px}div.jtable-main-container>table.jtable{border:1px solid #e51400;border-collapse:collapse;border-spacing:0}div.jtable-main-container>table.jtable>thead{background-color:#e51400}div.jtable-main-container>table.jtable>thead th{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:15px;color:#fff}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container{height:24px;margin-left:4px}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container div.jtable-column-resize-handler{height:28px}div.jtable-main-container>table.jtable>thead th.jtable-column-header div.jtable-column-header-container span.jtable-column-header-text{margin-top:2px}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sortable div.jtable-column-header-container{background:url('../../metro/column-sortable.png') no-repeat right}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sorted-asc div.jtable-column-header-container{background:url('../../metro/column-asc.png') no-repeat right}div.jtable-main-container>table.jtable>thead th.jtable-column-header-sorted-desc div.jtable-column-header-container{background:url('../../metro/column-desc.png') no-repeat right}div.jtable-main-container>table.jtable>tbody>tr{background-color:#fff}div.jtable-main-container>table.jtable>tbody>tr>td{border:1px solid #ddd}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td{padding:4px}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-edit-command-button{background:url('../../metro/edit.png') no-repeat;width:16px;height:16px;opacity:.4}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-edit-command-button:hover{opacity:.8}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-delete-command-button{background:url('../../metro/delete.png') no-repeat;width:16px;height:16px;opacity:.4}div.jtable-main-container>table.jtable>tbody>tr.jtable-data-row>td>.jtable-delete-command-button:hover{opacity:.8}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-even{background-color:#f9f9f9}div.jtable-main-container>table.jtable>tbody>tr:hover{background:#e8eaef}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-selected{color:#fff;background-color:#ff3622}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-created{background-color:#ff4733}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-updated{background-color:#ff4733}div.jtable-main-container>table.jtable>tbody>tr.jtable-row-deleting{background-color:#e51400;color:#fff}div.jtable-main-container>table.jtable>tbody>tr.jtable-child-row>td{padding:2px;background-color:#fff}div.jtable-main-container>div.jtable-bottom-panel{background-color:#d40300;color:#fff;min-height:22.900000000000002px;font-size:13px;border:1px solid #e51400;border-top:none}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list{margin:1px 0 0 0}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-space,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-active{background-color:#e51400;margin:1px;padding:2px 5px;color:#fff}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-first:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-last:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-previous:hover,div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-next:hover{background-color:#ff3622}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled{opacity:.75;filter:alpha(opacity=50);color:#ccc;cursor:default}div.jtable-main-container>div.jtable-bottom-panel .jtable-page-list .jtable-page-number-disabled:hover{background-color:#e51400}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-info{display:inline-block;padding:4px}div.jtable-main-container>div.jtable-bottom-panel span.jtable-page-size-change{display:inline-block;padding:2px 0 2px 0}div.jtable-main-container>div.jtable-bottom-panel span.jtable-goto-page{display:inline-block;padding:2px 0 2px 0}form.jtable-dialog-form{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:400;font-size:14px}div.jtable-busy-message{font-family:'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;font-weight:300;font-size:16px;border:1px solid #fff;padding:5px 5px 5px 58px;color:#fff;background:url('../../metro/red/loading.gif') no-repeat;background-color:#c30000;background-position:8px} diff --git a/lib/themes/metro/red/loading.gif b/lib/themes/metro/red/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..11fd90b4e0444a75517b0605b31e81942e84f9b5 GIT binary patch literal 404 zcmZ?wbhEHb)Mnsj_{hL;n1SK{|Nr-EYJjBTKPl&;)Wnk16ovB4k_?5!ti+0({KOQ! z%)GRG2F0H&3|tHh42u7`{aizWogD*Qjr0td8G%ANK+FI#kb%jlrH|wEw3|1YKOg0i zz8CiSbn64Nwus1uY3jB2X6;+fldkJ|z5SHluOpj(+U;1NVB{kTG!bkvBeF5JM}WpC z@Fym3oYiuCP0i;SiTA$uq|BHx|I|V+XRiXC9qid>H?DoD!ncVrRYWR3;!|zkDZk5) zX6Yma9bXSKkqN~_ki!gsCa#>76@4fF5kHsk_R5EqJxi`ESh0(58TX;rKFMaC&rhCv z`7>zNj5Vfb40_y8z5Fy2XyS@>FcX=PO>}^Ib;guk?9z1`f9*{5Sz$8YT`o|oME&Tx vmB0Bmn$6xixBu^^#}iYWW8Xg0_9{E!DlD)kLFt@;=r1M_1_okcv%;g-LjfL@rn^7lKwsg3^oV?yg~K%mw&u4w`AW$l*j&4@K& zKTd;li^J6@5g1Z9Y9ZnF_O{-p{ivh27ybtQ3$G(|A;H@o!g!9RrfIMDr)5WC3ViX%^mDCq^}oYW0~7YSY;ioI`MK~8)C($HxZgYm}E7nb-GTd z+x&jU`n5Sxcr?FP>~6y+<2HpTTrk!KrA~8fg!h9!+hlvVr&4Gu6F5

        twX!8&;DF-&(Gsd5EP<=?+eVOo-1U%WC#Tz=mif3_Jvf)l^{`2*rQ z>YE}Jyl0f1jF|dLRxL9T-#rw-DOY+~g0_C4tG=7u*- zpH($$}?w8Np#0zZ%<&> zSs{niH;f(l+yVvvm;f?(%plEL8wgOFFm((DGz3Ve?52+N35o9S)uu(^-%;MC1#aGOrPen*A~(G&pHAc5yCLc<=!)ch z!HJzc!Ryx=G9MScgoPy87?uYa6hk3>V1|%e@xZ;W^-Ogr;h6AxAJbS3DU5E^K+CBP z**XJa_I^CcT4}!cM0unV8y~-Xzv>?n5~8}Y)H86pPp{hWl4;9wl+ZLWTjQdm{lo2g zKSsT9k3z(xJaDYt)ex)K*datb-P^pY**LvP@a3S9eg5~IbnJ!8^!H5_IS!oo?GZR6(XyR#0o$%Z)Oq zchHE$d8OKNrsZ*P?90vLFyw`@RY>&@6ximh z=MLZ4KPF`OCg^;=P#^OOUU?x{Irbszbz(ine<^sWY_Ytx82R}$m|_ZA4Q`=*p1!i? zsW!7ez6~ejq78)vg=UYBkN?rJ74scwsmeyQ`St#i81(02zsR#^>uUS^hw5FDL2r|K(wE?JdFYzYnyg+baTse zTcvT)*+Os}-okALk2xe4ryg*9uXw3{@NYH$7@14;3xROeZskr}b=>T9!11~a>#_@d zPCdJ0jy<_BAn{Faa6dkGugokJ!R)xcopMZ=xd{*q)1$5|xy)08L3Zo-g_O&<*?g|5 znW-=CiE`vrwLSiDJ>fhNbYer**xGY9Qg=fL3}^T%o*_+*>1HF%Ahqa;%#B z{CR$G@E6sdxqONi&}J2O0KLj}oIB3_P1=T}t4skUVf%}x7`Z_>_}VsP6oEv6+SdsAkIpmQjvoW4W2ue`t> zw|HYDu8%j@ujvZxdc6?7P$BZkkDnZh2a3&!h>kyr`v3U`$((odWQ%o2-B+?MiauF) z62B8~I?2w*x9(66r+u9A?nZv*bhP)U#~`oB9kp1f$!3Aa{2*v_0gUzXi*7S^h)a+Z zTM@Z?Ld?bYs!ZN1RL;Mb`&v#&g$UHD!mZ`x4~7Dzw;(m&@AE?VI(-)A&Y};W-H0Cc zlkEHw`Yfn5;2Kt|Y=1Z#hWlRlq4k}}_6I4`(sv_&MzpJ@wV^Lf0wYl@NewGA>KlmE zS?(b8I;$VL%4Ytw^?@QDaV3+Nhn+|jj4^v5wzW}zAees#*&7GX#M?)R)-Zp6k9%(E z9T-O`F5pKd1^p*y&|i=A#oJq}wxO4>>~UeJbSJVYs!(g6m^h)&=#mE}yk`S~Lds|K z7{amkZtBAwF0&w=+D79_#K$F=k(E5VuMfn6_86enQKmgYkaz&J_S)MjyFwzZcRE3N z=bM+VI}3eQ?Ng4?DP5*!qcB2pa&ouS)HqBU(1_gP$^scD3$`s(Lew#RL0a!X)k4y$ zi=oXGS0K>o?~aX06VN4W8e6!Y0ZYysU6?%h^qi@yDN4E%kPpuMSMK<`uviy8A$^ zR(qb;zz<3d52HIE)xyl&KdQ7K(;qvE4%JApo%4_xzA)TsqS8W z>O-$=1mx z1)-Y~NCwZg;3{GBlzSd1-l=VlbfU4V>AJNZMmyFePhop+ zd~+XmUX*~tYL4`%@7(Kp{jgze0=h`_&Viy~#j77}fTGckMn_=ch}4!>+&l^|Z%7@$ zk)310An}Xp!;EKnSyxe$$%}qg%!}&EE7wKflhc=KAeFdoZa+km^4R)auh_JeCqBv! zv7)FC)=X4Mln42RU|?|fxU>)}YNo+Q=zv^rH0xe4wjG@uL_QEyRAvi?N%JZC0@<$| z!pZDy%X0>$pDzEU;0xi=yYkT!hgC{l-QWG60Wpw6>EZo6^Pnr=^5VV{1JY~0n_?ap zr7JN8zH+IIW4N>P1VGI^MwSeXyEsV7)n9ajR&pEHQ-@1@2sf}a}< z%p-uLo*J}Ec;~5x3ev-t`To6^JGmz{Fl3knwC$+%)>ckQ;inAcmFuOc@Y_G5)JJMS zZWz_~hLqIR;n0IpF`&>A9fD^}jVmk~PnUB4lfKOVii&PK1mRTKyNG z$Rr{$&waF)FCaZ1{?vu*McBV0f{p9Zx~+jG1G)ApJfBNi5GlM~n;bsrbRaFN&+h;W zmK9=y`hW3qu})YxrmkFmGH|^Z+%4jR#Sj)9V@C) z?ME)PmZ8A7_|O+e8`8fgpbH<1wX6-L(J8+D{&G%y1GhNIB#j%d@XO6s>=zc>L?_+q z)Xn_Aw2dxE_K#O&7 z6AKA6k{GQ!M3D%kUR#S1Gl8tg1X{wi6&T}iw8j$2h8gA(4W|Px7y?A5a282@1!pp% zRSSinr&0XX6_`)IwBIf?nYWDy;ycU!;h_c^RFd*Y*IL=;t?k(z`xwbmqc7lcbAvOG zK*L@fDs4gGQn>!8+tWkY_+iqm#rt%7I94!)8l1>Ky1h)c&N>*8ZBWEZT`NKP|NXHj5^6Qs0Uv=WR4_*u>cWGJX*ORT-7?y+54h~l426Kfv(Hkx&-Ah!XuBHUR znIoac-RjUCQY|vH#h%ad9hF+4DDPS{t`(nr)?I-yX{+ydm0R)TRw{p1Qlb zwwG!Rv>=K3VD*?h8DcWLwdr58a5T=wL=Cq(=k|rdl!>@8z}Dvn%{yxCPZ_sz zDXUl1&zm+MP%qrpH#MDpsy{6c*soq<8;$t~^LV?T4kChSdrY8KVGdmPzLDW08GlH@ zd0XTf!UpNQzX8N$&uKT=KW3ih@h6*_e&p-7F^yZe%jfUB+=PXRK#Xb;4LLiYd`7O%abTs;S=PXS7sYD_jn zeG4zh$2Q7$s`hi5ME=kwkkOgB`aLnukEMQ*0Bf~rpXd zV_vQk|Dtcs2imaslT?6L=gw~8AxRbd$2fHJJ;fzMATr4(YSJ?me?t}Uufi2ga^9DE zhPP?7vy6g$70wEJ>L_FnZ3Cl^(?c|7NF!mvHF~&5_^Ri{=5H=(Gj~=34L6?4pu3gr zTn5KnladYidCQ94St)QQb%(bGe@a$E`L-CbL-Xv$$-Xd1Jz?r_N!MGN8ZkQd_02kp zXtQ=(3a{$B!`L$Y9sTC9(9dMw5L3B=2vQca4zM`NT4?@gocYc@xvyT797E5sKX)95 zeUH5Jy;J8>+7UE8-1aYiBPv&OJ6;u{TiGm?(&+Z7839+Ulde~VuUw1uy~Gj`_APE% z0Mkv87*YWSQn1$;$`bX-9rRtwpz!NpMPmJPn;cK8nM!t{;A5(_njxZK#Dpjq5aKsP zhwEIRHQS_@=P1Xb(VASPcjjA6RU+|spYX87{HDsgU%|R9UEM!Bd3bsQ9+U1u%35}| zl1Y2aIzDICwYnMptmq>qvIW7{YP2n7ke=!k5-NauI>TAr(0DOw?_j5a5O;1|Xdn8~ zrQlCL#&jC^NxsGUb|OyGyMgU}U%P^ZnR%5lpJ}T7i>42p>z4WQwV?p@sW z6(5Z-f=A%CE99AbV7Be0Z{6EXQ4f>g#n0a-hn=xmhgv(@nuQ70^X?7hj}||unMTj7 zG~V%aW-O*T=reBCpWz!4a9$i>KUOofMJ!`>2fRfehNLnHGZzh)Ki>UbDaY8!JZfBU7?(vUw^C*{rGIDC1j1gh`g_DTs-UM4tU{VK){3 z3~Knj2HSSoP<=)vgPKIHNxaPn-GWT>*VXbI+L7hFvnv;=ajzpJ#@3DeewX4pCN^H`(w`+fiOw1gOaF$2@t7zF{Ts;bZ-mX;X~|9~u8PMxcEAqM z{$rQD$x;)_^r6YU&2Cu^p~;wffr$g30Lu#fQi&%ssdG(;!uLlf6UpI&lchgaGA1`~ z?9w}sB^F=D;}_9z;crtdk2a+XK4c&e0{y3W#*eo>zb1|vS@~4UIx}2s{bXg|I%(w1 zpX_)~@!EeroKt&C@UMJH<0Tjo$nieu&mwUJCE@Lk;&D1EKnZ!8<7n0M*rvjQ>>3JX zy#|Xes)bj)uQrec_%jW3h;5dxS&{NWgc4hID zN#Qh)k&LG_QgZgvR}6|?9eEO&0>1QLX(WPH!Cxo*E#iN??Ejh_j?K++|6?(u8RNHm+GFSIp?{__*75<7bj$G)?>IK;odg!sRj>nrTx zuX!x%P!FlM=fQMIrdXcJ-KZ!U6%7qkYl80AJ-heOF)>_LvzaP|0Y;~%?oIyw{vS)V z_D)XFp1_op8y+hU%h6P_&;!~3nDMOPGYqG1wsp#8*6erl zv*4MTipWhCsuqYep}*t*yMZ#*=t;dF&oXW8(*TnaTG)U<=G(7dzc?+YJ`uUE(2T- zoH!Y(gaN916o+~~HNV_1p>0`hfDy!-Hau1_=1T}AWH$nx=egL?-rjzAc<8t@Ja^;_ zu4sJS2tmj7JL#w6GBPrZIAO8wvNAFvZzy{RrJ}2dYPITIvszlbU0vS`1gx#CJwHDq z;WB@U(3Faf9gk&k(2y66DPSuzf?|{41 zOSXOP5q+y-D>TTNjI%oX0wBN99Wi_>Ele$(AX%-90mge7Q3^l7(vbo&tF) z2q5~nPysCeVKBFprQvb&qJ$-5VxPL%FC=3AFIzO**{l~4C0|g{{IQXhQ9av24r+jQ z6juMjpDU^k@2V;#n%9s}9)CmG52slT@ykhaGyY>}JZ3+2b$6o3IuT|$tNb48NQKG} zBZqZq`4qQvAgY9L2Rs{zU~ZnXZ2(Wco}h@av~1Gb#x%`OwR&Bl*xcOQ;FOZ$Vund` zT1LjfzP=ytSeTfY23PtXP$+XKfo4kd;!smr&;RK&;jJ|~izc#Ghya`Rty6&)>Ls7o zegsNOvx(#@(JtD!IQ7Hp_e2mg|2b`sAm*(LHYlIV4z2=k6BHq{uD{>hcK+mFsspy{ zY4+0G$>+Yn(T?MkaOZ#p?qrHNsgXtcJ)dd`pXDc3wW|z@fsy-?)~amCx=IgdJQ57V6VqQ(9%C!r8qc zj_6Ch{ob+6#H?9kAWp;0g)?L_d&cU2bxn(L=ECU_s zlxO~32b$pHX$M-$2*-n`K()%z1uymf`|3`K5!RZ9b1i>Vr$=GiVpPN_*vDxhtY3rc ztD8S-#>n60Ymr$f(411ilKwVB=_0Py5=^L?Y%g_SDl@XXWv+6zp=6pmY|7b{hN%V9 z?g~aic7K(Ulw5TrGbq}Y*#DgO#Ou{jIn&xr0~0p*kt46CeR08}8uCr=J z<98}F)`IQEUxF4LsFw#W%^BMzurS}edAPr)4OOAVT9oqFDN8u!D2LobGw`M%wH-Av zEo*SulE_&b>#0HZfJ}1 ziE?;SvPtnMEk_Qqj_YQ`)#@c38)s^JASv0;CDU!NdqvhDo{r`wUnxjUYxwzb?Zu#g z#4;3QxvL1Ch+qu0#!r-83iNf=nZ*W_&kr@z+(ibC&>gJL0 zBp2`ZYmO`3`O*#Zl3B!Ukg7CRJHIjP!B<>%&e>{OQL+U`#j}A8j?aiZp51`XNfOJ4 z$s*^rC1ZD)acAiLVEf$aPuom zfsTp1PAJY_=Mwvxo~`r|9;+9AZgzGy#LJU0pzT5}+^Jnxsf$LTEJ=U{&2QhsFx??uzA(T?;ol+h2LON`Zj z$EvFfnQOJ<)Dw@!l2r0cYJA}aS(Q{yTUSfO;USEVK`06IS;Z9DD_|svnlXf$ail^> zYFO}wqNxktl5>xge<-%BMx9rVw!j;wPAi;^l#<=;cIWF!Y}#$)tJvioO*j<~!+{X8 zwJn=D;P-y!dn#Y^M-xa)O1kS2d_Jq_Aqi6_3%DZe?3ak(q6Hi>5d;vhOp=trfiA`G zZ|eeX>!8yV;Gn;UhkKp((SS0e7-G-+Y}In{2?=v(Ev&4*d(gtBF!5MTH_`N0%e@~h z$GwIO{k6D5w?`B>H=vnD*(klOJ0>Cy(sEMe4R_clkso;B;EzB1 zS5+wH#F8;8zYUV-=7`R-Aj=_5cQ3Y@;R4eRQL|dZniD#kA)9|#+-W>1^ht_gV1>}W z{GCzpXDgu-aHcNVkwbl~jIoGFdv`ctt@T2DQj**LWTCIGuQYrB{``v21rW5C>g+|S zW9~c!0<~U4Ji0^D;?70i=5InS8&8w)Q$P9;yNm**;wko1J{a@DBX})yK9a~Ux^H_R z6u#*QIaCv=uJp$YXm#Ov`&5A?K5W2{viOzc!Pzn1 zFDPT?qC}kZs3uoY)RKaWh0wV@4fHT%Z<9bJ@s-%oRp9Y?Bs!{8CIfZ@#4&EMoT0e) z$oM_Jf=uveeRt62bd>~t8YJ~SZR$OT5c-ehZ?-f{f_u~sO)-rPaqrdL%*=WZt^^(q zD-{KwoP>paRSF*mbf3p(XWz51pi}dqOOOqY^1y&RuM*1MX*Y}M=6c1J)z`aSGIIjP6>k&pe6Hx#Se2C7RcT&Q@R{&G=f6TBR{Giquq8^;)HL0!{BL53oRbPlH8K4De*Mp%gylE(?)=JT`k9B^w$VX2k+M z33QfOkfNp~;G2{5Kf()rG#)a}j*Kf0YpR&}z`f7&xLiJ^hwUaO^>K^VX7ZfEa1b|W z@eO%3Viqfw?GkQ-L{{-{NX;hj<`|Xle0?~UVBzZYd=ZLAeb%_!A68jacgD=hRt-xt z0a4ai%c*@fB)aO}KY>d-W!8))iVE%qV($?-d_G*7d}dkLv`8gvA0}_0N9zgQJ#}sE zb`=Ni!12+j19XT2*~Pckefd?Qw**0Af1Ay1F$2cw+3%Ke{<6H~aCLcEr&T%{_#h4c zcx3BMxLuYgmkk8(b%8X&I^Sb?qk0cxf`|*PlfGSGkx(kS&e3w4zgcTUhMJC<@St$BOxqUCN>Y=TDe% zsCY}JKn~|%LZd^IM+p!=?tg5_&M3IuQ}o_Hb44ZQ!FqNJ&3L{nnE3o8hu%@a{F>)p zCtd3rB!>z~A7EhxNQea_qM{i%IZf_dghxa;pmph0b}`oMCq{UY0|G)yO)8Y@@s>s~ zeb2f4ry4!aG6-Z*oh*PgAZHq8eEZ;KQoC)qTl}guCceLI5iUt>8gMi=Hck`;z6n}* z8@=%4pBf(M|E9V}%+z$}KjlN9i{*mGlV*?UqQm|DclRX%W0!$dgU@`tq=%``ai)@AE&x>TN#8q>*vT}#5{?qYv_kFs` zImW!@f^>I!4pxUhzHj^Py^C#6%v^ZVY-)K0plcV7oOl*^=MP>=(%(wc$s_ppY-G{) zZ=Bh^jxllZ0|*MAzQL+Qj+9$CXyKJ!2SG_pzd>*bT)ysI?i|(!_?#;t#$diW(~eoT zkyI%2MWd`#k@5|nJ=pXrcz;8BV?(IrTvn*N9r9F#O$`M*T{s8!`nojIv_9WN6j^IR zNjqd0)SLE?pFT;qWi)d*EZ=#B->P z=4Z1e(N#)Afj}jagfi}Qq4POA-VwCWAynB-&nsV}Oy2ycczW+R=}zWfV;s6aRJtbj z<6-2!fT+7)+!1!nJrjQSx9LUA$3$s&Jeb{*m6{eme6@+sUkH9jOP!SVkdgO?t#v!V z-EMw3o}Qi_9v)UI5C$}bC+FKV!B^p=%i2PI&ePSq`%NSZDD9)8v%gre2G67bLRaNP z2FAzN7LI^`px;|<`LeI2QOia|7|5`HI$`t!gR+B2fj9Z^&jyn-`)LrHxh?J^Q5;YL zq$yQd2x;+i8FNAz1TwQWFDsi9B`oY#`(bK9F5f=G62dL*DDUAlL;?bhp8O0BUA21c zFK2i-(E=5)`fFpqn^1mZI3E^mF-3c@m*gj^hB6DdpPy~#Qa~jz?5l|q3;JgA#(H6v zSu+wGJ9%OoMQeeoH$xZCtSi9B_c+A060q%d+6I@`qL_>=<&FNpAhqf0FH;EJ%>_}d zB7gUD;>G^HGvp18LhAb`(gH7m704^dj1^Ypom54NvfeX{;>r5` z{;^Gfj)EtbXZ3y5-N_?e8O`0$uG7~rB)=or%^5Gz$j|Tgxx*)E_(dsc<#)in#^QTv z$F6I>9H~K}PAiJ}a2r6x+>CTc3 zd2`1IZ(63u2`EB1QY?OZ%=H<3)g(4AHAmChpu%PWj31*}hRy^6F@%aWvv~;*l!~J~ z*vFuNfPm)a=F7`VNfNh!FT|mtp=|8zH00>iTU=r~1*5oozL52D0$}j9`9uLUdeY}4 zv{GhBAIF*t?KJHS&&QBHqyGNMce?4)ZE9S#q&!Z&8)rYK_7im6`!>%0+$?+Og9XRu zvdfG#y_g&0)--koz#X2iSgs@eC`^HAULsX?cky1cO(rlx-JvH@VQ= zdnHp9E_wGYBWnC~MzlICIOOIKW!^*^l8n3i{OmI^5u=lB0$rlQ#U!EDSEXWK5_gIr z%$8TxKy3V)N;F(te4IJ|E3Fh2BWDh(=d3O}f`Gs{(%*l7IiVO97M6nzum1#F@f&lR z4vRic1qPJic^=Yp0O6Aj7Z!~PxHpWG2UkL^fOsW+K7|7*(Z|w@Z_a22nF69J`)5T3 z>v0yIRZU;ciZU7o7g%1W7yK2}O?o~w92A5TtwT1&9+GMXC8Sdmq-wS>nd~A7G#X#C zo#~()V-&;ZujQ)#9tmAbABq(Vt;N6(l<3VjwB`tdemqqL>=qTFiYHT zR%y!t%R{Dj%9jKzYf$6M&GIUP9}F4IZOviaW5iaibQuh;Vp;21MiwXBeaJMv`|irr zHRFi16x60q%d44)&S00Xt^W42h8ow>FH6ML{IDkpv5PC!sP!&SB`GoS)}QoI@8SCB z^XJcivV?+yib03hzv233Z69^NTma+?&(B|z=CW!#Q06p$9~ z@Ja_fy^+BSEOx|`XvfqRs{`E+IUl#pYJHPLq>lTE+3QHm%#Hyfi=(C-m zvUT~xyliifvyK0OyxxR&EF!{mi+yP{Q8eA8w>0PUrZ6a=tV_E zfpS>DH(hA>VyUm61!$@L;xZtNz{0||2f(!h8d9SGm}_bzWkuDxVVQ-pt;3RT@1OjN>0{?0qqL2+L+84pQW#!EkEW` zSKOT*?B5gW7d%^v!+n>lg>jb$#=e^2vOd`Sap3uiligK@9nKtF5#K9cGMoNUSh}|_ zlQmwbdrbY!Qym*kH>xwQ*eA0@nK|xYD|3*$c^g_|Q6|?hGvX{Nl3}nGM|bpfD3s)d zjPq@9({kcRHGS}KSfefmbcP?siKTGBp;FOLJLACl?ss;h+^C6%yapehE~yr`9K0^a zB&DUL-z8XvDl!ir0)n%Oqn36P5fVN$8=kD8u>tMrel$y$bpP@^CEhjWq3W)G0TFIfyUnQ*ZpeIJT>vSQm zDkIr%T!(_P%sxBgi!gL=5~13=x`^)LVkrk==M2hUdwdk@HzUY&K1&4`Jl4OlXcrwK4FX ztjdKQa(}zxgd1k3)#s8x48^R{53x?+Dj$23FfcVSvEfiJf_qFue#+HyC!g42z!m}| zDc{g+C#R?B|D&CXGvrB0Nh9${cK7!~_dowAWPjkKV28Ul!BgU9hkgYwgM%2k3ptXJ zK`&DwfXQ8u@l_*~HUttvC{N{Rwt`YBRwC!eJ?}i09Z4J+@Q8u$<=*OQoB!nnR$N>h zNn}Ay4fyfz>xs|&ua6{j;t9{3)ML~3*=C9&tNfO4AZECN9$snn0s|Y{&~Zh{TcfbYWzoCFU~>ozmGaNew)1c=fMcS z|0-Vo!-oL<==jRI0BzOF=i_!ValSQRTGDShQ#xew#ZiTl%~8)b2qKPM^e?FzB%1iS zu!jv(r|?=&M)u9=zXGSi7E7RJ4*0ax)3YAZm4+`2w918Q0+*wrue#`TD?yisC}MMS z6NM1`Q?2M5WRuRx>gsA7!^iuF2hoQLV|LaUh zQ*E|r3ZkD;E=*b$|3#=o{o{h409>0VHls|Pf;wK>NCpLb8LQO$_I-Pm!PxVHmb_>H zJy=yk_;1w&5Th?v;>aOWS%EdbycJidxYc@7Qn(1Qk<3mbQN>zn@31p|+F=AMr{Jp9 ziL;2LD=Z9g#Np)P60C!Rgot>4e*PAbgCJc0Sp|#g6ZrRvUbO}`VxUHedQog)VIiP< zaIkQ!T+KRyg27l=IGbgfDapx2YIIW;)goB{O;SGak5nnVyz_i598{yn_M(MNV{!*v za6XQR^=_GYPk;yT^~i7nbwI_IjLxon>GZ@e?6~79`O`ekZjiUK!Ty>9la=J`Aam=% zrGy2uCSntp*Q4Q+!?AfT;j%W9Wu$qDl$qE>f(6G1( zvR%ds8{x*3r?RvE^VCya5|Q?%M2{B9RKas&GM40Gr0)wc?AgE#a$@Rg-8b(4BlL(m zTq4DzeGOjbEitiQM*U~TxUKqWbW_Nro2cn-Ez!6&upJS=7pRCX0Vpuu1Gbc065h_v zqg(1q&FX;ovQ>qD(0|an_G+QiQih)G<2^wc2<*hr892wG21eb=Uz3E6+ zEw^_V#S0aEgKyHl8PFp>*!I7T8}-0y@fx)E)>u^6Ja&dSlxS#Qx4h7uCXwn?f`3<9 z)20SSp|^Zy`9w^+`eGAdFkg$-uCMrmj2;ev0HwlkJkL`;Rk0ryAOm4G?)KTj@_0_= z%`(o55T3ve3)y0TD>v9wqAshr&m(H%MyyThcntcBi>Nq*4B+icASjF~|Di!0)wZEs zJ4E`b5ITzSO%FCn8k%1X%6!2ot#998b?zWPCPpU8cCCR*Z~}N=WsoeDVNg4TY5ykP z;|9gH9wj31{EL^D7nV3+!P(>rm(9q!03huWuA(I-lFO{J^5asYL(bUguAwGuGcgEq z(dK6Kb&Fa!qK0puJ9%6)jI`k(IBv52;Oty;={!OV`1qHzlkq#ph`)8T<9d{9zgVVq zY;a#!dZT)78*j|%vVd8jDQv1Sa&&S5xN)E->T%)Skmw;Li*Je$5}ptpFXPR}=Cl;j zZDRZ=HM|vTQkI2@>h4F8no8EvQ#qh~j20bqqMBt(Rb^ddR^1wc@$sIrvw=RiM!f_8 zKh+vN98+?NYcUZ$iWRqqWCrwrRZh6uXE-A0J-G36p<$$7vv(5z`lxzdGB!-gWIxQ=0{meG@dki32|;x}sGTnKTBooj zj~h;FbsLrjXv+o6s+U~zios>6Xj{M0PC=4jBs8asVG9JhNQ=^d{uO~*ZZaVg<-lv{ z+U6Ac)X;07VGe~Xt?8AA!fKjy{+&F+x?QR&Dxl2T+8Y3P?2Kd-=yoWnsm1;SgX}RO z^@AQ^^Rx=pXdyBS3;Q;%Kt9bp9`tVSQ?(S~d zPy#~24U*6{lN3Jvc-xLvB$K_O-C2>={9KRUn;jM&vLfpMhvQAz;W z5x~9!%Pr&+4<9+uYB2RAP?v;PUC;JSk=o<-n-m-3TqGgwhd3}f-n{QxXAS&WD1}DI z8UbZ)y~(&e@=^#aLZ4BDnQ*~0bb~>CX9&FSwz2+yI1d>PAv`lWHMVWk<#IvU^Z672 zNO!}kBF{Ow0LQlqAC#Pu;w6v)IIn%i06CS>jCOu`x{;i^RMK(Z%VPv-ZAX#O^!xSIA#I?K0!|4k&Rr9ej0N$y~er2Nu;+;FnF~Vz3hy zZxKi;deV#oba`p>g$Sy2So#$jO+xn-R{AP9T~Fg*<0DVO=2K|CqM|s_TmkGyu;)TP z{MjRR1if5^_>P87hQ-Jl6`F#6TE&eSTnt)`4499SpP4bHgVelI+g z_si=L_KWZ)ArQ5fH0IpINl3U49DFHkRiF8!MZ&j+;9T_{f*skIS}sD9o%fvq+CAp6 zL%l*eUs7x=0J`#TFDVY*1l*87|G=^>|7!A~7aJNKOB_RJw(&@Encrb^i4t&Kt+GV~ zP?&8KnIJJFzLbD3$C(jcm(9iAeq~GI#v&(BX7O*omAh&Ss!l?u4_e$6_m_5z9SFzc z`xCJwNKPV|VVn^>3L2w>3L1o>*9}1k3}d@RL|=%lYzZG92q`WLM{D&L!1Cn}k3g-- zuPH}@902TCY}1Z{)W@c!2C2J&1OZ=PUi{3H=&LONRlHm7Y$LFo4})Cy3zN@^oa|@rWHG?d0q%u^8;O zJ4zlX()LFu88Lu)cM1{g<>|?1;JOM_Y>nAGq*7Gs0_l0DlkNCO?#NQ-n~DCUk$+|B z!VP)ezT|SxfIgwg@Kkx#C&If4M5Wq|`D13e&k8Sjm}-sZNL@9#bIAt+WX@eI%GZe z3kwEKDr4O<-1iGdJA2Pyqu&D5rnxC+Y0s%)>G&3X(WZ7{&+5di?4{N{`fVNu6*5U= za5imZPX|Ai{}2v#3EVdjHT#6YxYar-I<$Qz=dL6A;K#P?sJZMbA*B{*nkbWrv}LB; zxz3`udgUV9i|#(Q9fv{)Wg=}>m;>j@J%kD(DBp=)9eXDi`cpi&xd5b7B;H9<*WEWn zD2zWQg`{agl0@|1)0|knx!$j$j*gWgSwO{sOdK00C#Uz)ykEN?3Yzuo>1Yt}3aEQi zRaK3n&jVx*Efz+?2a0SpdSE$MDTD^a$%vDN3Y&(dTVFMO5A~2Gpf{r&PaKS$%Y^{> zOy{6bHDQS#ja>*j0(6d|L#J);owvEs^ysU-+@6-Ep#xgKHl;73UB?AKIo z3;rnK1vc?3lNo5mq1^gy&SU!nUyAp#%2?uQLkl|OJdsGolta|g#&<(dpjq!}!DPQ4 z&0iRaqCYE@IJ&|FT+WkLsz{7?#3D4Ht?8<6l8l;(5hpPMtKjqWo)d{Y(g1(${{Yqj z+)mub!6Adv*>o3hH`5WS5a5(ejyFgu-awh#uC#c2H>N>1!TQ(}TG#~dxw1u>sKQJt zHBsf~0CWfNt92`br-S~*eta!I9E=4;-#?-FwgZTT(*r0gYRMs?cTFPq1UC}zyX?+& z<~W10vLCmHbT2)IVd*Z0#a|iF*vgfNgn<>t-V+%wG8MhKzU)xhv%&vX;PZ?hfnZ-t zLdI4@DhMDBGCA94K0x!JTbk>cb}J?2LzOs5eMj}QH%LzXcIZ1T^j(gnRW@;O8_L%f za<76|A;tJF>3G>!krhq1k7O;&3Y0EifEt6X&{@5V75c`Ri{(NdPzyiqPBslWL=eM0 z$ZzEgo;^BLKJZOGBv5r;wJhBiGGtsc36h$-?EZ5kY0gwlvXpL$MMRr5RJlOTt4VA5 ztE0XiorN8u5m6dJPC&TrNl7$Suw!K-f+~A|h0ll9K~|6Cs-x zh*jYnSlHO&SCm**@5u*sD_lj5T7*;5n)a9D2*ZO&1)g_XYoUaE7LG`WUN@)4C1~OI z4{4G7&mG|s9ZfeS{pqA>cAg%v{IKjbJ0GCuQof>1X|`Ac1VcPY_eFe_otbb1QPjN5 zyw79?tkKr%WM%8+f#PB9R`L_lg7yr=EdF7(_5sQ{cTO#4X&~rjdt{RJ!pIbAgXR@& zNbu8SRc}@Qv1(Z$TSQ7trx?P1rWGLkjm*?_rrH}Hw9)eeWSlGwU;j9STL9xu~Q$%rdVtJ`|0 z+Ee{oKllHXKrxYmS=3|9(7F0r5{ zzovU6Jh`9R2%ia{Ozq%G8!zl`Cvb#TtfZ@{$a%4PspXS9RW5orcb)Tdb3sCiiX*_U zC0Kz8p9q5BNIh8?7!D>B1=9kA63JVH^OOo>=|Q)fF^YUTXdo>9PqDG(EOh!=I%RN> zfE;>04Hg9XsAQ?pQM4?x@fjK#Vu^=`hugmv1jv&-MY!v2%tx=mxS1~;T#a;Ol}Et1 zte|?(AcN-SoaR`RD`!GyZ%t>H1YJm;5t73p%)e6|F_k=@LWSuu+l`%MeP_xZkg%eo zP8SX{Mb;OnLjk3lk6S^`PfIxlHc@bN7xxXnp&topPZ`YpR5Km#JWV&9XpwlJWjDuS zCdYY2fkep)wX^Jx%LdPxsMLsA#X->RYF^8Mj+Ca@(Q*Y6uEK-D(7@1Kr!)vwk+ZIPQI!A|0q922)m!Ml*v23syBWrR)(hS=9x79y$fPH7P!90Nh9}YP^&G&6kzP(E+TXO9i67KXj)g5-P&dh%`klE1A;_%nQ zM+L^{PGXA1lH1@uJSB2p1~zYY@?zrS<8_#)@w0V}z5P#?0?6anFqnowFq1#TKbICZ z^r+%UtX0r?XF7zJk8f5yNM~$(oIPnGRRY#3L0rMLQ?8ZuMnKI@296=5xAG10BI3?f zCPM4e#duP>rH_DYSspg!y1C-=^}%YWn9&W%fCIN^y_xU#3OrrQ$Ev5Bgk5AUZgf#q z`S&mNj}TvW<8m|q>=lk|J6antrwuc|AWE2he<@+FevbKumAFUe1(9sNZ6tbUavm+d zDl!q6BZ3M~MpNm3>ROF#rJwN={myJmvMCkUj_=*bM@ddsqV7Rd)?t1FINyQIT+!6P z@5^^vTn4|x`>4S6PzpAyXls`$)22?#srsEDlso(lnmz(0|0gqv!r_ByZkti1FC!uI zk(x$iS6hPt|5*h`Cg8zw_gOK&uu$;+eBzb33_db2CRhUTzDO=8V^1!R75c*dIQvh; z4q1#8D5$He1L5`D+#D-QLSc=9*##TCMMdf)E-KiRJ9^?c-+$2d1L7%K)VxYm%6g7PoQct(?>F=!B78e^Z+&oI8Y>dh#{b0KM`V>wrkyh zb9X2Lt$^SfN&h5XTVI1RLZ83gSpM&XaGL`uBU(vdh-Cb4g>XRHA@t2=1k^|_i^y{;Z4hN93&)?m6TLxI+V`x?N_^PgDQSfc6N4B(k8$yprmvH5_mq>K5Z<7zyCWm z4CwEiiGYgl-S0d1Ig5|9{kzW0y3HB~h9lr&KqW%FRfIVuL^ifok&Tb){<%K}*C1PPGZy2sap5s!>O}Zxbhc1~ z^5G2G1+!y3H8eC*v$DL87I?lc4pY0ngC20-1+EtGbhTt;!nzFOUfBVb*4%Kz4NfLL zc|94}e!yMB!ounaVddvvSYCd=x`r^|fF=|FDjgRwrbkRAv1ff1`cy>#^);_>T95^s z1>O2npbN3o9yP;x)}|K>)VWoUo~imTqb2M_@Bs>-`%_?*NkuZOjLwvUYKLXwAxyLk z+9bt71>Gbu@dF+8xeyxK==UOM@+;( z1c>1P6(pPV3iyWbQGo!tPVg6Pk}RnAsnJ7O)v*x6(b-%xPy!cQr?oB1$BICw2{JM@6)If0<3%WC!kSb!IsLYMImIR^oS$`Ka^)ijP zgao6SS)e`^%?bvBz|2gNUD%27aiE4eBc}MQ8W|Z)iw`D;_;_3{nS@XffdppO*g+PD%uZt?X6p5sKu7Nz6t{igTsoXWe(a84D4-HHYMh$+JGh944dL~NuM+vove zN}8Th*XkR8B^9W3xAW=KOw6WBoeQS#HKzygUsbH8!r1R1VehFw<73mf?(Tb*Ns5}D z8T_r0k6>vCoeY!lFS;mdEOS%mdxa|FgONz%B%}a{n5cL$bRO6bfAMIp;zU_}FFfV` zq{J9Y!HK)okf%O?2N*I-2Y6VkT9$ zb@iWnCBG4ab(H+Pjz4jDyjOfffb*D>EJ7=Dt&A6gvspukLq-l35WArJz;uGKC^Fd6 zuM5ZWJXvfH6z>g=Z0fY^xxb*~7gY04e;;hYL^7|7qqpb&IJ5Fu*oYPrmsTSpmAsHs z=As+VWN+?_pYyXmWiW#S$3^i@&u}~tRP4?qoe5$>Qolyy9A+Qt(^24Tw$ob*V zUgecHse4vBlg<1Egbw!i^Jryrl4;1JqJgSUwYJ!cTn^T>p72TL zHv5E4QD9n>Y|7szl)w8?rJ1IUnf0upIr^(uz}uozw`hSs{3F(>@=*Vhx^^g4m5jb_ z`?0zV0??hvibzRS{CL*9{|vTvnw7;+;{VP_WctI7cJk5Ira-0j?oaIxr$YCqN)Kwc z`D`|u_uYw3?=WFHixjdI7k)BnH}SI^`-#3a0Gql^zyTdMpAE-RNAv5+OA& z+w`*zq6uC7*EO3Ix4GPZV`w<=Ec22kS8J6AWXV{&kYGu^(VcD^rf)-t3!T~PcPjTQ zk$PjYxqyRs{)Bn{$Dh`gD=gbJ-p9YQ>wJQqb}Jic(9Fckq(7DSS7=Md55>+&Yqkkn z57yr(SxisaIBZEviN5}kZyIdMj`8A>xVKYvWVDbeYB_yUbX2+in2d#z6h%Rta z5xLgMNSj`$`Il4xQvegp-0@R}a`m~VS~AH@Y1=O%$H=nIGHXWMhk@tC$#trGnA&5a z4X@eLw2yuqzxrot9=CbzMP-qV6t@5e{!E06`FiNc#1EP+TnB$^c1xT#7im?jkXZ-v zqNQ_Rr}UC}ezgxq5MUfz$g;n^{58&Ky_o<8G?6jhsqN$9{|-5T(#er*;x zjolQ^^0o;d0=C+qraO|w*V7!_X3jx?kAHVP@?KGxJiiy%0oCXWP$6Je^YVELA&d+T zx?<9DTc&8y#e$btQp)CaL4_ou7RbiUNOrMKOiXYnC@Cp9L2=jf=x>D>xEZHB!%~5s zgOWrDt}B7uDn@&ZG1W70)SP=vD!6eS(Y^W&8nrt7+EvLLRA_H+jn(6HD^oU&lD=!> zj2@qzu)H?jT&-V8b5LLTWP=YWVM=~0=d6j0;+z^N=AP*>ft#`}{Hwdo8R8!ex4Aq2 z%qk~{Bk4s`AxTzd>b6%Zd@hJ`Q50X9$+1r0>*YN?2xK;QB%#%AF;hacd1XR|ps!1Q z_)y-=m5AW9TWSXOTz`N6i6W(#sHo@U*i?TB=5CjYYRpEWqoYktOb}pU3Pfd~BAjqW z33BY-SH{5I@WG|iO(aSF%ZREuNBShcQXD(2c3n4)ZZWc+-IwWSkeRWq+4V6=?kN(k z!2NLXN8-jfkH}Zb(xrA(`L)?!8^c#82T~d=`YCt5E#3UGkeHY78K#~sITlLbd z^J)ZI%5T@OMrouS;dk$@eiSvpg0Jt$v6X4@HN(r~QkctowNF75X3vzf;OFL_;hn34 z>z1W{jwAAKGXy^1Au04|^wE5GkY_CQ$?j1t=Yb!@p2!GSxZqSpY;3iN{8m^l;o18r zy;&zj-h1aKVHjF$Ox z2|7yOos4j$w$Y3X$7x39lA1Ltb^nLai(9X6l@?8yuRSftwND41FYI4@`}6yDc6L_x zGgn{HW6f;gIZteH_2xE*A318YDCFkp)V}suP0QC)e8+ctSpb@Hs+6SqrEm=rtRm+H zf9)f8Kffix{%JruM`-occ#|!r{`tv*K zc<*L8e1Tu+knt+e?soROn_Gq=cXuiHHgxIIF;U-NIbWlg;2C#7Y@J)$#V}i99$s$1 z%lwkeS;X???R7##yth~x3gU770$oTqwIm{E2Do7D7U2sMpTWFFju<~aGuLLfprwX< z8d$TVOH;cD$2|ac6F?wld%&dUv!C_Jr(< zKF)+G5IIXOozAx2+L;(B ztmy-XXBeBnwCY+Zub@!%zVRs)JM<06?0mgHiFG}$3)C6{B+AuaoFYO-%{c~hG)$?9 zq1$TmngGUDk-T(Z5c2kJ>HJ3txA5PUa6118*O>oN!adFf2K&F2aMFm_UdI!AQ>8!& z2ds#*Wwwfz|NXj6l^b6Chd=20ABo+6{9(uc@CVh@oLwHytAqh0dA2nKye<%XfHE59 zv%oHqJ#Es`Mc&V+^}UzZ-FSfMrY!G$-oJa-P|MM}%t9L*^I#5w-pc%!fJ?Hl*ahJZgWMP# z3IKGl=zY_H0wVQNpy85l70FRPdETp4M3_z3>U=s5Oi4wBMUqmIek&g^7)P|ft$afO zD9_7!$cRTy+=!Ch9b}u``?PA6FV$J4EQ6SYmMbc?@5XY~5B!mg8LS`VO8N8j<42Ex zuMeCcr-Qz}uX}4dWeh(B(_zqKT_6Z^-1A-ydi*P_Y8}{=>i&FdY54rk&CSix(eYUf zz?dK$Vd>k_ zBAtMdc;0U3=t!MDi6~04Kz(y-t77>iYP@<}LCI$Be6kR{x*+}*myuEWsuUC)UX?^P zmf_+h$v#4c2l6*4gSw@RPOW`+VEq*JlUs3aUNoD)xM4v#0sFVL$iTZ*nxyo*LHlnQnp%3XXm!{6vC*iiW< z6YS^Rz|*E!RMXm;eax|Q;gR+^*!bsXjVjT#&#BAUo>^-@CYcIe$zY4SUapldFId_% zsH>@M_%J<&bpPi0F*c@hcAs9M`se6E5m(mG(UG0`?a6G5XG7;|q}ZNp^!%c_v{!FD z0YkYJ#a`LgHQPztbwEyz-@V2>X1OgSzMAu@o{Ot8%*D0e5GF_bRWWxf?lV8ruLYRt zyE&+GRwOoXR)eoB!g6woIt_~$xqokFWEKZ;YxB|15%YCgVRPs=v^2Cd`i%)$l;9m= ziXlGLZmTC(#a#Q zlov1Azaf4zH#=EoRlj2>9c57ZaRP-ZoRh`XQ0u!SJ^_oayb8X;1R#isEm(=79PW`3 zh!tahF%Z~=9&(wxG)X=6G_ILF&)WVba5=(8t`CNq*TdoH7*8I$8nDOV5bF9ppmBcPXI>ylot=GZ<_Ah@zGYuYAHRu*-WSh_9yts2q z3JlUD=qTm+I!xWZMwVVOPhw{ET85M~(WKbM&ep}h?YlObL%n*^`DmOA5qb_vAjcbf zLz72!qBaSdV=X9ox~_uBPbH%p$loW)ebK`eh+Dd1qWsfTxnI>L0}!aV#HV$6(~%8}*mmJdRb}N#hZsIb<3Cye zEFne~mY6r>(l;1}CMIR7v{RNzL=eR+-p#XH$oF6QY@TEB2NH7Vh;Z1fzz|v_bdLg2 zlTFfka(j_H4nV>L2gvOif)e`4+`)6MJC!tF@wzRR^>U34Y+BWvTANq z9IuY>kq0Ytq}_=-jMbb+a0_(Z9R}c0QR#F(>TO}0;fc%)tt!0BuL#VRVO6Pg6DMCX zEXePd90=1$!Xx+~Vt*+i8HoN1`e@*;Cvv&+>6sjh?g9TNtP5a3t0Zzolt* zd^WKp>X~m*ir^oC@w1#6PCm{Z-`Cx*c6$GHiCV;CmZfSFx!12>8yFb8c{4pTqX7#m z;`lybh5)JY*n98ji0sLezW#nxcv#D%^j);1S755H#@7Vv_~NB;cE0|Kpi<75`KvSj zE_CpjTydqR^-->AMw}$J6S};Z)GWh~ZHix4NudOj@WCqfw&G<(EML2rqQn)W%3e~d z`IGl;=0OqX1DV2_Os-C9#Lm3Y+48e|!bNy8_>5#9J_PJrQJCbdB;gW#SPhLf{9TMs zS|rlrSN$$ARdX>vK}CjgeuKiH9L%#E? zD`Ny?*}nh_x36dpKtFGr-5fTqzUF)k1hACgYX{hQZ9dpfS*D z6AnI?TuOL^FA+zDf{m$6G#Djml#pgrVtaKeS(9Wl?y!U7P9ya>0~U_1A@}^^gKAh# zeG5-(-;-CLYx-seoU7Uv%&qHxXfYX^KdNovN%I#KU>Id_3aY8g%jKMlmUcqeXy9eS zK(vME(5h5&KQ-_}sbiYJA?fm>gz0mTO=s}fPuG&8w`6KdtObw48fzmmItIs(;3Q<2 zI^wJPfwPfxURm;JanfuvI-A56?$L$EpI<#freJ|T$Fce*A5QO36H+(T_N1H z-JJZP57NNl7U3inImN_&%~Y%}l!yzbGkl~M(hyb$>p*^2zY0rH1O|q{^S0sA0N!uu z>x{HBHFrK~d=!i?ji0YNafm97%EIFzM4aI;XDH9JleDP}a>Wy_C)Q3T9UM z$F6Jv`!5d*UXpM6lY@oJjZQSCZuB_?g#-!y-JUa*k$OlNmO-!qyc>;f- z1cIdo)~Q4N>pmqP3Wv}KO9~0a)%{DadzVAObN8U{&R`nafu%H9|eVy$9(H??FC*l%(XZ z<*n^)sL~2#ZT-uS)I#|Yu#@gt*92qs`fOW(3=6UV6tw5N6VwS|4%D6ES%Ti_$3gau zU`T_O2oO+42dsjV%0C22{>xhIpr9aN^SK8+`hqQ&!US+mvM@4&|J-ckLsIhA)hzU$yO1oSgPKeGms`s{#}5Pfnj3T83epl%^#ZLAw3*0E1-y+oUE>*Vo)=?F{!Ph(xwziY6ln_ z*M-a3?d+(?$c1Kir)M!>`xYG;>2-N+R=>^}p1Z*z0h>J{H32B%2eEVn+VnGpR7>q@ zrerLW(rC@>On&Lm&TOnIM zZq6ZFFurQvSso*;M*kYrUP{y;AJt3K#Mn};Piyjq){RaQ-~AZ*!3_#sT}Tmpr14X6 zNj+XY^nJ4yD&2X@j}N-*Ns&m~m=}wbG+q2t8l8iyUt86_r16)k5Strz?EWb*M{rbT z+(y$Ef20~phiYhM z?lD<|7^Qj@bJ2w>W~q!E{fDrt|2PM_pndy&@%b+p2Vl^*31xM4u;-`JTM2)}K=nKP z8l!5O&Q@XZ6@3zLMw_wtcwQ@vNcM%Z+VV2UH zU-gdMj7#zi4+!3|+-JNZiAZIZaQw+&zH7zTj0J(5gL=`0%B-~Nbu_2D4ceQQ_xO}qSXrDwVntmI9YYCy^PyL1Xo7Gc#AGl{N9MNT2Ocui-<64D z=83x;_6Y1xJAb3%@-2N-FCpK_@RiNUg>$}o@0!i;{&S-*Ve!u_DKb0@Hn&^ya7oXHa1?4|Z z+#ugKcNn;2bk9Y3+}-%GnPt=a^Qu+qZ_*7DP68RnIj3_74p(K%)vU&m;&4cLgh0d# zjwv2V#2O_B9>td9she;qf&m{6mm)}==-v?T@2>yD;TJ{AsN4JtWRY+vFeJ&^=C|py z_Ck#>gTVL__F45mpu?ffGSTfeAvPUoNzj2@YC|Qa!1#XNAAo_?O8^Z;F3OXF-ihbQ z4jg-{WMAc4H|0*j(n#uzh=n;&D!DiaV>uXb!$@NdfeVe=*|}bQ zfBzY|2E`QjNlvwCyu4p^UFSOq#YyXUdIs}97AX5q8MSJ6z%7B+JwO7z#x%Gooxtx> zazWgGZu0#3KG~P|Q#Q+4e}0|4$A;nxHSdvE7Xor)dlaytSYHL3J^4<)-40Aeqf8OY2qom@0fhM{%_|8>o|x@z%1k%u^&dYksH+|z$Kc%yB024MSV%17 zy(1$pB!H~AR;ksK+8iLr+wt}uQ~paj?66IDe5faFJBOnVp=+1G9eRSYxrD>71cP-9`M~e6`KodoXy!l>{@p2oUBT7|!k-Hd2Ud`q=SV8cFU4 z+p6Rje~>2!WmI`y>?%hOhlchG_=jq3n5|ptmOg5-?JuKfK|Z9sAT15l$9}Rx zz7KIg3=mcv?qHbWMD?8{==n5+*K{e75*1uM<#}m59xW1w!^AIyOwKN9G)(oxcRyBg zoi!+rf$fkA73E>f44}@vziHz~{oX7*w}0_T?Gs2Yuvuz$-yY5aNt(cnPDV^DCrmDV zWQRS!Mt;?z1eRe^QqrLZWFZ?A58aP|qPsA8Y(X#d{_TgJ`qQU@;4@JFEOGxJ8X3A@ zOYRQ?tN2UQz6Cs&=Mu&a_IZhe=-z~Tcqs7_FR5#D2|)z6RMC#(vX`VhlgeAh4@_zF z?Ea&N>?KS`XVP<|o<>7WxH+L;)d$i{=%k7Q5#3Dk_RP_2VUTr$l_t$6JpA;W#e0y+ z9kEGrs!Ze0L#ki%$*VBMbSUPgswCin+Scz0ge`S1C_5ZpW{og>Zl-YHKKn9f`Eh}Ag?UE-Nr9=J$ou&dt#und5_wKib_c{@P}Kj_ zkk)AjE|ezm>6TCFXE1>~`ROXD;DfeZD1tLN;0I%5jzL80yvBPBSFFUrGXD|;ky2~T z!lFzl#{Y$en7!On=qluVvneQm3^0WvS$+vgZCiCkefpZfH|hNX>x-9No*T`E60IZK zXw$2_YKJ8<+baQ`p<5$ZkniajkAEXa@g(F6K?#d=BbBhK11i*qc{Ff9cK$t4n@&6M zK!YH+?5r%nKP7m1#9g4|w;+iacM+4Afi#AAh<~94Eb`UI+bq47v*FK6PY4P1@sh%y zxVd*&<3zJsYSog(Iec2C`O;mwyzS&0Mhr7?e3tmmlG4yn2iyknV^(s7O>ZVnRB0vR zqGzYey0J+;+)-iNkE1S@Bi;*s zz#t^KHF#6^9ZZM*w=K8$Zt^t(V%Qyk8q4=b?>0l@>97NR`c}afol2(vp45iOTweeS z7TF(LIvZul=hg;jNyf}Cj~4gOuA@nK*6@J4CBcTeR0@ENSPrA^_hEET{HpH|sXNJO zwA&B$fl9^jkE4*Zu_Tn+Gj@&Le@%Qil{1ZxsPX24DXsYxL&|-mvj{hyx5Cw5( zhw}}2xFCplYbe9X(Gjw8cYOvzvuJ2~jM+=3_EKT*eg1%sh9HYf5{fgH-v7DB5&#Y} z-4Fj}l9fX<$y%3>UB7}f6`|`5yoPxU2$$^wn4sA+h9aSvWWeG9#TgHj!yBkvN8r!h z*?++qTIKa$zWiEfbOL)}4h6fJN|Dm3oBQ9uAYx(R)2gRT{#4}s-;Ek&tl+bPfr=_d z=y$3Ek$E~98JX@kug00K4}k0e;-EC20MVQkx!5{IHbFL@-L(P$T9g!&qM{>V+XRR; zJ~Vi>d84UU=v>dF_c$hpc1s%nJod9=XVgPX8*cf>+tW_(_~hgS zgcyjDfrz(`j*b@Zmcv%NB3fBRRjQL~FAfD@P<+Ua`2u(b1I8a4TJoAq3X0cL2w^Jl zabY!KpJn?kZwCtAb=CLh;&EQHtmYGW#o2aFBBBE}OE`M<7%5)A6|`qDaNxZTjw zYs>+0{}Rk2Q^#ncL{nvTv^YH%ezy(l{^MeO#`n_GB;Q7f{i+5&#DC%q6NkxE7@L)j zNO}=~0sc-|4e~ol<9P^VW;Kp(Jpfd%IFg-bOq9s;yJWQ`&e??Q>znrdvu5DBM>kXL zXs~S{1|3feG$#wNRDFXX;Uv?I{4@T#6@pD>w-|Y+uPe~MQDicwWT!mpZ_!P zSh^W1|KVySAt7-z?FgfPkZlB3+?UIrcX=<4b&siXsHkaZ*2fXD7r(xfBN^t-uh{sq zXcKhJpSb-3(J622$eOis`U&)khh{)&QIpAKR37WKh87IuyTvgm@#?FIY3<1}0%qdb zqOJL7lS#8;n-Fy_2#S9g>?4i`-ePv|Ao2NH?vC|gaq%PcV95q1%A5nz=cc7k7{|7~ zv5d^k^@W0=5Nps?1&(~^5ubaQh+$f$_^f$Cghh)5;{Ufqg}Hwux*k&Aq6n5tYh09x zgP|d;1N-$UbK4%dn^Sw|Na``qK1pV(ZNiH<+3lynbC*k7C)cW%(YV7Hwu6vDd&D>m zt6&kWGTf_rUeYg%U;~$;R>w}WYh6yyMl8%27cxH-b^wyNB+1cCY!IvT;aY8Mxpth{ zM(DDTExYxjqq*&iLiK*L8^WSQ-xL?H4;#4EnpJKhptzL8W`z>dn3UtyeVL)A(dBIF zCd?hjTE+8KNQPN?<7x>clfLf~eGGGnOlnE&dq>U}f} z3>dGVxB?FF0$v0?2Hno{h!4D>=Li3%fykWq&Ggw%GOk}gH+(@1XHiv+hOUk#qse4l zoPsGqaz(uVG3`T}+Z!lPfgk>Zw~ZvaE$DOX3tfvs(R2pitOhzyDYvAjxz$@ddKXXiVCrkjH{Yy_oE3w zT{zljGU`W$zmNcZEXC!?+vMZ+t;(nXPxJ$$YAf}L2X+7;K)UPn37s2$F1nn?G#U4s zBA30dG#|?a)8S{G#-BhxWbzj2VQ(GlD=gh>7uup|z)IwcD3NUF;c?SZfrUa2^4LEt zn8W+Vyxm5;K~nU#?>DT%Coq3gPXAHl3(++Rk7MWdnFUAs8(sIV?K4sV4>iLx$^@q0 zvS20%>aMH_tNapTT*1SuT`KFbv(wBspCKlL=(H}+=&3dtyw6(6<~FW_6HPecRgi{i zQGwh=m{tDz`Bp3fdsdesMR4$k_+H;?^I-QTR|%~$0b7dfVp!j-LxDrSLkK9s=4t{S zNZs_O&8IwK^!BhZ)#ztEzs|cqhc|yDt$Y?W*utVm6*m zrFiJUD;ITX=*i`IGP=>|fo$Z3SOtev=oVGu1PpkNRaeNmenzpDi3_D_@jGoKq0O+7r)3&Bq<9#()(w#j<2!6*e0+IPo_e!j9{ z%=~gY&U^_rI9Qy{eTx#wd$KQ(IoDQdkL@-P>GF6P@Y7<_+D3&l4$mB6XltcX>a~1P zDEJOr%8+EW(&s%7730K@{L{K*VPczb$HH@`X>$i;g~4wo1WeJvUol&!40I5J??9qZ zg?~D((`NqC(F8CnQ>q&u#?S$Qgzf6Y-9%wRBT7gV>`(AGrLT*gSfaT+-6>THCiStj zXNzu`M&*Fu+?ps!YK}O)bEAaF#p*QXxuuO_QFqCI7iu- zt{SMozc_aF(|mBFs3<&}tuc#%s+_FL{llN(rkWeo)cvr0CN|J|IFzH)VvCASMfkvG zxJ!1|sJR#{9IZ#0GR#k|k5cZxCA}g9)GY{{eO4<#1W6UP^GN^%&@iG9~XsJ&iZym zsJ5emK2#p34J8oGqGG4q%95$1xGpfze)2;OvY-g1EsekQ6JbUb2STMx=%+0AWqSX9 z{plZ|JO2x9u+>4+laK2e9?8NYrx&7-BO)Qj+^zM->5+g&9cFk*s0E9*N?RPJarS|1 z&8R($_DHS80Zk_@0u~j%pS=7lHRv8ljFOWSug*^q!<|3OrVW}!;KyIRapb?L!vHMC zE~BDUPp@#3Hjl*Mpg-X>ex_<pj&wO-&)V@o@P^6r$(bEO zkc{QGu-S-qq+My)6%KR~9A;s_`9a-!yLfyD)j9qCebst=bqg|e0#Q?~Wqv%cP`mQv z*ehhoNlC!=4sg!Qp=(VT03P6goPY)ka&o1`#g((xj(g?B#Va)3(Ok;-CVaNH2WKMy zrr9nvH^%mWhB$y461=^8G4DVuq2icM;Wx6KXEC>Z_TX~t3fhmQmak)KBmmVpu?meT ziLFpYARk>T*MD)=Ne;oD$|$A~)Ilo%DOcf!uW5~gE5xe0rJYahpI0G1p(#4J%tv}* z?UGo|8>Pg_ytc2}w)?^-A)-v<6CXTW=y#ugv;Y}2<6GzcK=8!GWRe*S1Y1DxR9jn{ zpD$i03}Ty4QwlBGs;ll1LppNQ=wA{=$(HvI4ZUq$B`z>2$oMc&Gycxi43SG=oB=RDu>x6d<-K_ivKa;>~_9vps0(s9@17fnCSwcFpg<8c!n zKAINCLhS$HDBOfPowKtB6q19sAt7m-$#Snr}J4@0QsNo|_Q* zd(-PvVcTRfhNWhP+6-8Ku+Nyl_`&q+X1Y}u=$RZFLFD8wMKKVusiG3+<;S327W*sX z%d)-IUh=DwL5k{RV>6+a3yYNf_2x}?iMd<~8{NP)&KRq>a)ipJtj0La2Sb37o z?gkPGp)S_4^703Rm>l6NZLjuqnOD;26r@P~6Yow|+60w)xyNi$MS#$>D=Ye(|;hpm5AlKy`RSDGwSY*FR=JFg#k!;TLO^+o(iY zGqwvejY#R_dSX7vUp;nn0ks_Y6`bA-7wlEKGgu<=7LC2+AyDc2e4V?=f zV`kKHrTsT|FF8_BdPaM{)j7}@cO%9u$rkea?I))fdS>8b3iH$`PfjDhC|pbD+){fB zr0>+jFPB`3B|N{pVt9=-?cv9fB&E=lSdJj>kKrYv#U$N8W3#G}H9E5q(&kRr)< z7VnfAX2dgD^x$&u%ODY+so#A0A3`aw`x}?^LeLkAYh0g|aDxw{On56`X1Q}6Lo4fO ztcPsYn$z2Jz5(dk5a9u5r3kt+gF{gf7oLru{VvO9dC8hnpngjwOOd8^(Wxhli0K7l z-OH}=2_jAR!EK9qhtX9~pn4sjSe}j%axEIy1y|_7eUK1dW?7d*%+^1qX+7?Qs}l{^ zH5WS%q2~NDKTYv%Q-qwj)gZCFNn+n1&o1r7JQa*dDV7VZN$HR3v7X)&BPfk>dhK=l zZRl7hj^YfqoPe8c?M69Jqje_)8CG-*?q(gw&?)-AuL7^_Y!D=p1%K$1se)-GHAGnU{;K#8~uL! z0qSF+%BTnK>T}bd-$>@z6_SF$+Y$YssuH?e#qt)^v$85x^73x8DdeMzXX7#+TG4x}Fph0s)jq#En3C4K-5peYskSgkMcmOn@`PiE*0A0@t%TGo`;o@a)Z5D?5Ol{~y1 zr50cXSx1)QLAb|?v-ZbWm$z>2J0v5QeU|AWSCLIq(|Z?S6n=L+=bs@6w7QZ;y!N@0 z#5(F`+gqa)Z{6B3QklLPIBk*nDnFPvCcLWU$DR#l-Wn8dH({#KiNGJzvYRoYU6g!@ zs~imNt7;dmXPVex@4!s^fA(nnC-4%)!mM*M|NKFbwYa#boxOw#0bl>cE^nJ^DeSs{ zEtl-g#C7w}eg;6G$CQ>M_6tz4TA}|!$$8Y6*I2f*UE0P$PY#XM zPfGujmBnu0&yJkF`E?$LQRhgTDHMAWJY1^OsAblck{LC-7X>wNS+Y^K7^0nQhBK6#eE zt@AtpsIOa=u9n{m@$rFh2kPr{L(6G8$oKzu+s45+X^eLga;+mOBzL)Fmx0Fw(yBa@ z<}cGNi3=Vmm8ZAyeoJaz6l;D1JMj14D$PUGIhM%5vc!5XsN`P6nNv6nofSxeLO*Le z^1iW+iws)q0(OpV4FM|}K%#u%qHs(!g_Zik@vikVZKgx-oO%3Vnksw`^{&PG%%ot8 zvMjvu=7%*nZ>=M>I1wYwVx_J~DmM56l)3uBEfktU;)A{B>HQYhL(s%ylVyR1{G_4v zzPwWpwDEfX{{5hLD)3UM&?mJ`%T27FAk=8J{jJzq0n_oR?X7(L>}MPq(wPk0kB+Y% zVvObYLdTiT(9m(Oq3uS%j>W8mS) z>f3whYB-d7s%I!G`H`{J4~4C_FWH_?1N5_)XnEX%O7I3Zz{oUA-3J&?( zl?9Na*QjrP|Nh-tor~swpt%>t^J)JPVC?lj|8V2K0mh@Vv+jSZwd&l@wt$Hj!u|et z^Zem(UmshVyk#A4p>XT6kf5N??s!359M10s@a+8&!xBhLNukjoxPJg-fYNw>Hg|mW zb@6CzZ4D^NI}csqzJqiVV51u}eX%Yd8n(B$x90gwr$QHM+;|NE0-q6~KVFj!f2S;4 zU@!%$mohOk3j#CF$_lx{1aQ)iTGsirwtoGpt(Crf{20GiYEl$cVSh)OAnf4d1ak*-wQlws!+b)nRs7|QnQRYEAS|)EZ z>De#)gJ(dneyb|;d2SU>TJ!DES3uO1s~^wR4IE#!g4P1K^!nA$H6NVp`Jhtb>sdU# z9}yl7awotEW`Iss-<$PTbWPPS5W4c%CjiegYo_B#9|ZKn?QH&Sroq5GRay4SIPhh$pCO5heIlYl&|{ zNfYc-XDY<;mR;-k<&NP(Ld_TDF<%Y~$_OgLB&l&kgPG*ssnEwwVi$cAFO_?m-~CH| zV?oeU*){a=P@RJ`R?w72RL`{r!YR2EcIgUK6O!v>R-*D67cFi*luHM>(eAX;91n@jhIV2 zK{r%j5KNLqfHpJwOSdsh?Qi}ABj}|~U93z!v1@(E=1W3|Z>@%zC^K#ZA-E8VgDuZm z8rssJ-p{;b{EnQP@6=d5h{j(cnMscuVtleGZkZ+&2!mQOPStR{dplXa!b}bJnouuU*>2aa6->;6%r1OC>&r8>gq(R!+== zevZu^7nVg6v&+jP?}*MlS_a>Uv0uL_(|C6JW)NC5c6dN9RLB&3o~J+TZ0qW^830lC zk4OuoSX}!kOqaaB@}NO^&IYhc3iGdnr55cqdrAGWPRmq>wq6qK8ZHcs^Oo7E#Hm+E zL+8pt1&<&QP|CgBLfp!g_=_KDZwZdu3ePH!qsS~LeRLQ_>R1|Dp#l*TgS)M&C)HYn ztWtM=VjlYV7c-Lk$eo39vK3SWp~ek`vKm!_nzx;5hI78L9B8|)VxHyCs+XwJQ-T-! zDpbp~>h=KtspoV3TxbN^+Uk$@_`|MUPsFf?c#{4Ryf+>IC(gctXDKhBZCZenBds+P z1s)cS0}b|BkGNB|q-owZW>E{5u>q`J@cLqoHp^e0jnl584hEw3wkmsi7T3pFWR2XS znoI;g2Da*>fZrjr-LQiuSw-YBRr<2f9{a;`j!sge(WC7o{UkA=6KgS#2c_veOc57j2BHuQhS5y7wj591UFIg}Q zC{clwy^uD%(4yc~Ula#nRQDI3Kz|GxX=sO*PSBx+cQG$UpnBH&X4q+&>>s_B;KT8c zUaNllTg|MshxJe%?-76O2j!zB+^m^}EqEtx^Z7wt9FL5{rkv3mvAdUA`=YA`(V_R< zyyk`1ZET7+$`VpOgR_*MZ2S%BN`o*qt{^OgS#8o6)FyQsH7b3*#oTW!aAx-wUf&u$ zetblUvn~Ua?x2C?{tU9i346+MMFgw8DXP+<_hS>ABaD%0y3e-V1_J8C&(R2LP_W+Z zx86l0ky$R!&WJfpkDzaL-@DQ%jW-h&soXP!7+ZfIWzDyu1_d}^Lt&@hgHPvbsQldq ze7+TWt=~YaDYIh;Lx_Ol22}C^I-&BVrDb$;%)@~Q zx@HmYJmtP$0rKT-X2kr*P_IV z>R=c#V1qW)IwMx&FYkzKIp7st{A&jzMRK{IjEcbOb5t=gEE@Kw>O^4l?;51=pkoL` z5xgr~Yxkxy<==(1sJi?T=9P;Iajn0qJ+7_Ut?lYx*qietTn6)Ky35dy#4O*MF!LWl zQZk=Pw4MLb&N2}oin+`{EYjSA`i|!7;(-zMwfeKiF)6e z4`G7xTWm<^%)KOMAlY$P!OQrT#uw~2T@izD5Ec#Q(k~iMpIh_S1m*a>R9VSt$T0x( z>M%d5+I9sVCS{E&mDPHqzK2uQWRTx zO39FV9-SFvN?x&)FoeC8uJ1#UbDHzi)ca7&fpn;meBEcMOZ5FeslGs4HM`mBf={15 zRaRD(mRea`Gs5_hH@1pcM+7Wf3A(&{7ZVw2{9rAwlN~w_k}UyDJn&irzQxwFTIm(* zUy836e?Y6t3W%ac9GXcT_9f_+y`l91doXYj-Q`qZo6<+cC~k`LsDsQocb{oDRNM}h zB*qz!yFXHS&LQqX{&bBzmf4bjH*A8LtiYun@$p8$<1X+(wr#rpIF7wW#uXAWshb&! zBcRoNJ0}W^M3lj5O7@F>lS!dzs`wA?5_^L67wr4l?gK>iK3DZoebm_=8o(Qp$_i5~|*n1k6GsWp3Qa;BlfWUt(k5H7|= zz_4uTkIv6(xsZ4mw-8biJlIOe>kV=Ge2fx!X4uUVsu~PK;i+-wtjp`PdPm2dJ!|d| zfd{3Vx0I*jXlLWuQU>6%x9+ITXa&j!i>x*F?QH4m$ZZw$;^}yDz`r84!2=ey zrKbO@u4|8H>i_>ot|hq?b4f&!!i1%ZOO(0glH^uMD7oK_u_0FOq1;kFgh-l*xnE0U zxs`{%bmxA*((ykC#kUgz=J>v<^}N{zEM($}9&zLCdZ|8|?@ zcbSRN!{crWC$AknCwVH7RIKRnS!JjpAmUF81KPqS|3^QcfBNnQ5YagP?qBM;@KIrP zO1!il%C`XITpC-Pei~G-k@Y=O14L6C^30!xzXvM-A0=eDPNd%D#6($MsI$lDgC)ly z)yyAxtxm3Ua{Dp5i+?Fj7Kw;rPG6)*n+8ov4n4nY`*xa55sso9n>o(`8UyTI+4-17dw0t;L z4b<}bf2TFV6P5q)(S?PDA1~UZkU(F{l!3@bIhND1x__jP3zAMvR99CUG8e9Td98q? z>p$2q5XKS+&TyWd`iGI8qbI`!>WE8*pFAJ7rL?g(p=sd;P?iK|SeA_`@ezlI-?I%+F+)gIZlxwqHMjT3w(T9H`Zm z<*|n@iozeN*xeJ!xCZi6P?WS>{i9NQ?<+s*3`ev6p@eY#%R2dQNCR3k{`ti3IB1AM zuKSy=;tZTHIDN(hwOopA%3e(0`*N<-Ay9P(|GW7g<9ohQHUgpCW3)m9@-_ObKzh#Q z^=NnJ1B&)J;@+)Y2HwiBo+7_*Ha*v1SFTZZJ8Ua`=7>ygwtba0a@u^QFO{qqgaT9w zlqc)3%K>EvSOT7v#LxseE%RMdubJ2F>@;?$jPYi=SWDd~R;>{KOqo3^Lli#Cve%?! zCEAv~ObZ47hEb8F7Co&sFOu9aZ|_tG{%(P^N&g*cuSb~`M~DAxm8@qdDGw)RNhIt# z4nOqXg;BOZkH|13DSiXa^x$Ur%F9JK9@bqi7O$wLxn}8BaG%(u|FvI20pW~rOS}1t zR`qJ@r3_g%h7A-mBKIV$YC=n&+VXGZCMU`d{$P)Ij;ln`a1FlAQj^t9?~(KA&wW*4 z52T)^jl^z{T$32C+VkN6pcGDK?uJnsk91Dewx|w&xC(VXcqC{N^E4 zl6DLDdcsln<@Hc`F{bUm#?-)bEkc;X9iIr7po?F~&CjXb+-I_SXLKDJxB5o<d2iMa}j~iFI+04?whp<@L$k=r)ok z8iz)%ZPa;It!+f|TW3IW4_1zbZ7$ht`hcPaLG^a_*L&E05m_^6idx&7u3>?%MWoRq zE{H+LH)XJ@iU(-=UxUAj{KbK{I~i)m7+%Kq_rUdwhYVbW9l^*OZ_G1V6;z-h0o@Ge zI4D}k>&Q|r2nW-*A2D2EJdVoXc5vX)Aisu3=c?rv@7nZbjnMt37h5AMKW^Fv^|5kw z8H}7A6Q2Mg;m2ZRs)vP=!jx)eq$3hZF~gnlI`6E(SgqQ8Ca^|O;|a;_-ZfR@qT2|@ zCPD3uL}K$K^fRoMHjz}>*G6kLVG^5JnWB0((xP7Hu$kW0=~|`JCeR95vDG~?Mjp2Y zA)nM~;B`H@GdCEN-Kq4n6!t8!C{NuCoJk`?Wue&O9$-C5&!&7o9ysI14kYkKdnwz8 zO;NU|is(LamIG@Rrqx7Budtd{7`FhvHl?B5*w>bHGNQLr0yXJ2HkFbFTu#DLt4g_5lCl-EbCl^d31)GX{lTJyg9lp{JQFN8EU_3~fi?U+ zcsuRlf_e?ob}k+Uh1egWT>`i=6ASn!LoEm5qzZKpTBrAaad@PO3Rol#Ex`aS230F* zUkkkA(h$-u$^O@>f|Hv~O~+z*PRY9TLV(S5rP#FVz(*M$`)hdY93}fPfbXB<;8GR1 z{DPC=B%vzdmnjj`|6per(Twm61j&F-m%d;>A@<#kLeHDcN)u^`l?fQ zmaoqAa(K1}BQ=HPw?qO};r9T*x_ru}rqx;4rtxXln$XsPO+&m=w!1n`3mQIZ44 z5-P-TvQI%dp#!Va|F zN;Es@^lK!7CGr=%^vn}y6TI2ZJ;=KBD zYaZYUHX_C*(|nf`7@%C(gY^UU)kd)sB(f6_>aa z?AE2@HM&I6LlvUGf8xOGn)7q&pMeECKpxa?UHr6{#yV%$lS`)d)#9tWdAHu0D8F0GRd_vzj&In3cXS3)zCk ze?9a&E=Q1CQ4K=~XSnS1a?Rfni}1g4lw9WHgKl5hE1z#U&g#Bs2=sN|yakv6xlPMZ zgu;%3wfPg?479kMyaP)bf5%CAPyGUg8^O@Hu(U%b-Z-8}O|#-QX#@8|o2!+C)5%n% zIb7H%TiAP9;Y~EBI>=yVXEC^{ZNcW<+WRpFv!>2>n{htm*=SeI&P-c3a**9Sxg+N$ z@kNZYsvr3DbM5YgQ*?f^x<}vjBciTk1badb3tB5}{Z4#be=YV;=xX|p()*)knBh*I z0)pXN$vI>7c3LqSh+k2SvE{My&tyK1uQ za4wl+%;kIs{(A>n2DrxC# ziFoi_uD>*U)Wd{miO8oA?VLva&gzQO7rZ93V|+r607)oz_i7F;J)dv1nYb8!L%#G` z2^MOl7z+^8+@RVKsxtmCw$kfX+0Q`-h9JP$?zR%I8W%tvP`SWE*zmZ`upBv;e#Dv3 zD8CtPp$zZT^J(!5Is4qsT|XL9ndn240>T0o?*?@;9K!xm9!FnXU~@6H$*9jucyVVeg=vR<< z0;v|Xo8-9G@IoSOYu$x8Lv2m`a#p2%U_f8He+F)XNwe}q#z&R%w%^dWaR7)&F8;hB zQG@^R$T&LoOKwTMn8@!uy}B87)AuW{d(?tOj)n07fSc(iQ&n($+u8Tq_=c?)E&gF! z+{JmZ2e*ZDo|%9-4b!ub59K`RSJ&V zy%uDW@?y{rbP}Jg=4FA0*rJKo{KOa@Cd#6tb0AB{WCRg9-+===hVUEVU literal 0 HcmV?d00001