From 0736390ff6cef8f3671cdad4af3e0164adbf82ee Mon Sep 17 00:00:00 2001 From: Max Guglielmi Date: Sat, 11 Jul 2015 20:38:36 +1000 Subject: [PATCH] Added selection grid demo, removed old demos --- Gruntfile.js | 10 + demos/{old/demo.html => advanced-grid.html} | 2469 +++++++++-------- demos/old/dev-complex.html | 179 -- demos/old/dev.html | 214 -- demos/old/dist-complex.html | 179 -- demos/old/dist.html | 152 - dist/tablefilter/style/tablefilter.css | 2 +- dist/tablefilter/tf-1.js | 3 - libs/ezEditTable/docs/doc.html | 2049 -------------- libs/ezEditTable/docs/doc_class.html | 154 - libs/ezEditTable/docs/doc_methods.html | 599 ---- libs/ezEditTable/docs/doc_properties.html | 515 ---- libs/ezEditTable/docs/doc_utilities.html | 207 -- libs/ezEditTable/docs/index.html | 473 ---- libs/ezEditTable/docs/samples.html | 1082 -------- libs/ezEditTable/docs/starter.html | 195 -- libs/ezEditTable/ezEditTable-uncompressed.css | 86 - libs/ezEditTable/ezEditTable-uncompressed.js | 2081 -------------- libs/ezEditTable/ezEditTable.css | 7 - libs/ezEditTable/ezEditTable.js | 9 - libs/ezEditTable/themes/bg_mod_cell.png | Bin 234 -> 0 bytes libs/ezEditTable/themes/default/ezDefault.css | 23 - .../themes/default/img/bg_col_header.gif | Bin 875 -> 0 bytes libs/ezEditTable/themes/icn_add.gif | Bin 398 -> 0 bytes libs/ezEditTable/themes/icn_cross.png | Bin 655 -> 0 bytes libs/ezEditTable/themes/icn_del.gif | Bin 330 -> 0 bytes libs/ezEditTable/themes/icn_edit.gif | Bin 342 -> 0 bytes libs/ezEditTable/themes/icn_save.gif | Bin 375 -> 0 bytes libs/ezEditTable/themes/icn_tick.png | Bin 537 -> 0 bytes libs/ezEditTable/themes/skyblue/ezSkyBlue.css | 68 - .../themes/skyblue/img/sky_blue_grid.gif | Bin 554 -> 0 bytes .../advancedGrid/adapterEzEditTable.js | 3 - static/style/tablefilter.css | 2 +- static/templates/advanced-grid.html | 94 + 34 files changed, 1361 insertions(+), 9494 deletions(-) rename demos/{old/demo.html => advanced-grid.html} (95%) delete mode 100644 demos/old/dev-complex.html delete mode 100644 demos/old/dev.html delete mode 100644 demos/old/dist-complex.html delete mode 100644 demos/old/dist.html delete mode 100644 libs/ezEditTable/docs/doc.html delete mode 100644 libs/ezEditTable/docs/doc_class.html delete mode 100644 libs/ezEditTable/docs/doc_methods.html delete mode 100644 libs/ezEditTable/docs/doc_properties.html delete mode 100644 libs/ezEditTable/docs/doc_utilities.html delete mode 100644 libs/ezEditTable/docs/index.html delete mode 100644 libs/ezEditTable/docs/samples.html delete mode 100644 libs/ezEditTable/docs/starter.html delete mode 100644 libs/ezEditTable/ezEditTable-uncompressed.css delete mode 100644 libs/ezEditTable/ezEditTable-uncompressed.js delete mode 100644 libs/ezEditTable/ezEditTable.css delete mode 100644 libs/ezEditTable/ezEditTable.js delete mode 100644 libs/ezEditTable/themes/bg_mod_cell.png delete mode 100644 libs/ezEditTable/themes/default/ezDefault.css delete mode 100644 libs/ezEditTable/themes/default/img/bg_col_header.gif delete mode 100644 libs/ezEditTable/themes/icn_add.gif delete mode 100644 libs/ezEditTable/themes/icn_cross.png delete mode 100644 libs/ezEditTable/themes/icn_del.gif delete mode 100644 libs/ezEditTable/themes/icn_edit.gif delete mode 100644 libs/ezEditTable/themes/icn_save.gif delete mode 100644 libs/ezEditTable/themes/icn_tick.png delete mode 100644 libs/ezEditTable/themes/skyblue/ezSkyBlue.css delete mode 100644 libs/ezEditTable/themes/skyblue/img/sky_blue_grid.gif create mode 100644 static/templates/advanced-grid.html diff --git a/Gruntfile.js b/Gruntfile.js index ac450a71..1635f800 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -79,6 +79,16 @@ module.exports = function (grunt) { },{ pattern: /{VERSION}/ig, replacement: pkg.version + },{ + pattern: /{EZEDITTABLE_LINK}/ig, + replacement: 'ezEditTable' },{ pattern: //ig, replacement: function (match, p1) { diff --git a/demos/old/demo.html b/demos/advanced-grid.html similarity index 95% rename from demos/old/demo.html rename to demos/advanced-grid.html index 8ba81513..790eeb16 100644 --- a/demos/old/demo.html +++ b/demos/advanced-grid.html @@ -1,13 +1,13 @@ - TableFilter v0.0.0 - Demo + TableFilter v0.0.0 - Selection Grid Demo

TableFilter v0.0.0

+

Selection grid demo

+

+ To make the grid rows selectable, you need to import the + ezEditTable plugin, enable the selectable property + and configure the advancedGrid with the ezEditTable + options. +

+

+ Instructions: Double-click on a row on or press enter key to + perform action. Enable multiple rows selection by checking the Multiple + selection checkbox. Keep Ctrl/Cmd or Shift key + pressed to select multiple rows. +


 
 
+
+ + +
+ @@ -41,7 +71,7 @@ - + @@ -52,7 +82,7 @@ - + @@ -63,7 +93,7 @@ - + @@ -74,7 +104,7 @@ - + @@ -85,7 +115,7 @@ - + @@ -96,7 +126,7 @@ - + @@ -107,7 +137,7 @@ - + @@ -118,7 +148,7 @@ - + @@ -129,7 +159,7 @@ - + @@ -140,7 +170,7 @@ - + @@ -151,7 +181,7 @@ - + @@ -162,7 +192,7 @@ - + @@ -173,7 +203,7 @@ - + @@ -184,7 +214,7 @@ - + @@ -195,7 +225,7 @@ - + @@ -206,7 +236,7 @@ - + @@ -217,7 +247,7 @@ - + @@ -228,7 +258,7 @@ - + @@ -239,7 +269,7 @@ - + @@ -250,7 +280,7 @@ - + @@ -261,7 +291,7 @@ - + @@ -272,7 +302,7 @@ - + @@ -283,7 +313,7 @@ - + @@ -294,7 +324,7 @@ - + @@ -305,7 +335,7 @@ - + @@ -316,7 +346,7 @@ - + @@ -327,7 +357,7 @@ - + @@ -338,7 +368,7 @@ - + @@ -349,7 +379,7 @@ - + @@ -360,7 +390,7 @@ - + @@ -371,7 +401,7 @@ - + @@ -382,7 +412,7 @@ - + @@ -393,7 +423,7 @@ - + @@ -404,7 +434,7 @@ - + @@ -415,7 +445,7 @@ - + @@ -426,7 +456,7 @@ - + @@ -437,7 +467,7 @@ - + @@ -448,7 +478,7 @@ - + @@ -459,7 +489,7 @@ - + @@ -470,7 +500,7 @@ - + @@ -481,7 +511,7 @@ - + @@ -492,7 +522,7 @@ - + @@ -503,7 +533,7 @@ - + @@ -514,7 +544,7 @@ - + @@ -525,7 +555,7 @@ - + @@ -536,7 +566,7 @@ - + @@ -547,7 +577,7 @@ - + @@ -558,7 +588,7 @@ - + @@ -569,7 +599,7 @@ - + @@ -580,7 +610,7 @@ - + @@ -591,7 +621,7 @@ - + @@ -602,7 +632,7 @@ - + @@ -613,7 +643,7 @@ - + @@ -624,7 +654,7 @@ - + @@ -635,7 +665,7 @@ - + @@ -646,7 +676,7 @@ - + @@ -657,7 +687,7 @@ - + @@ -668,7 +698,7 @@ - + @@ -679,7 +709,7 @@ - + @@ -690,7 +720,7 @@ - + @@ -701,7 +731,7 @@ - + @@ -712,7 +742,7 @@ - + @@ -723,7 +753,7 @@ - + @@ -734,7 +764,7 @@ - + @@ -745,7 +775,7 @@ - + @@ -756,7 +786,7 @@ - + @@ -767,7 +797,7 @@ - + @@ -778,7 +808,7 @@ - + @@ -789,7 +819,7 @@ - + @@ -800,7 +830,7 @@ - + @@ -811,7 +841,7 @@ - + @@ -822,7 +852,7 @@ - + @@ -833,7 +863,7 @@ - + @@ -844,7 +874,7 @@ - + @@ -855,7 +885,7 @@ - + @@ -866,7 +896,7 @@ - + @@ -877,7 +907,7 @@ - + @@ -888,7 +918,7 @@ - + @@ -899,7 +929,7 @@ - + @@ -910,7 +940,7 @@ - + @@ -921,7 +951,7 @@ - + @@ -932,7 +962,7 @@ - + @@ -943,7 +973,7 @@ - + @@ -954,7 +984,7 @@ - + @@ -965,7 +995,7 @@ - + @@ -976,7 +1006,7 @@ - + @@ -987,7 +1017,7 @@ - + @@ -998,7 +1028,7 @@ - + @@ -1009,7 +1039,7 @@ - + @@ -1020,7 +1050,7 @@ - + @@ -1031,7 +1061,7 @@ - + @@ -1042,7 +1072,7 @@ - + @@ -1053,7 +1083,7 @@ - + @@ -1064,7 +1094,7 @@ - + @@ -1075,7 +1105,7 @@ - + @@ -1086,7 +1116,7 @@ - + @@ -1097,7 +1127,7 @@ - + @@ -1108,7 +1138,7 @@ - + @@ -1119,7 +1149,7 @@ - + @@ -1130,7 +1160,7 @@ - + @@ -1141,7 +1171,7 @@ - + @@ -1152,7 +1182,7 @@ - + @@ -1163,7 +1193,7 @@ - + @@ -1174,7 +1204,7 @@ - + @@ -1185,7 +1215,7 @@ - + @@ -1196,7 +1226,7 @@ - + @@ -1207,7 +1237,7 @@ - + @@ -1218,7 +1248,7 @@ - + @@ -1229,7 +1259,7 @@ - + @@ -1240,7 +1270,7 @@ - + @@ -1251,7 +1281,7 @@ - + @@ -1262,7 +1292,7 @@ - + @@ -1273,7 +1303,7 @@ - + @@ -1284,7 +1314,7 @@ - + @@ -1295,7 +1325,7 @@ - + @@ -1306,7 +1336,7 @@ - + @@ -1317,7 +1347,7 @@ - + @@ -1328,7 +1358,7 @@ - + @@ -1339,7 +1369,7 @@ - + @@ -1350,7 +1380,7 @@ - + @@ -1361,7 +1391,7 @@ - + @@ -1372,7 +1402,7 @@ - + @@ -1383,7 +1413,7 @@ - + @@ -1394,7 +1424,7 @@ - + @@ -1405,7 +1435,7 @@ - + @@ -1416,7 +1446,7 @@ - + @@ -1427,7 +1457,7 @@ - + @@ -1438,7 +1468,7 @@ - + @@ -1449,7 +1479,7 @@ - + @@ -1460,7 +1490,7 @@ - + @@ -1471,7 +1501,7 @@ - + @@ -1482,7 +1512,7 @@ - + @@ -1493,7 +1523,7 @@ - + @@ -1504,7 +1534,7 @@ - + @@ -1515,7 +1545,7 @@ - + @@ -1526,7 +1556,7 @@ - + @@ -1537,7 +1567,7 @@ - + @@ -1548,7 +1578,7 @@ - + @@ -1559,7 +1589,7 @@ - + @@ -1570,7 +1600,7 @@ - + @@ -1581,7 +1611,7 @@ - + @@ -1592,7 +1622,7 @@ - + @@ -1603,7 +1633,7 @@ - + @@ -1614,7 +1644,7 @@ - + @@ -1625,7 +1655,7 @@ - + @@ -1636,7 +1666,7 @@ - + @@ -1647,7 +1677,7 @@ - + @@ -1658,7 +1688,7 @@ - + @@ -1669,7 +1699,7 @@ - + @@ -1680,7 +1710,7 @@ - + @@ -1691,7 +1721,7 @@ - + @@ -1702,7 +1732,7 @@ - + @@ -1713,7 +1743,7 @@ - + @@ -1724,7 +1754,7 @@ - + @@ -1735,7 +1765,7 @@ - + @@ -1746,7 +1776,7 @@ - + @@ -1757,7 +1787,7 @@ - + @@ -1768,7 +1798,7 @@ - + @@ -1779,7 +1809,7 @@ - + @@ -1790,7 +1820,7 @@ - + @@ -1801,7 +1831,7 @@ - + @@ -1812,7 +1842,7 @@ - + @@ -1823,7 +1853,7 @@ - + @@ -1834,7 +1864,7 @@ - + @@ -1845,7 +1875,7 @@ - + @@ -1856,7 +1886,7 @@ - + @@ -1867,7 +1897,7 @@ - + @@ -1878,7 +1908,7 @@ - + @@ -1889,7 +1919,7 @@ - + @@ -1900,7 +1930,7 @@ - + @@ -1911,7 +1941,7 @@ - + @@ -1922,7 +1952,7 @@ - + @@ -1933,7 +1963,7 @@ - + @@ -1944,7 +1974,7 @@ - + @@ -1955,7 +1985,7 @@ - + @@ -1966,7 +1996,7 @@ - + @@ -1977,7 +2007,7 @@ - + @@ -1988,7 +2018,7 @@ - + @@ -1999,7 +2029,7 @@ - + @@ -2010,7 +2040,7 @@ - + @@ -2021,7 +2051,7 @@ - + @@ -2032,7 +2062,7 @@ - + @@ -2043,7 +2073,7 @@ - + @@ -2054,7 +2084,7 @@ - + @@ -2065,7 +2095,7 @@ - + @@ -2076,7 +2106,7 @@ - + @@ -2087,7 +2117,7 @@ - + @@ -2098,7 +2128,7 @@ - + @@ -2109,7 +2139,7 @@ - + @@ -2120,7 +2150,7 @@ - + @@ -2131,7 +2161,7 @@ - + @@ -2142,7 +2172,7 @@ - + @@ -2153,7 +2183,7 @@ - + @@ -2164,7 +2194,7 @@ - + @@ -2175,7 +2205,7 @@ - + @@ -2186,7 +2216,7 @@ - + @@ -2197,7 +2227,7 @@ - + @@ -2208,7 +2238,7 @@ - + @@ -2219,7 +2249,7 @@ - + @@ -2230,7 +2260,7 @@ - + @@ -2241,7 +2271,7 @@ - + @@ -2252,7 +2282,7 @@ - + @@ -2263,7 +2293,7 @@ - + @@ -2274,7 +2304,7 @@ - + @@ -2285,7 +2315,7 @@ - + @@ -2296,7 +2326,7 @@ - + @@ -2307,7 +2337,7 @@ - + @@ -2318,7 +2348,7 @@ - + @@ -2329,7 +2359,7 @@ - + @@ -2340,7 +2370,7 @@ - + @@ -2351,7 +2381,7 @@ - + @@ -2362,7 +2392,7 @@ - + @@ -2373,7 +2403,7 @@ - + @@ -2384,7 +2414,7 @@ - + @@ -2395,7 +2425,7 @@ - + @@ -2406,7 +2436,7 @@ - + @@ -2417,7 +2447,7 @@ - + @@ -2428,7 +2458,7 @@ - + @@ -2439,7 +2469,7 @@ - + @@ -2450,7 +2480,7 @@ - + @@ -2461,7 +2491,7 @@ - + @@ -2472,7 +2502,7 @@ - + @@ -2483,7 +2513,7 @@ - + @@ -2494,7 +2524,7 @@ - + @@ -2505,7 +2535,7 @@ - + @@ -2516,7 +2546,7 @@ - + @@ -2527,7 +2557,7 @@ - + @@ -2538,7 +2568,7 @@ - + @@ -2549,7 +2579,7 @@ - + @@ -2560,7 +2590,7 @@ - + @@ -2571,7 +2601,7 @@ - + @@ -2582,7 +2612,7 @@ - + @@ -2593,7 +2623,7 @@ - + @@ -2604,7 +2634,7 @@ - + @@ -2615,7 +2645,7 @@ - + @@ -2626,7 +2656,7 @@ - + @@ -2637,7 +2667,7 @@ - + @@ -2648,7 +2678,7 @@ - + @@ -2659,7 +2689,7 @@ - + @@ -2670,7 +2700,7 @@ - + @@ -2681,7 +2711,7 @@ - + @@ -2692,7 +2722,7 @@ - + @@ -2703,7 +2733,7 @@ - + @@ -2714,7 +2744,7 @@ - + @@ -2725,7 +2755,7 @@ - + @@ -2736,7 +2766,7 @@ - + @@ -2747,7 +2777,7 @@ - + @@ -2758,7 +2788,7 @@ - + @@ -2769,7 +2799,7 @@ - + @@ -2780,7 +2810,7 @@ - + @@ -2791,7 +2821,7 @@ - + @@ -2802,7 +2832,7 @@ - + @@ -2813,7 +2843,7 @@ - + @@ -2824,7 +2854,7 @@ - + @@ -2835,7 +2865,7 @@ - + @@ -2846,7 +2876,7 @@ - + @@ -2857,7 +2887,7 @@ - + @@ -2868,7 +2898,7 @@ - + @@ -2879,7 +2909,7 @@ - + @@ -2890,7 +2920,7 @@ - + @@ -2901,7 +2931,7 @@ - + @@ -2912,7 +2942,7 @@ - + @@ -2923,7 +2953,7 @@ - + @@ -2934,7 +2964,7 @@ - + @@ -2945,7 +2975,7 @@ - + @@ -2956,7 +2986,7 @@ - + @@ -2967,7 +2997,7 @@ - + @@ -2978,7 +3008,7 @@ - + @@ -2989,7 +3019,7 @@ - + @@ -3000,7 +3030,7 @@ - + @@ -3011,7 +3041,7 @@ - + @@ -3022,7 +3052,7 @@ - + @@ -3033,7 +3063,7 @@ - + @@ -3044,7 +3074,7 @@ - + @@ -3055,7 +3085,7 @@ - + @@ -3066,7 +3096,7 @@ - + @@ -3077,7 +3107,7 @@ - + @@ -3088,7 +3118,7 @@ - + @@ -3099,7 +3129,7 @@ - + @@ -3110,7 +3140,7 @@ - + @@ -3121,7 +3151,7 @@ - + @@ -3132,7 +3162,7 @@ - + @@ -3143,7 +3173,7 @@ - + @@ -3154,7 +3184,7 @@ - + @@ -3165,7 +3195,7 @@ - + @@ -3176,7 +3206,7 @@ - + @@ -3187,7 +3217,7 @@ - + @@ -3198,7 +3228,7 @@ - + @@ -3209,7 +3239,7 @@ - + @@ -3220,7 +3250,7 @@ - + @@ -3231,7 +3261,7 @@ - + @@ -3242,7 +3272,7 @@ - + @@ -3253,7 +3283,7 @@ - + @@ -3264,7 +3294,7 @@ - + @@ -3275,7 +3305,7 @@ - + @@ -3286,7 +3316,7 @@ - + @@ -3297,7 +3327,7 @@ - + @@ -3308,7 +3338,7 @@ - + @@ -3319,7 +3349,7 @@ - + @@ -3330,7 +3360,7 @@ - + @@ -3341,7 +3371,7 @@ - + @@ -3352,7 +3382,7 @@ - + @@ -3363,7 +3393,7 @@ - + @@ -3374,7 +3404,7 @@ - + @@ -3385,7 +3415,7 @@ - + @@ -3396,7 +3426,7 @@ - + @@ -3407,7 +3437,7 @@ - + @@ -3418,7 +3448,7 @@ - + @@ -3429,7 +3459,7 @@ - + @@ -3440,7 +3470,7 @@ - + @@ -3451,7 +3481,7 @@ - + @@ -3462,7 +3492,7 @@ - + @@ -3473,7 +3503,7 @@ - + @@ -3484,7 +3514,7 @@ - + @@ -3495,7 +3525,7 @@ - + @@ -3506,7 +3536,7 @@ - + @@ -3517,7 +3547,7 @@ - + @@ -3528,7 +3558,7 @@ - + @@ -3539,7 +3569,7 @@ - + @@ -3550,7 +3580,7 @@ - + @@ -3561,7 +3591,7 @@ - + @@ -3572,7 +3602,7 @@ - + @@ -3583,7 +3613,7 @@ - + @@ -3594,7 +3624,7 @@ - + @@ -3605,7 +3635,7 @@ - + @@ -3616,7 +3646,7 @@ - + @@ -3627,7 +3657,7 @@ - + @@ -3638,7 +3668,7 @@ - + @@ -3649,7 +3679,7 @@ - + @@ -3660,7 +3690,7 @@ - + @@ -3671,7 +3701,7 @@ - + @@ -3682,7 +3712,7 @@ - + @@ -3693,7 +3723,7 @@ - + @@ -3704,7 +3734,7 @@ - + @@ -3715,7 +3745,7 @@ - + @@ -3726,7 +3756,7 @@ - + @@ -3737,7 +3767,7 @@ - + @@ -3748,7 +3778,7 @@ - + @@ -3759,7 +3789,7 @@ - + @@ -3770,7 +3800,7 @@ - + @@ -3781,7 +3811,7 @@ - + @@ -3792,7 +3822,7 @@ - + @@ -3803,7 +3833,7 @@ - + @@ -3814,7 +3844,7 @@ - + @@ -3825,7 +3855,7 @@ - + @@ -3836,7 +3866,7 @@ - + @@ -3847,7 +3877,7 @@ - + @@ -3858,7 +3888,7 @@ - + @@ -3869,7 +3899,7 @@ - + @@ -3880,7 +3910,7 @@ - + @@ -3891,7 +3921,7 @@ - + @@ -3902,7 +3932,7 @@ - + @@ -3913,7 +3943,7 @@ - + @@ -3924,7 +3954,7 @@ - + @@ -3935,7 +3965,7 @@ - + @@ -3946,7 +3976,7 @@ - + @@ -3957,7 +3987,7 @@ - + @@ -3968,7 +3998,7 @@ - + @@ -3979,7 +4009,7 @@ - + @@ -3990,7 +4020,7 @@ - + @@ -4001,7 +4031,7 @@ - + @@ -4012,7 +4042,7 @@ - + @@ -4023,7 +4053,7 @@ - + @@ -4034,7 +4064,7 @@ - + @@ -4045,7 +4075,7 @@ - + @@ -4056,7 +4086,7 @@ - + @@ -4067,7 +4097,7 @@ - + @@ -4078,7 +4108,7 @@ - + @@ -4089,7 +4119,7 @@ - + @@ -4100,7 +4130,7 @@ - + @@ -4111,7 +4141,7 @@ - + @@ -4122,7 +4152,7 @@ - + @@ -4133,7 +4163,7 @@ - + @@ -4144,7 +4174,7 @@ - + @@ -4155,7 +4185,7 @@ - + @@ -4166,7 +4196,7 @@ - + @@ -4177,7 +4207,7 @@ - + @@ -4188,7 +4218,7 @@ - + @@ -4199,7 +4229,7 @@ - + @@ -4210,7 +4240,7 @@ - + @@ -4221,7 +4251,7 @@ - + @@ -4232,7 +4262,7 @@ - + @@ -4243,7 +4273,7 @@ - + @@ -4254,7 +4284,7 @@ - + @@ -4265,7 +4295,7 @@ - + @@ -4276,7 +4306,7 @@ - + @@ -4287,7 +4317,7 @@ - + @@ -4298,7 +4328,7 @@ - + @@ -4309,7 +4339,7 @@ - + @@ -4320,7 +4350,7 @@ - + @@ -4331,7 +4361,7 @@ - + @@ -4342,7 +4372,7 @@ - + @@ -4353,7 +4383,7 @@ - + @@ -4364,7 +4394,7 @@ - + @@ -4375,7 +4405,7 @@ - + @@ -4386,7 +4416,7 @@ - + @@ -4397,7 +4427,7 @@ - + @@ -4408,7 +4438,7 @@ - + @@ -4419,7 +4449,7 @@ - + @@ -4430,7 +4460,7 @@ - + @@ -4441,7 +4471,7 @@ - + @@ -4452,7 +4482,7 @@ - + @@ -4463,7 +4493,7 @@ - + @@ -4474,7 +4504,7 @@ - + @@ -4485,7 +4515,7 @@ - + @@ -4496,7 +4526,7 @@ - + @@ -4507,7 +4537,7 @@ - + @@ -4518,7 +4548,7 @@ - + @@ -4529,7 +4559,7 @@ - + @@ -4540,7 +4570,7 @@ - + @@ -4551,7 +4581,7 @@ - + @@ -4562,7 +4592,7 @@ - + @@ -4573,7 +4603,7 @@ - + @@ -4584,7 +4614,7 @@ - + @@ -4595,7 +4625,7 @@ - + @@ -4606,7 +4636,7 @@ - + @@ -4617,7 +4647,7 @@ - + @@ -4628,7 +4658,7 @@ - + @@ -4639,7 +4669,7 @@ - + @@ -4650,7 +4680,7 @@ - + @@ -4661,7 +4691,7 @@ - + @@ -4672,7 +4702,7 @@ - + @@ -4683,7 +4713,7 @@ - + @@ -4694,7 +4724,7 @@ - + @@ -4705,7 +4735,7 @@ - + @@ -4716,7 +4746,7 @@ - + @@ -4727,7 +4757,7 @@ - + @@ -4738,7 +4768,7 @@ - + @@ -4749,7 +4779,7 @@ - + @@ -4760,7 +4790,7 @@ - + @@ -4771,7 +4801,7 @@ - + @@ -4782,7 +4812,7 @@ - + @@ -4793,7 +4823,7 @@ - + @@ -4804,7 +4834,7 @@ - + @@ -4815,7 +4845,7 @@ - + @@ -4826,7 +4856,7 @@ - + @@ -4837,7 +4867,7 @@ - + @@ -4848,7 +4878,7 @@ - + @@ -4859,7 +4889,7 @@ - + @@ -4870,7 +4900,7 @@ - + @@ -4881,7 +4911,7 @@ - + @@ -4892,7 +4922,7 @@ - + @@ -4903,7 +4933,7 @@ - + @@ -4914,7 +4944,7 @@ - + @@ -4925,7 +4955,7 @@ - + @@ -4936,7 +4966,7 @@ - + @@ -4947,7 +4977,7 @@ - + @@ -4958,7 +4988,7 @@ - + @@ -4969,7 +4999,7 @@ - + @@ -4980,7 +5010,7 @@ - + @@ -4991,7 +5021,7 @@ - + @@ -5002,7 +5032,7 @@ - + @@ -5013,7 +5043,7 @@ - + @@ -5024,7 +5054,7 @@ - + @@ -5035,7 +5065,7 @@ - + @@ -5046,7 +5076,7 @@ - + @@ -5057,7 +5087,7 @@ - + @@ -5068,7 +5098,7 @@ - + @@ -5079,7 +5109,7 @@ - + @@ -5090,7 +5120,7 @@ - + @@ -5101,7 +5131,7 @@ - + @@ -5112,7 +5142,7 @@ - + @@ -5123,7 +5153,7 @@ - + @@ -5134,7 +5164,7 @@ - + @@ -5145,7 +5175,7 @@ - + @@ -5156,7 +5186,7 @@ - + @@ -5167,7 +5197,7 @@ - + @@ -5178,7 +5208,7 @@ - + @@ -5189,7 +5219,7 @@ - + @@ -5200,7 +5230,7 @@ - + @@ -5211,7 +5241,7 @@ - + @@ -5222,7 +5252,7 @@ - + @@ -5233,7 +5263,7 @@ - + @@ -5244,7 +5274,7 @@ - + @@ -5255,7 +5285,7 @@ - + @@ -5266,7 +5296,7 @@ - + @@ -5277,7 +5307,7 @@ - + @@ -5288,7 +5318,7 @@ - + @@ -5299,7 +5329,7 @@ - + @@ -5310,7 +5340,7 @@ - + @@ -5321,7 +5351,7 @@ - + @@ -5332,7 +5362,7 @@ - + @@ -5343,7 +5373,7 @@ - + @@ -5354,7 +5384,7 @@ - + @@ -5365,7 +5395,7 @@ - + @@ -5376,7 +5406,7 @@ - + @@ -5387,7 +5417,7 @@ - + @@ -5398,7 +5428,7 @@ - + @@ -5409,7 +5439,7 @@ - + @@ -5420,7 +5450,7 @@ - + @@ -5431,7 +5461,7 @@ - + @@ -5442,7 +5472,7 @@ - + @@ -5453,7 +5483,7 @@ - + @@ -5464,7 +5494,7 @@ - + @@ -5475,7 +5505,7 @@ - + @@ -5486,7 +5516,7 @@ - + @@ -5497,7 +5527,7 @@ - + @@ -5508,7 +5538,7 @@ - + @@ -5519,7 +5549,7 @@ - + @@ -5530,7 +5560,7 @@ - + @@ -5541,7 +5571,7 @@ - + @@ -5552,7 +5582,7 @@ - + @@ -5563,7 +5593,7 @@ - + @@ -5574,7 +5604,7 @@ - + @@ -5585,7 +5615,7 @@ - + @@ -5596,7 +5626,7 @@ - + @@ -5607,7 +5637,7 @@ - + @@ -5618,7 +5648,7 @@ - + @@ -5629,7 +5659,7 @@ - + @@ -5640,7 +5670,7 @@ - + @@ -5651,7 +5681,7 @@ - + @@ -5662,7 +5692,7 @@ - + @@ -5673,7 +5703,7 @@ - + @@ -5684,7 +5714,7 @@ - + @@ -5695,7 +5725,7 @@ - + @@ -5706,7 +5736,7 @@ - + @@ -5717,7 +5747,7 @@ - + @@ -5728,7 +5758,7 @@ - + @@ -5739,7 +5769,7 @@ - + @@ -5750,7 +5780,7 @@ - + @@ -5761,7 +5791,7 @@ - + @@ -5772,7 +5802,7 @@ - + @@ -5783,7 +5813,7 @@ - + @@ -5794,7 +5824,7 @@ - + @@ -5805,7 +5835,7 @@ - + @@ -5816,7 +5846,7 @@ - + @@ -5827,7 +5857,7 @@ - + @@ -5838,7 +5868,7 @@ - + @@ -5849,7 +5879,7 @@ - + @@ -5860,7 +5890,7 @@ - + @@ -5871,7 +5901,7 @@ - + @@ -5882,7 +5912,7 @@ - + @@ -5893,7 +5923,7 @@ - + @@ -5904,7 +5934,7 @@ - + @@ -5915,7 +5945,7 @@ - + @@ -5926,7 +5956,7 @@ - + @@ -5937,7 +5967,7 @@ - + @@ -5948,7 +5978,7 @@ - + @@ -5959,7 +5989,7 @@ - + @@ -5970,7 +6000,7 @@ - + @@ -5981,7 +6011,7 @@ - + @@ -5992,7 +6022,7 @@ - + @@ -6003,7 +6033,7 @@ - + @@ -6014,7 +6044,7 @@ - + @@ -6025,7 +6055,7 @@ - + @@ -6036,7 +6066,7 @@ - + @@ -6047,7 +6077,7 @@ - + @@ -6058,7 +6088,7 @@ - + @@ -6069,7 +6099,7 @@ - + @@ -6080,7 +6110,7 @@ - + @@ -6091,7 +6121,7 @@ - + @@ -6102,7 +6132,7 @@ - + @@ -6113,7 +6143,7 @@ - + @@ -6124,7 +6154,7 @@ - + @@ -6135,7 +6165,7 @@ - + @@ -6146,7 +6176,7 @@ - + @@ -6157,7 +6187,7 @@ - + @@ -6168,7 +6198,7 @@ - + @@ -6179,7 +6209,7 @@ - + @@ -6190,7 +6220,7 @@ - + @@ -6201,7 +6231,7 @@ - + @@ -6212,7 +6242,7 @@ - + @@ -6223,7 +6253,7 @@ - + @@ -6234,7 +6264,7 @@ - + @@ -6245,7 +6275,7 @@ - + @@ -6256,7 +6286,7 @@ - + @@ -6267,7 +6297,7 @@ - + @@ -6278,7 +6308,7 @@ - + @@ -6289,7 +6319,7 @@ - + @@ -6300,7 +6330,7 @@ - + @@ -6311,7 +6341,7 @@ - + @@ -6322,7 +6352,7 @@ - + @@ -6333,7 +6363,7 @@ - + @@ -6344,7 +6374,7 @@ - + @@ -6355,7 +6385,7 @@ - + @@ -6366,7 +6396,7 @@ - + @@ -6377,7 +6407,7 @@ - + @@ -6388,7 +6418,7 @@ - + @@ -6399,7 +6429,7 @@ - + @@ -6410,7 +6440,7 @@ - + @@ -6421,7 +6451,7 @@ - + @@ -6432,7 +6462,7 @@ - + @@ -6443,7 +6473,7 @@ - + @@ -6454,7 +6484,7 @@ - + @@ -6465,7 +6495,7 @@ - + @@ -6476,7 +6506,7 @@ - + @@ -6487,7 +6517,7 @@ - + @@ -6498,7 +6528,7 @@ - + @@ -6509,7 +6539,7 @@ - + @@ -6520,7 +6550,7 @@ - + @@ -6531,7 +6561,7 @@ - + @@ -6542,7 +6572,7 @@ - + @@ -6553,7 +6583,7 @@ - + @@ -6564,7 +6594,7 @@ - + @@ -6575,7 +6605,7 @@ - + @@ -6586,7 +6616,7 @@ - + @@ -6597,7 +6627,7 @@ - + @@ -6608,7 +6638,7 @@ - + @@ -6619,7 +6649,7 @@ - + @@ -6630,7 +6660,7 @@ - + @@ -6641,7 +6671,7 @@ - + @@ -6652,7 +6682,7 @@ - + @@ -6663,7 +6693,7 @@ - + @@ -6674,7 +6704,7 @@ - + @@ -6685,7 +6715,7 @@ - + @@ -6696,7 +6726,7 @@ - + @@ -6707,7 +6737,7 @@ - + @@ -6718,7 +6748,7 @@ - + @@ -6729,7 +6759,7 @@ - + @@ -6740,7 +6770,7 @@ - + @@ -6751,7 +6781,7 @@ - + @@ -6762,7 +6792,7 @@ - + @@ -6773,7 +6803,7 @@ - + @@ -6784,7 +6814,7 @@ - + @@ -6795,7 +6825,7 @@ - + @@ -6806,7 +6836,7 @@ - + @@ -6817,7 +6847,7 @@ - + @@ -6828,7 +6858,7 @@ - + @@ -6839,7 +6869,7 @@ - + @@ -6850,7 +6880,7 @@ - + @@ -6861,7 +6891,7 @@ - + @@ -6872,7 +6902,7 @@ - + @@ -6883,7 +6913,7 @@ - + @@ -6894,7 +6924,7 @@ - + @@ -6905,7 +6935,7 @@ - + @@ -6916,7 +6946,7 @@ - + @@ -6927,7 +6957,7 @@ - + @@ -6938,7 +6968,7 @@ - + @@ -6949,7 +6979,7 @@ - + @@ -6960,7 +6990,7 @@ - + @@ -6971,7 +7001,7 @@ - + @@ -6982,7 +7012,7 @@ - + @@ -6993,7 +7023,7 @@ - + @@ -7004,7 +7034,7 @@ - + @@ -7015,7 +7045,7 @@ - + @@ -7026,7 +7056,7 @@ - + @@ -7037,7 +7067,7 @@ - + @@ -7048,7 +7078,7 @@ - + @@ -7059,7 +7089,7 @@ - + @@ -7070,7 +7100,7 @@ - + @@ -7081,7 +7111,7 @@ - + @@ -7092,7 +7122,7 @@ - + @@ -7103,7 +7133,7 @@ - + @@ -7114,7 +7144,7 @@ - + @@ -7125,7 +7155,7 @@ - + @@ -7136,7 +7166,7 @@ - + @@ -7147,7 +7177,7 @@ - + @@ -7158,7 +7188,7 @@ - + @@ -7169,7 +7199,7 @@ - + @@ -7180,7 +7210,7 @@ - + @@ -7191,7 +7221,7 @@ - + @@ -7202,7 +7232,7 @@ - + @@ -7213,7 +7243,7 @@ - + @@ -7224,7 +7254,7 @@ - + @@ -7235,7 +7265,7 @@ - + @@ -7246,7 +7276,7 @@ - + @@ -7257,7 +7287,7 @@ - + @@ -7268,7 +7298,7 @@ - + @@ -7279,7 +7309,7 @@ - + @@ -7290,7 +7320,7 @@ - + @@ -7301,7 +7331,7 @@ - + @@ -7312,7 +7342,7 @@ - + @@ -7323,7 +7353,7 @@ - + @@ -7334,7 +7364,7 @@ - + @@ -7345,7 +7375,7 @@ - + @@ -7356,7 +7386,7 @@ - + @@ -7367,7 +7397,7 @@ - + @@ -7378,7 +7408,7 @@ - + @@ -7389,7 +7419,7 @@ - + @@ -7400,7 +7430,7 @@ - + @@ -7411,7 +7441,7 @@ - + @@ -7422,7 +7452,7 @@ - + @@ -7433,7 +7463,7 @@ - + @@ -7444,7 +7474,7 @@ - + @@ -7455,7 +7485,7 @@ - + @@ -7466,7 +7496,7 @@ - + @@ -7477,7 +7507,7 @@ - + @@ -7488,7 +7518,7 @@ - + @@ -7499,7 +7529,7 @@ - + @@ -7510,7 +7540,7 @@ - + @@ -7521,7 +7551,7 @@ - + @@ -7532,7 +7562,7 @@ - + @@ -7543,7 +7573,7 @@ - + @@ -7554,7 +7584,7 @@ - + @@ -7565,7 +7595,7 @@ - + @@ -7576,7 +7606,7 @@ - + @@ -7587,7 +7617,7 @@ - + @@ -7598,7 +7628,7 @@ - + @@ -7609,7 +7639,7 @@ - + @@ -7620,7 +7650,7 @@ - + @@ -7631,7 +7661,7 @@ - + @@ -7642,7 +7672,7 @@ - + @@ -7653,7 +7683,7 @@ - + @@ -7664,7 +7694,7 @@ - + @@ -7675,7 +7705,7 @@ - + @@ -7686,7 +7716,7 @@ - + @@ -7697,7 +7727,7 @@ - + @@ -7708,7 +7738,7 @@ - + @@ -7719,7 +7749,7 @@ - + @@ -7730,7 +7760,7 @@ - + @@ -7741,7 +7771,7 @@ - + @@ -7752,7 +7782,7 @@ - + @@ -7763,7 +7793,7 @@ - + @@ -7774,7 +7804,7 @@ - + @@ -7785,7 +7815,7 @@ - + @@ -7796,7 +7826,7 @@ - + @@ -7807,7 +7837,7 @@ - + @@ -7818,7 +7848,7 @@ - + @@ -7829,7 +7859,7 @@ - + @@ -7840,7 +7870,7 @@ - + @@ -7851,7 +7881,7 @@ - + @@ -7862,7 +7892,7 @@ - + @@ -7873,7 +7903,7 @@ - + @@ -7884,7 +7914,7 @@ - + @@ -7895,7 +7925,7 @@ - + @@ -7906,7 +7936,7 @@ - + @@ -7917,7 +7947,7 @@ - + @@ -7928,7 +7958,7 @@ - + @@ -7939,7 +7969,7 @@ - + @@ -7950,7 +7980,7 @@ - + @@ -7961,7 +7991,7 @@ - + @@ -7972,7 +8002,7 @@ - + @@ -7983,7 +8013,7 @@ - + @@ -7994,7 +8024,7 @@ - + @@ -8005,7 +8035,7 @@ - + @@ -8016,7 +8046,7 @@ - + @@ -8027,7 +8057,7 @@ - + @@ -8038,7 +8068,7 @@ - + @@ -8049,7 +8079,7 @@ - + @@ -8060,7 +8090,7 @@ - + @@ -8071,7 +8101,7 @@ - + @@ -8082,7 +8112,7 @@ - + @@ -8093,7 +8123,7 @@ - + @@ -8104,7 +8134,7 @@ - + @@ -8115,7 +8145,7 @@ - + @@ -8126,7 +8156,7 @@ - + @@ -8137,7 +8167,7 @@ - + @@ -8148,7 +8178,7 @@ - + @@ -8159,7 +8189,7 @@ - + @@ -8170,7 +8200,7 @@ - + @@ -8181,7 +8211,7 @@ - + @@ -8192,7 +8222,7 @@ - + @@ -8203,7 +8233,7 @@ - + @@ -8214,7 +8244,7 @@ - + @@ -8225,7 +8255,7 @@ - + @@ -8236,7 +8266,7 @@ - + @@ -8247,7 +8277,7 @@ - + @@ -8258,7 +8288,7 @@ - + @@ -8269,7 +8299,7 @@ - + @@ -8280,7 +8310,7 @@ - + @@ -8291,7 +8321,7 @@ - + @@ -8302,7 +8332,7 @@ - + @@ -8313,7 +8343,7 @@ - + @@ -8324,7 +8354,7 @@ - + @@ -8335,7 +8365,7 @@ - + @@ -8346,7 +8376,7 @@ - + @@ -8357,7 +8387,7 @@ - + @@ -8368,7 +8398,7 @@ - + @@ -8379,7 +8409,7 @@ - + @@ -8390,7 +8420,7 @@ - + @@ -8401,7 +8431,7 @@ - + @@ -8412,7 +8442,7 @@ - + @@ -8423,7 +8453,7 @@ - + @@ -8434,7 +8464,7 @@ - + @@ -8445,7 +8475,7 @@ - + @@ -8456,7 +8486,7 @@ - + @@ -8467,7 +8497,7 @@ - + @@ -8478,7 +8508,7 @@ - + @@ -8489,7 +8519,7 @@ - + @@ -8500,7 +8530,7 @@ - + @@ -8511,7 +8541,7 @@ - + @@ -8522,7 +8552,7 @@ - + @@ -8533,7 +8563,7 @@ - + @@ -8544,7 +8574,7 @@ - + @@ -8555,7 +8585,7 @@ - + @@ -8566,7 +8596,7 @@ - + @@ -8577,7 +8607,7 @@ - + @@ -8588,7 +8618,7 @@ - + @@ -8599,7 +8629,7 @@ - + @@ -8610,7 +8640,7 @@ - + @@ -8621,7 +8651,7 @@ - + @@ -8632,7 +8662,7 @@ - + @@ -8643,7 +8673,7 @@ - + @@ -8654,7 +8684,7 @@ - + @@ -8665,7 +8695,7 @@ - + @@ -8676,7 +8706,7 @@ - + @@ -8687,7 +8717,7 @@ - + @@ -8698,7 +8728,7 @@ - + @@ -8709,7 +8739,7 @@ - + @@ -8720,7 +8750,7 @@ - + @@ -8731,7 +8761,7 @@ - + @@ -8742,7 +8772,7 @@ - + @@ -8753,7 +8783,7 @@ - + @@ -8764,7 +8794,7 @@ - + @@ -8775,7 +8805,7 @@ - + @@ -8786,7 +8816,7 @@ - + @@ -8797,7 +8827,7 @@ - + @@ -8808,7 +8838,7 @@ - + @@ -8819,7 +8849,7 @@ - + @@ -8830,7 +8860,7 @@ - + @@ -8841,7 +8871,7 @@ - + @@ -8852,7 +8882,7 @@ - + @@ -8863,7 +8893,7 @@ - + @@ -8874,7 +8904,7 @@ - + @@ -8885,7 +8915,7 @@ - + @@ -8896,7 +8926,7 @@ - + @@ -8907,7 +8937,7 @@ - + @@ -8918,7 +8948,7 @@ - + @@ -8929,7 +8959,7 @@ - + @@ -8940,7 +8970,7 @@ - + @@ -8951,7 +8981,7 @@ - + @@ -8962,7 +8992,7 @@ - + @@ -8973,7 +9003,7 @@ - + @@ -8984,7 +9014,7 @@ - + @@ -8995,7 +9025,7 @@ - + @@ -9006,7 +9036,7 @@ - + @@ -9017,7 +9047,7 @@ - + @@ -9028,7 +9058,7 @@ - + @@ -9039,7 +9069,7 @@ - + @@ -9050,7 +9080,7 @@ - + @@ -9061,7 +9091,7 @@ - + @@ -9072,7 +9102,7 @@ - + @@ -9083,7 +9113,7 @@ - + @@ -9094,7 +9124,7 @@ - + @@ -9105,7 +9135,7 @@ - + @@ -9116,7 +9146,7 @@ - + @@ -9127,7 +9157,7 @@ - + @@ -9138,7 +9168,7 @@ - + @@ -9149,7 +9179,7 @@ - + @@ -9160,7 +9190,7 @@ - + @@ -9171,7 +9201,7 @@ - + @@ -9182,7 +9212,7 @@ - + @@ -9193,7 +9223,7 @@ - + @@ -9204,7 +9234,7 @@ - + @@ -9215,7 +9245,7 @@ - + @@ -9226,7 +9256,7 @@ - + @@ -9237,7 +9267,7 @@ - + @@ -9248,7 +9278,7 @@ - + @@ -9259,7 +9289,7 @@ - + @@ -9270,7 +9300,7 @@ - + @@ -9281,7 +9311,7 @@ - + @@ -9292,7 +9322,7 @@ - + @@ -9303,7 +9333,7 @@ - + @@ -9314,7 +9344,7 @@ - + @@ -9325,7 +9355,7 @@ - + @@ -9336,7 +9366,7 @@ - + @@ -9347,7 +9377,7 @@ - + @@ -9358,7 +9388,7 @@ - + @@ -9369,7 +9399,7 @@ - + @@ -9380,7 +9410,7 @@ - + @@ -9391,7 +9421,7 @@ - + @@ -9402,7 +9432,7 @@ - + @@ -9413,7 +9443,7 @@ - + @@ -9424,7 +9454,7 @@ - + @@ -9435,7 +9465,7 @@ - + @@ -9446,7 +9476,7 @@ - + @@ -9457,7 +9487,7 @@ - + @@ -9468,7 +9498,7 @@ - + @@ -9479,7 +9509,7 @@ - + @@ -9490,7 +9520,7 @@ - + @@ -9501,7 +9531,7 @@ - + @@ -9512,7 +9542,7 @@ - + @@ -9523,7 +9553,7 @@ - + @@ -9534,7 +9564,7 @@ - + @@ -9545,7 +9575,7 @@ - + @@ -9556,7 +9586,7 @@ - + @@ -9567,7 +9597,7 @@ - + @@ -9578,7 +9608,7 @@ - + @@ -9589,7 +9619,7 @@ - + @@ -9600,7 +9630,7 @@ - + @@ -9611,7 +9641,7 @@ - + @@ -9622,7 +9652,7 @@ - + @@ -9633,7 +9663,7 @@ - + @@ -9644,7 +9674,7 @@ - + @@ -9655,7 +9685,7 @@ - + @@ -9666,7 +9696,7 @@ - + @@ -9677,7 +9707,7 @@ - + @@ -9688,7 +9718,7 @@ - + @@ -9699,7 +9729,7 @@ - + @@ -9710,7 +9740,7 @@ - + @@ -9721,7 +9751,7 @@ - + @@ -9732,7 +9762,7 @@ - + @@ -9743,7 +9773,7 @@ - + @@ -9754,7 +9784,7 @@ - + @@ -9765,7 +9795,7 @@ - + @@ -9776,7 +9806,7 @@ - + @@ -9787,7 +9817,7 @@ - + @@ -9798,7 +9828,7 @@ - + @@ -9809,7 +9839,7 @@ - + @@ -9820,7 +9850,7 @@ - + @@ -9831,7 +9861,7 @@ - + @@ -9842,7 +9872,7 @@ - + @@ -9853,7 +9883,7 @@ - + @@ -9864,7 +9894,7 @@ - + @@ -9875,7 +9905,7 @@ - + @@ -9886,7 +9916,7 @@ - + @@ -9897,7 +9927,7 @@ - + @@ -9908,7 +9938,7 @@ - + @@ -9919,7 +9949,7 @@ - + @@ -9930,7 +9960,7 @@ - + @@ -9941,7 +9971,7 @@ - + @@ -9952,7 +9982,7 @@ - + @@ -9963,7 +9993,7 @@ - + @@ -9974,7 +10004,7 @@ - + @@ -9985,7 +10015,7 @@ - + @@ -9996,7 +10026,7 @@ - + @@ -10007,7 +10037,7 @@ - + @@ -10018,7 +10048,7 @@ - + @@ -10029,7 +10059,7 @@ - + @@ -10040,7 +10070,7 @@ - + @@ -10051,7 +10081,7 @@ - + @@ -10062,7 +10092,7 @@ - + @@ -10073,7 +10103,7 @@ - + @@ -10084,7 +10114,7 @@ - + @@ -10095,7 +10125,7 @@ - + @@ -10106,7 +10136,7 @@ - + @@ -10117,7 +10147,7 @@ - + @@ -10128,7 +10158,7 @@ - + @@ -10139,7 +10169,7 @@ - + @@ -10150,7 +10180,7 @@ - + @@ -10161,7 +10191,7 @@ - + @@ -10172,7 +10202,7 @@ - + @@ -10183,7 +10213,7 @@ - + @@ -10194,7 +10224,7 @@ - + @@ -10205,7 +10235,7 @@ - + @@ -10216,7 +10246,7 @@ - + @@ -10227,7 +10257,7 @@ - + @@ -10238,7 +10268,7 @@ - + @@ -10249,7 +10279,7 @@ - + @@ -10260,7 +10290,7 @@ - + @@ -10271,7 +10301,7 @@ - + @@ -10282,7 +10312,7 @@ - + @@ -10293,7 +10323,7 @@ - + @@ -10304,7 +10334,7 @@ - + @@ -10315,7 +10345,7 @@ - + @@ -10326,7 +10356,7 @@ - + @@ -10337,7 +10367,7 @@ - + @@ -10348,7 +10378,7 @@ - + @@ -10359,7 +10389,7 @@ - + @@ -10370,7 +10400,7 @@ - + @@ -10381,7 +10411,7 @@ - + @@ -10392,7 +10422,7 @@ - + @@ -10403,7 +10433,7 @@ - + @@ -10414,7 +10444,7 @@ - + @@ -10425,7 +10455,7 @@ - + @@ -10436,7 +10466,7 @@ - + @@ -10447,7 +10477,7 @@ - + @@ -10458,7 +10488,7 @@ - + @@ -10469,7 +10499,7 @@ - + @@ -10480,7 +10510,7 @@ - + @@ -10491,7 +10521,7 @@ - + @@ -10502,7 +10532,7 @@ - + @@ -10513,7 +10543,7 @@ - + @@ -10524,7 +10554,7 @@ - + @@ -10535,7 +10565,7 @@ - + @@ -10546,7 +10576,7 @@ - + @@ -10557,7 +10587,7 @@ - + @@ -10568,7 +10598,7 @@ - + @@ -10579,7 +10609,7 @@ - + @@ -10590,7 +10620,7 @@ - + @@ -10601,7 +10631,7 @@ - + @@ -10612,7 +10642,7 @@ - + @@ -10623,7 +10653,7 @@ - + @@ -10634,7 +10664,7 @@ - + @@ -10645,7 +10675,7 @@ - + @@ -10656,7 +10686,7 @@ - + @@ -10667,7 +10697,7 @@ - + @@ -10678,7 +10708,7 @@ - + @@ -10689,7 +10719,7 @@ - + @@ -10700,7 +10730,7 @@ - + @@ -10711,7 +10741,7 @@ - + @@ -10722,7 +10752,7 @@ - + @@ -10733,7 +10763,7 @@ - + @@ -10744,7 +10774,7 @@ - + @@ -10755,7 +10785,7 @@ - + @@ -10766,7 +10796,7 @@ - + @@ -10777,7 +10807,7 @@ - + @@ -10788,7 +10818,7 @@ - + @@ -10799,7 +10829,7 @@ - + @@ -10810,7 +10840,7 @@ - + @@ -10821,7 +10851,7 @@ - + @@ -10832,7 +10862,7 @@ - + @@ -10843,7 +10873,7 @@ - + @@ -10854,7 +10884,7 @@ - + @@ -10865,7 +10895,7 @@ - + @@ -10876,7 +10906,7 @@ - + @@ -10887,7 +10917,7 @@ - + @@ -10898,7 +10928,7 @@ - + @@ -10909,7 +10939,7 @@ - + @@ -10920,7 +10950,7 @@ - + @@ -10931,7 +10961,7 @@ - + @@ -10942,7 +10972,7 @@ - + @@ -10953,7 +10983,7 @@ - + @@ -10964,7 +10994,7 @@ - + @@ -10975,7 +11005,7 @@ - + @@ -10986,7 +11016,7 @@ - + @@ -10997,7 +11027,7 @@ - + @@ -11008,7 +11038,7 @@ - + @@ -11019,7 +11049,7 @@ - + @@ -11030,7 +11060,7 @@ - + @@ -11041,7 +11071,7 @@ - + @@ -11052,7 +11082,7 @@ - + @@ -11063,7 +11093,7 @@ - + @@ -11074,7 +11104,7 @@ - + @@ -11085,7 +11115,7 @@ - + @@ -11096,7 +11126,7 @@ - + @@ -11107,7 +11137,7 @@ - + @@ -11118,7 +11148,7 @@ - + @@ -11129,7 +11159,7 @@ - + @@ -11140,7 +11170,7 @@ - + @@ -11151,7 +11181,7 @@ - + @@ -11162,7 +11192,7 @@ - + @@ -11173,7 +11203,7 @@ - + @@ -11184,7 +11214,7 @@ - + @@ -11195,7 +11225,7 @@ - + @@ -11206,7 +11236,7 @@ - + @@ -11217,7 +11247,7 @@ - + @@ -11228,7 +11258,7 @@ - + @@ -11239,7 +11269,7 @@ - + @@ -11250,7 +11280,7 @@ - + @@ -11261,7 +11291,7 @@ - + @@ -11272,7 +11302,7 @@ - + @@ -11283,7 +11313,7 @@ - + @@ -11294,7 +11324,7 @@ - + @@ -11305,7 +11335,7 @@ - + @@ -11316,7 +11346,7 @@ - + @@ -11327,7 +11357,7 @@ - + @@ -11338,7 +11368,7 @@ - + @@ -11349,7 +11379,7 @@ - + @@ -11360,7 +11390,7 @@ - + @@ -11371,7 +11401,7 @@ - + @@ -11382,7 +11412,7 @@ - + @@ -11393,7 +11423,7 @@ - + @@ -11404,7 +11434,7 @@ - + @@ -11415,7 +11445,7 @@ - + @@ -11426,7 +11456,7 @@ - + @@ -11437,7 +11467,7 @@ - + @@ -11448,7 +11478,7 @@ - + @@ -11459,7 +11489,7 @@ - + @@ -11470,7 +11500,7 @@ - + @@ -11481,7 +11511,7 @@ - + @@ -11492,7 +11522,7 @@ - + @@ -11503,7 +11533,7 @@ - + @@ -11514,7 +11544,7 @@ - + @@ -11525,7 +11555,7 @@ - + @@ -11536,7 +11566,7 @@ - + @@ -11547,7 +11577,7 @@ - + @@ -11558,7 +11588,7 @@ - + @@ -11569,7 +11599,7 @@ - + @@ -11580,7 +11610,7 @@ - + @@ -11591,7 +11621,7 @@ - + @@ -11602,7 +11632,7 @@ - + @@ -11613,7 +11643,7 @@ - + @@ -11624,7 +11654,7 @@ - + @@ -11635,7 +11665,7 @@ - + @@ -11646,7 +11676,7 @@ - + @@ -11657,7 +11687,7 @@ - + @@ -11668,7 +11698,7 @@ - + @@ -11679,7 +11709,7 @@ - + @@ -11690,7 +11720,7 @@ - + @@ -11701,7 +11731,7 @@ - + @@ -11712,7 +11742,7 @@ - + @@ -11723,7 +11753,7 @@ - + @@ -11734,7 +11764,7 @@ - + @@ -11745,7 +11775,7 @@ - + @@ -11756,7 +11786,7 @@ - + @@ -11767,7 +11797,7 @@ - + @@ -11778,7 +11808,7 @@ - + @@ -11789,7 +11819,7 @@ - + @@ -11800,7 +11830,7 @@ - + @@ -11811,7 +11841,7 @@ - + @@ -11822,7 +11852,7 @@ - + @@ -11833,7 +11863,7 @@ - + @@ -11844,7 +11874,7 @@ - + @@ -11855,7 +11885,7 @@ - + @@ -11866,7 +11896,7 @@ - + @@ -11877,7 +11907,7 @@ - + @@ -11888,7 +11918,7 @@ - + @@ -11899,7 +11929,7 @@ - + @@ -11910,7 +11940,7 @@ - + @@ -11921,7 +11951,7 @@ - + @@ -11932,7 +11962,7 @@ - + @@ -11943,7 +11973,7 @@ - + @@ -11954,7 +11984,7 @@ - + @@ -11965,7 +11995,7 @@ - + @@ -11976,7 +12006,7 @@ - + @@ -11987,7 +12017,7 @@ - + @@ -11998,7 +12028,7 @@ - + @@ -12009,7 +12039,7 @@ - + @@ -12020,7 +12050,7 @@ - + @@ -12031,7 +12061,7 @@ - + @@ -12042,7 +12072,7 @@ - + @@ -12053,7 +12083,7 @@ - + @@ -12064,7 +12094,7 @@ - + @@ -12075,7 +12105,7 @@ - + @@ -12086,7 +12116,7 @@ - + @@ -12097,7 +12127,7 @@ - + @@ -12108,7 +12138,7 @@ - + @@ -12119,7 +12149,7 @@ - + @@ -12130,7 +12160,7 @@ - + @@ -12141,7 +12171,7 @@ - + @@ -12152,7 +12182,7 @@ - + @@ -12163,7 +12193,7 @@ - + @@ -12174,7 +12204,7 @@ - + @@ -12185,7 +12215,7 @@ - + @@ -12196,7 +12226,7 @@ - + @@ -12207,7 +12237,7 @@ - + @@ -12218,7 +12248,7 @@ - + @@ -12229,7 +12259,7 @@ - + @@ -12240,7 +12270,7 @@ - + @@ -12251,7 +12281,7 @@ - + @@ -12262,7 +12292,7 @@ - + @@ -12273,7 +12303,7 @@ - + @@ -12284,7 +12314,7 @@ - + @@ -12295,7 +12325,7 @@ - + @@ -12306,7 +12336,7 @@ - + @@ -12317,7 +12347,7 @@ - + @@ -12328,7 +12358,7 @@ - + @@ -12339,7 +12369,7 @@ - + @@ -12350,7 +12380,7 @@ - + @@ -12361,7 +12391,7 @@ - + @@ -12372,7 +12402,7 @@ - + @@ -12383,7 +12413,7 @@ - + @@ -12394,7 +12424,7 @@ - + @@ -12405,7 +12435,7 @@ - + @@ -12416,7 +12446,7 @@ - + @@ -12427,7 +12457,7 @@ - + @@ -12438,7 +12468,7 @@ - + @@ -12449,7 +12479,7 @@ - + @@ -12460,7 +12490,7 @@ - + @@ -12471,7 +12501,7 @@ - + @@ -12482,7 +12512,7 @@ - + @@ -12493,7 +12523,7 @@ - + @@ -12504,7 +12534,7 @@ - + @@ -12515,7 +12545,7 @@ - + @@ -12526,7 +12556,7 @@ - + @@ -12537,7 +12567,7 @@ - + @@ -12548,7 +12578,7 @@ - + @@ -12559,7 +12589,7 @@ - + @@ -12570,7 +12600,7 @@ - + @@ -12581,7 +12611,7 @@ - + @@ -12592,7 +12622,7 @@ - + @@ -12603,7 +12633,7 @@ - + @@ -12614,7 +12644,7 @@ - + @@ -12625,7 +12655,7 @@ - + @@ -12636,7 +12666,7 @@ - + @@ -12647,7 +12677,7 @@ - + @@ -12658,7 +12688,7 @@ - + @@ -12669,7 +12699,7 @@ - + @@ -12680,7 +12710,7 @@ - + @@ -12691,7 +12721,7 @@ - + @@ -12702,7 +12732,7 @@ - + @@ -12713,7 +12743,7 @@ - + @@ -12724,7 +12754,7 @@ - + @@ -12735,7 +12765,7 @@ - + @@ -12746,7 +12776,7 @@ - + @@ -12757,7 +12787,7 @@ - + @@ -12768,7 +12798,7 @@ - + @@ -12779,7 +12809,7 @@ - + @@ -12790,7 +12820,7 @@ - + @@ -12801,7 +12831,7 @@ - + @@ -12812,7 +12842,7 @@ - + @@ -12823,7 +12853,7 @@ - + @@ -12834,7 +12864,7 @@ - + @@ -12845,7 +12875,7 @@ - + @@ -12856,7 +12886,7 @@ - + @@ -12867,7 +12897,7 @@ - + @@ -12878,7 +12908,7 @@ - + @@ -12889,7 +12919,7 @@ - + @@ -12900,7 +12930,7 @@ - + @@ -12911,7 +12941,7 @@ - + @@ -12922,7 +12952,7 @@ - + @@ -12933,7 +12963,7 @@ - + @@ -12944,7 +12974,7 @@ - + @@ -12955,7 +12985,7 @@ - + @@ -12966,7 +12996,7 @@ - + @@ -12980,57 +13010,67 @@
Angola AGO 199434.66 9.09
Angola AGO 199541.86 9.43
Angola AGO 199637.17 8.57
Angola AGO 1997na na
Angola AGO 1998na na
Angola AGO 1999na na
Angola AGO 2000na na
Albania ALB 199487.78 14.42
Albania ALB 199583.34 13.10
Albania ALB 199693.06 10.65
Albania ALB 199792.89 11.02
Albania ALB 199891.21 11.00
Albania ALB 199989.94 11.23
Albania ALB 200085.45 12.70
Argentina ARG 199468.89 17.41
Argentina ARG 199567.44 15.45
Argentina ARG 199668.21 15.75
Argentina ARG 199769.18 17.09
Argentina ARG 199869.39 17.28
Argentina ARG 199969.72 15.27
Argentina ARG 200069.06 14.08
Armenia ARM 199486.35 12.97
Armenia ARM 199592.23 10.88
Armenia ARM 199689.90 10.91
Armenia ARM 199797.20 11.46
Armenia ARM 199895.81 11.00
Armenia ARM 199992.50 9.81
Armenia ARM 200090.67 10.04
Antigua ATG 199441.82 9.89
Antigua ATG 199550.45 17.76
Antigua ATG 199644.11 16.27
Antigua ATG 199738.27 14.72
Antigua ATG 199839.64 14.17
Antigua ATG 199938.56 13.69
Antigua ATG 200034.82 11.85
Australia AUS 199470.54 24.28
Australia AUS 199569.84 23.20
Australia AUS 199669.12 23.65
Australia AUS 199769.38 24.65
Australia AUS 199870.27 25.24
Australia AUS 199970.29 25.27
Australia AUS 200069.55 23.06
Austria AUT 199468.76 25.42
Austria AUT 199568.63 25.73
Austria AUT 199669.75 25.01
Austria AUT 199769.84 25.52
Austria AUT 199869.63 24.80
Austria AUT 199970.04 24.61
Austria AUT 200069.19 25.34
Azerbaijan AZE 199465.70 15.20
Azerbaijan AZE 199577.38 12.11
Azerbaijan AZE 199682.31 16.97
Azerbaijan AZE 199772.32 21.39
Azerbaijan AZE 199876.31 17.56
Azerbaijan AZE 199970.92 13.22
Azerbaijan AZE 200059.13 10.77
Burundi BDI 199488.58 3.15
Burundi BDI 199586.36 3.01
Burundi BDI 199683.64 3.62
Burundi BDI 199780.45 2.37
Burundi BDI 199885.66 3.43
Burundi BDI 199984.03 3.17
Burundi BDI 200087.56 4.18
Belgium BEL 199455.10 22.32
Belgium BEL 199554.24 23.13
Belgium BEL 199654.93 22.53
Belgium BEL 199754.39 23.33
Belgium BEL 199854.71 23.57
Belgium BEL 199954.80 22.94
Belgium BEL 200054.29 23.62
Benin BEN 199489.45 5.35
Benin BEN 199589.33 7.70
Benin BEN 199689.90 7.07
Benin BEN 199792.93 8.06
Benin BEN 199890.98 7.55
Benin BEN 199992.61 7.86
Benin BEN 200092.27 8.25
Burkina Faso BFA 199479.81 6.57
Burkina Faso BFA 199580.41 9.29
Burkina Faso BFA 199680.40 12.12
Burkina Faso BFA 199776.94 14.94
Burkina Faso BFA 199880.66 12.24
Burkina Faso BFA 199979.81 13.14
Burkina Faso BFA 200076.53 14.87
Bangladesh BGD 199484.37 9.56
Bangladesh BGD 199585.13 9.79
Bangladesh BGD 199686.95 10.16
Bangladesh BGD 199784.85 10.73
Bangladesh BGD 199882.45 11.25
Bangladesh BGD 199982.67 11.71
Bangladesh BGD 200081.88 12.14
Bulgaria BGR 199464.40 3.03
Bulgaria BGR 199567.05 3.27
Bulgaria BGR 199668.56 3.34
Bulgaria BGR 199762.69 4.42
Bulgaria BGR 199867.91 6.72
Bulgaria BGR 199970.96 7.72
Bulgaria BGR 200067.34 6.95
Bahrain BHR 1994na na
Bahrain BHR 1995na na
Bahrain BHR 199642.28 6.39
Bahrain BHR 1997na na
Bahrain BHR 1998na na
Bahrain BHR 1999na na
Bahrain BHR 2000na na
Bahamas BHS 1994na na
Bahamas BHS 1995na na
Bahamas BHS 199674.02 9.91
Bahamas BHS 1997na na
Bahamas BHS 1998na na
Bahamas BHS 1999na na
Bahamas BHS 2000na na
Belarus BLR 199455.99 23.98
Belarus BLR 199553.15 17.58
Belarus BLR 199653.52 18.06
Belarus BLR 199754.83 19.16
Belarus BLR 199856.25 18.10
Belarus BLR 199957.87 14.02
Belarus BLR 200056.02 13.77
Belize BLZ 199458.01 14.22
Belize BLZ 199560.84 11.55
Belize BLZ 199660.25 11.07
Belize BLZ 199759.64 14.48
Belize BLZ 199861.28 14.83
Belize BLZ 199966.11 14.87
Belize BLZ 200071.83 18.77
Bermuda BMU 1994na na
Bermuda BMU 1995na na
Bermuda BMU 199688.74 14.57
Bermuda BMU 1997na na
Bermuda BMU 1998na na
Bermuda BMU 1999na na
Bermuda BMU 2000na na
Bolivia BOL 199479.16 8.06
Bolivia BOL 199577.28 8.56
Bolivia BOL 199676.81 9.67
Bolivia BOL 199778.13 12.04
Bolivia BOL 199880.08 14.68
Bolivia BOL 199980.47 11.10
Bolivia BOL 200077.94 10.75
Brazil BRA 199457.54 16.52
Brazil BRA 199563.95 17.20
Brazil BRA 199663.60 16.62
Brazil BRA 199762.94 17.06
Brazil BRA 199862.26 16.94
Brazil BRA 199964.52 15.61
Brazil BRA 200065.75 15.63
Barbados BRB 199479.39 3.38
Barbados BRB 199581.55 3.56
Barbados BRB 199682.72 3.11
Barbados BRB 199789.86 3.66
Barbados BRB 199889.29 4.06
Barbados BRB 199991.80 4.17
Barbados BRB 200091.60 3.93
Bhutan BTN 1994na na
Bhutan BTN 1995na na
Bhutan BTN 199650.57 23.23
Bhutan BTN 1997na na
Bhutan BTN 1998na na
Bhutan BTN 1999na na
Bhutan BTN 2000na na
Botswana BWA 199443.25 16.83
Botswana BWA 199541.99 16.84
Botswana BWA 199639.71 17.15
Botswana BWA 199749.99 15.44
Botswana BWA 199859.68 12.91
Botswana BWA 199967.67 11.61
Botswana BWA 2000na na
Central African Republic CAF 199479.22 5.21
Central African Republic CAF 199571.40 6.48
Central African Republic CAF 199693.68 2.36
Central African Republic CAF 199784.87 4.61
Central African Republic CAF 199875.09 6.34
Central African Republic CAF 1999na na
Central African Republic CAF 2000na na
Canada CAN 199459.23 24.00
Canada CAN 199557.94 23.78
Canada CAN 199658.41 23.18
Canada CAN 199758.36 26.16
Canada CAN 199859.34 25.38
Canada CAN 199958.32 25.06
Canada CAN 200055.67 25.86
Switzerland CHE 199458.96 25.97
Switzerland CHE 199558.46 26.98
Switzerland CHE 199659.10 26.22
Switzerland CHE 199759.32 25.93
Switzerland CHE 199858.89 27.07
Switzerland CHE 199958.95 25.80
Switzerland CHE 200057.98 26.89
Chile CHL 199460.54 20.03
Chile CHL 199558.02 23.45
Chile CHL 199661.49 24.12
Chile CHL 199761.97 24.59
Chile CHL 199863.67 24.24
Chile CHL 199962.89 18.04
Chile CHL 200061.34 19.70
China CHN 199450.06 22.34
China CHN 199551.68 22.47
China CHN 199651.88 22.04
China CHN 199749.97 21.82
China CHN 199849.44 21.60
China CHN 199950.55 21.00
China CHN 200048.66 21.09
Cote d`Ivoire CIV 199474.25 4.88
Cote d`Ivoire CIV 199577.07 5.49
Cote d`Ivoire CIV 199674.25 5.55
Cote d`Ivoire CIV 199776.36 4.85
Cote d`Ivoire CIV 199877.11 5.65
Cote d`Ivoire CIV 199975.24 6.31
Cote d`Ivoire CIV 200076.76 5.75
Cameroon CMR 199483.49 5.30
Cameroon CMR 199581.81 4.73
Cameroon CMR 199683.46 4.93
Cameroon CMR 199784.39 5.02
Cameroon CMR 199884.45 5.46
Cameroon CMR 199984.65 5.79
Cameroon CMR 200081.14 5.41
Congo, Republic of COG 199465.37 11.94
Congo, Republic of COG 199562.36 8.44
Congo, Republic of COG 199658.65 7.39
Congo, Republic of COG 199757.40 4.65
Congo, Republic of COG 199885.72 5.49
Congo, Republic of COG 199957.27 4.42
Congo, Republic of COG 200044.71 2.61
Colombia COL 199471.19 15.83
Colombia COL 199571.11 15.77
Colombia COL 199669.81 14.73
Colombia COL 199769.22 14.03
Colombia COL 199869.45 12.81
Colombia COL 199967.11 7.84
Colombia COL 200067.93 8.79
Comoros COM 199490.86 6.47
Comoros COM 199588.22 6.79
Comoros COM 199689.35 6.95
Comoros COM 199792.65 6.09
Comoros COM 199884.20 6.50
Comoros COM 199985.71 4.78
Comoros COM 200079.76 4.30
Cape Verde CPV 199483.45 21.97
Cape Verde CPV 199581.02 21.03
Cape Verde CPV 199680.03 19.19
Cape Verde CPV 199781.66 17.42
Cape Verde CPV 199890.39 15.55
Cape Verde CPV 199985.86 15.58
Cape Verde CPV 200076.33 13.79
Costa Rica CRI 199465.10 18.10
Costa Rica CRI 199563.86 16.01
Costa Rica CRI 199665.34 13.86
Costa Rica CRI 199765.46 16.36
Costa Rica CRI 199863.56 18.50
Costa Rica CRI 199960.20 14.81
Costa Rica CRI 200062.16 14.11
Cuba CUB 199471.25 0.97
Cuba CUB 199572.19 1.31
Cuba CUB 199672.36 1.54
Cuba CUB 1997na na
Cuba CUB 1998na na
Cuba CUB 1999na na
Cuba CUB 2000na na
Cyprus CYP 199461.28 18.47
Cyprus CYP 199562.64 20.32
Cyprus CYP 199666.27 17.88
Cyprus CYP 1997na na
Cyprus CYP 1998na na
Cyprus CYP 1999na na
Cyprus CYP 2000na na
Czech Republic CZE 199468.20 21.63
Czech Republic CZE 199567.55 25.24
Czech Republic CZE 199669.29 25.85
Czech Republic CZE 199769.24 24.80
Czech Republic CZE 199866.54 23.27
Czech Republic CZE 199967.97 21.81
Czech Republic CZE 200067.42 24.21
Djibouti DJI 1994na na
Djibouti DJI 1995na na
Djibouti DJI 199676.89 4.15
Djibouti DJI 1997na na
Djibouti DJI 1998na na
Djibouti DJI 1999na na
Djibouti DJI 2000na na
Dominica DMA 199454.89 11.40
Dominica DMA 199552.37 13.93
Dominica DMA 199650.27 12.41
Dominica DMA 1997na na
Dominica DMA 1998na na
Dominica DMA 1999na na
Dominica DMA 200048.21 12.21
Denmark DNK 199467.12 19.85
Denmark DNK 199566.10 22.21
Denmark DNK 199666.28 21.37
Denmark DNK 199765.64 23.66
Denmark DNK 199866.63 24.48
Denmark DNK 199966.02 22.25
Denmark DNK 200062.90 24.14
Dominican Republic DOM 199472.84 13.91
Dominican Republic DOM 199571.38 12.40
Dominican Republic DOM 199673.36 11.97
Dominican Republic DOM 199767.83 11.89
Dominican Republic DOM 199868.61 13.87
Dominican Republic DOM 199966.60 14.03
Dominican Republic DOM 200067.16 13.78
Algeria DZA 199463.93 12.98
Algeria DZA 199562.44 12.93
Algeria DZA 199656.09 11.88
Algeria DZA 199754.72 11.15
Algeria DZA 199859.67 14.00
Algeria DZA 199957.05 12.46
Algeria DZA 200046.21 9.78
Ecuador ECU 199459.27 15.80
Ecuador ECU 199559.68 16.88
Ecuador ECU 199657.76 14.56
Ecuador ECU 199760.63 17.35
Ecuador ECU 199865.18 19.55
Ecuador ECU 199960.38 9.22
Ecuador ECU 200056.87 12.93
Egypt EGY 199491.01 4.40
Egypt EGY 199590.08 4.74
Egypt EGY 199691.13 4.96
Egypt EGY 199791.31 5.13
Egypt EGY 199894.19 5.99
Egypt EGY 199992.60 5.94
Egypt EGY 200090.51 5.87
Eritrea ERI 1994na na
Eritrea ERI 1995na na
Eritrea ERI 199697.45 9.09
Eritrea ERI 1997na na
Eritrea ERI 1998na na
Eritrea ERI 1999na na
Eritrea ERI 2000na na
Spain ESP 199470.03 22.62
Spain ESP 199575.16 21.96
Spain ESP 199669.01 23.21
Spain ESP 199768.59 23.23
Spain ESP 199868.87 24.02
Spain ESP 199969.49 24.65
Spain ESP 200069.13 25.47
Estonia EST 199460.88 15.06
Estonia EST 199557.51 13.58
Estonia EST 199659.60 14.71
Estonia EST 199760.00 16.90
Estonia EST 199860.80 15.63
Estonia EST 199957.41 12.36
Estonia EST 200056.70 13.15
Ethiopia ETH 199483.96 4.35
Ethiopia ETH 199583.20 4.70
Ethiopia ETH 199687.47 5.73
Ethiopia ETH 199781.74 5.48
Ethiopia ETH 199877.51 5.16
Ethiopia ETH 199975.78 4.63
Ethiopia ETH 200067.96 4.00
Finland FIN 199465.05 21.05
Finland FIN 199564.34 20.17
Finland FIN 199664.71 20.40
Finland FIN 199763.46 20.95
Finland FIN 199863.06 20.97
Finland FIN 199964.13 20.20
Finland FIN 200062.24 21.04
Fiji FJI 199462.51 9.66
Fiji FJI 199562.17 10.23
Fiji FJI 199667.08 7.91
Fiji FJI 199767.78 8.91
Fiji FJI 199861.34 8.28
Fiji FJI 199959.69 7.58
Fiji FJI 2000na na
France FRA 199467.62 22.39
France FRA 199567.07 23.05
France FRA 199667.76 21.99
France FRA 199766.98 21.38
France FRA 199866.88 22.49
France FRA 199967.01 22.53
France FRA 200066.37 23.82
Gabon GAB 199461.20 7.51
Gabon GAB 199562.73 6.83
Gabon GAB 199660.40 6.94
Gabon GAB 199760.68 8.95
Gabon GAB 199875.85 11.17
Gabon GAB 199975.64 7.81
Gabon GAB 200078.96 8.66
United Kingdom GBR 199474.59 18.24
United Kingdom GBR 199574.48 18.24
United Kingdom GBR 199675.19 17.95
United Kingdom GBR 199774.61 18.51
United Kingdom GBR 199874.60 19.81
United Kingdom GBR 199975.82 19.17
United Kingdom GBR 200075.20 19.43
Georgia GEO 1994na na
Georgia GEO 1995na na
Georgia GEO 199674.12 1.91
Georgia GEO 199780.78 4.21
Georgia GEO 199877.00 6.35
Georgia GEO 199981.66 3.60
Georgia GEO 200074.17 4.07
Germany GER 199468.43 24.49
Germany GER 199568.52 24.15
Germany GER 199669.25 23.13
Germany GER 199769.34 22.90
Germany GER 199869.23 23.06
Germany GER 199970.15 22.68
Germany GER 200069.42 23.62
Ghana GHA 199477.44 6.39
Ghana GHA 199575.48 5.50
Ghana GHA 199678.28 6.19
Ghana GHA 199786.14 7.36
Ghana GHA 199880.44 6.57
Ghana GHA 199986.46 6.18
Ghana GHA 200083.80 5.10
Guinea GIN 199489.23 10.79
Guinea GIN 199592.91 8.17
Guinea GIN 199692.83 7.24
Guinea GIN 199790.34 7.30
Guinea GIN 199892.52 7.13
Guinea GIN 199993.30 7.12
Guinea GIN 200093.34 7.59
Gambia, The GMB 199488.70 8.37
Gambia, The GMB 199590.68 10.01
Gambia, The GMB 199690.79 10.54
Gambia, The GMB 199788.52 7.74
Gambia, The GMB 199891.65 8.56
Gambia, The GMB 199991.87 7.42
Gambia, The GMB 200088.83 7.33
Guinea-Bissau GNB 199479.34 13.86
Guinea-Bissau GNB 199582.62 13.87
Guinea-Bissau GNB 199681.97 14.22
Guinea-Bissau GNB 199778.38 14.23
Guinea-Bissau GNB 199884.36 12.43
Guinea-Bissau GNB 199979.67 7.60
Guinea-Bissau GNB 200078.99 5.55
Equatorial Guinea GNQ 199473.08 35.44
Equatorial Guinea GNQ 199568.66 37.99
Equatorial Guinea GNQ 199670.28 58.13
Equatorial Guinea GNQ 199761.74 31.64
Equatorial Guinea GNQ 199877.17 41.79
Equatorial Guinea GNQ 199935.32 26.65
Equatorial Guinea GNQ 200026.83 17.70
Greece GRC 199473.97 19.13
Greece GRC 199579.40 19.51
Greece GRC 199679.55 20.44
Greece GRC 199778.66 20.79
Greece GRC 199878.46 21.77
Greece GRC 199978.14 21.31
Greece GRC 200076.60 22.84
Grenada GRD 199467.34 22.21
Grenada GRD 199567.51 19.21
Grenada GRD 199670.48 21.86
Grenada GRD 199776.62 23.37
Grenada GRD 199876.23 23.57
Grenada GRD 199962.17 22.30
Grenada GRD 200066.07 24.51
Guatemala GTM 199485.03 8.04
Guatemala GTM 199584.88 7.52
Guatemala GTM 199685.27 6.17
Guatemala GTM 199784.71 6.93
Guatemala GTM 199885.01 9.00
Guatemala GTM 199986.15 8.36
Guatemala GTM 200084.15 8.23
Guyana GUY 199473.84 12.72
Guyana GUY 199568.55 15.16
Guyana GUY 199665.30 14.17
Guyana GUY 199766.15 13.93
Guyana GUY 199868.23 12.71
Guyana GUY 199965.83 10.25
Guyana GUY 2000na na
Hong Kong HKG 199466.90 26.70
Hong Kong HKG 199567.63 31.41
Hong Kong HKG 199667.25 28.99
Hong Kong HKG 199767.82 30.70
Hong Kong HKG 199866.14 26.74
Hong Kong HKG 199966.72 21.79
Hong Kong HKG 200064.45 24.99
Honduras HND 199475.67 18.86
Honduras HND 199571.65 18.05
Honduras HND 199673.85 16.40
Honduras HND 199775.45 16.86
Honduras HND 199874.40 16.12
Honduras HND 199978.29 17.23
Honduras HND 200072.43 20.37
Croatia HRV 1994na na
Croatia HRV 199562.01 12.21
Croatia HRV 199659.88 15.33
Croatia HRV 199763.61 19.18
Croatia HRV 199860.80 16.66
Croatia HRV 199959.46 15.94
Croatia HRV 200057.70 15.27
Haiti HTI 199488.65 2.31
Haiti HTI 199593.86 3.19
Haiti HTI 199695.19 2.59
Haiti HTI 199790.21 2.13
Haiti HTI 199894.75 1.96
Haiti HTI 1999na na
Haiti HTI 2000na na
Hungary HUN 199472.63 17.51
Hungary HUN 199566.80 19.24
Hungary HUN 199664.90 21.78
Hungary HUN 199763.07 22.42
Hungary HUN 199863.69 24.66
Hungary HUN 199964.62 24.13
Hungary HUN 200064.13 25.47
Indonesia IDN 199457.93 19.86
Indonesia IDN 199557.30 24.37
Indonesia IDN 199661.49 21.19
Indonesia IDN 199762.54 20.99
Indonesia IDN 199862.16 13.22
Indonesia IDN 199966.37 10.13
Indonesia IDN 200064.78 10.67
India IND 199462.63 11.92
India IND 199559.41 13.25
India IND 199660.74 11.93
India IND 199760.02 12.53
India IND 199856.59 12.88
India IND 199954.33 13.60
India IND 200052.38 13.18
Ireland IRL 199467.30 17.26
Ireland IRL 199564.44 18.75
Ireland IRL 199663.58 19.71
Ireland IRL 199761.62 20.97
Ireland IRL 199861.08 22.95
Ireland IRL 199960.54 21.15
Ireland IRL 200059.78 21.55
Iran IRN 199465.28 9.50
Iran IRN 199559.45 19.53
Iran IRN 199665.09 13.45
Iran IRN 199765.44 15.89
Iran IRN 199867.09 18.23
Iran IRN 199963.62 15.06
Iran IRN 200056.01 13.12
Iceland ISL 199466.75 18.75
Iceland ISL 199567.73 19.11
Iceland ISL 199668.58 22.01
Iceland ISL 199768.10 22.78
Iceland ISL 199869.60 27.09
Iceland ISL 199971.74 24.78
Iceland ISL 200070.85 27.57
Israel ISR 199458.29 30.43
Israel ISR 199558.64 30.91
Israel ISR 199658.65 30.81
Israel ISR 199758.33 27.69
Israel ISR 199859.09 24.50
Israel ISR 199959.00 25.51
Israel ISR 200058.20 23.33
Italy ITA 199470.38 19.93
Italy ITA 199569.23 20.71
Italy ITA 199669.15 20.10
Italy ITA 199770.06 20.28
Italy ITA 199870.64 20.52
Italy ITA 199971.26 21.09
Italy ITA 200062.05 21.73
Jamaica JAM 199466.66 21.96
Jamaica JAM 199565.98 21.15
Jamaica JAM 199665.50 20.48
Jamaica JAM 199754.95 23.35
Jamaica JAM 199857.92 20.38
Jamaica JAM 199957.49 20.35
Jamaica JAM 200057.66 20.53
Jordan JOR 199458.32 19.36
Jordan JOR 199554.83 18.85
Jordan JOR 199659.03 17.44
Jordan JOR 199757.59 14.17
Jordan JOR 199859.58 11.84
Jordan JOR 199959.43 9.98
Jordan JOR 200063.18 10.74
Japan JPN 199460.85 31.36
Japan JPN 199560.98 31.58
Japan JPN 199660.87 32.71
Japan JPN 199760.66 32.31
Japan JPN 199861.83 30.15
Japan JPN 199962.87 28.94
Japan JPN 200061.62 29.75
Kazakhstan KAZ 199470.85 17.12
Kazakhstan KAZ 199564.00 10.68
Kazakhstan KAZ 199669.88 7.31
Kazakhstan KAZ 199772.01 7.77
Kazakhstan KAZ 199876.82 7.38
Kazakhstan KAZ 199970.68 7.50
Kazakhstan KAZ 200060.88 7.14
Kenya KEN 199472.50 7.09
Kenya KEN 199579.51 7.74
Kenya KEN 199678.64 7.74
Kenya KEN 199782.14 7.57
Kenya KEN 199881.71 7.89
Kenya KEN 199978.15 7.75
Kenya KEN 200080.12 7.54
Kyrgyzstan KGZ 199462.55 3.27
Kyrgyzstan KGZ 199562.98 7.21
Kyrgyzstan KGZ 199666.23 11.17
Kyrgyzstan KGZ 199755.38 10.24
Kyrgyzstan KGZ 199868.52 7.19
Kyrgyzstan KGZ 199962.81 7.92
Kyrgyzstan KGZ 200060.33 6.97
Cambodia KHM 199486.18 3.98
Cambodia KHM 199591.89 4.65
Cambodia KHM 199690.50 5.54
Cambodia KHM 199784.46 5.14
Cambodia KHM 199886.29 5.76
Cambodia KHM 199986.41 6.45
Cambodia KHM 2000na na
St. Kitts & Nevis KNA 199440.82 19.36
St. Kitts & Nevis KNA 199548.41 18.19
St. Kitts & Nevis KNA 199650.79 17.94
St. Kitts & Nevis KNA 199743.95 17.17
St. Kitts & Nevis KNA 199843.91 16.42
St. Kitts & Nevis KNA 199948.20 13.23
St. Kitts & Nevis KNA 200047.47 16.49
Korea, Republic of KOR 199454.90 40.23
Korea, Republic of KOR 199555.31 40.50
Korea, Republic of KOR 199656.54 41.64
Korea, Republic of KOR 199757.48 37.65
Korea, Republic of KOR 199855.74 24.66
Korea, Republic of KOR 199958.15 29.05
Korea, Republic of KOR 200057.12 30.78
Kuwait KWT 1994na na
Kuwait KWT 1995na na
Kuwait KWT 199652.02 9.92
Kuwait KWT 1997na na
Kuwait KWT 1998na na
Kuwait KWT 1999na na
Kuwait KWT 2000na na
Laos LAO 1994na na
Laos LAO 1995na na
Laos LAO 199662.23 21.23
Laos LAO 1997na na
Laos LAO 1998na na
Laos LAO 1999na na
Laos LAO 2000na na
Lebanon LBN 1994116.16 17.47
Lebanon LBN 1995112.06 17.75
Lebanon LBN 1996106.19 15.82
Lebanon LBN 1997102.27 13.80
Lebanon LBN 199890.82 14.94
Lebanon LBN 199984.82 10.30
Lebanon LBN 200076.50 8.18
St. Lucia LCA 199472.33 14.08
St. Lucia LCA 199571.02 10.71
St. Lucia LCA 199673.61 12.28
St. Lucia LCA 199774.36 14.19
St. Lucia LCA 199873.66 13.44
St. Lucia LCA 199976.55 14.36
St. Lucia LCA 200074.81 13.69
Sri Lanka LKA 199477.42 12.51
Sri Lanka LKA 199577.79 11.87
Sri Lanka LKA 199674.71 11.39
Sri Lanka LKA 199770.28 11.99
Sri Lanka LKA 199869.28 12.46
Sri Lanka LKA 199970.39 12.49
Sri Lanka LKA 200067.61 12.51
Lesotho LSO 1994104.34 32.80
Lesotho LSO 199597.14 41.61
Lesotho LSO 199693.75 47.20
Lesotho LSO 199790.25 44.58
Lesotho LSO 199883.36 38.40
Lesotho LSO 199975.51 37.52
Lesotho LSO 200064.63 36.22
Lithuania LTU 199471.03 8.23
Lithuania LTU 199564.59 13.76
Lithuania LTU 199666.34 13.42
Lithuania LTU 199766.56 16.09
Lithuania LTU 199864.16 16.26
Lithuania LTU 199968.06 14.95
Lithuania LTU 200066.35 12.98
Luxembourg LUX 199450.30 24.06
Luxembourg LUX 199559.21 23.86
Luxembourg LUX 199659.89 23.68
Luxembourg LUX 199756.35 24.85
Luxembourg LUX 199854.65 23.34
Luxembourg LUX 199953.35 25.10
Luxembourg LUX 200049.58 23.48
Latvia LVA 199462.48 6.91
Latvia LVA 199557.21 10.00
Latvia LVA 199662.73 10.41
Latvia LVA 199763.63 11.18
Latvia LVA 199864.94 14.59
Latvia LVA 199965.09 12.42
Latvia LVA 200064.59 11.85
Macao MAC 199434.85 22.02
Macao MAC 199533.69 18.33
Macao MAC 199634.98 13.82
Macao MAC 199738.80 14.72
Macao MAC 199840.37 12.89
Macao MAC 199941.47 12.01
Macao MAC 200039.24 8.25
Morocco MAR 199482.80 9.66
Morocco MAR 199581.32 11.29
Morocco MAR 199682.28 9.56
Morocco MAR 199777.19 10.08
Morocco MAR 199877.38 11.45
Morocco MAR 199976.73 10.55
Morocco MAR 200076.12 12.22
Moldova MDA 1994na na
Moldova MDA 199565.59 10.32
Moldova MDA 199670.62 9.49
Moldova MDA 199769.89 8.85
Moldova MDA 199880.25 9.57
Moldova MDA 199976.57 8.84
Moldova MDA 200094.10 8.70
Madagascar MDG 199491.64 2.62
Madagascar MDG 199591.30 2.62
Madagascar MDG 199690.08 2.83
Madagascar MDG 199791.84 2.69
Madagascar MDG 199891.79 2.76
Madagascar MDG 199992.84 2.72
Madagascar MDG 200093.58 3.23
Mexico MEX 199476.81 21.08
Mexico MEX 199575.67 14.42
Mexico MEX 199674.23 16.85
Mexico MEX 199773.88 19.70
Mexico MEX 199875.23 20.74
Mexico MEX 199974.79 20.45
Mexico MEX 200067.09 20.83
Macedonia MKD 199476.92 8.90
Macedonia MKD 199570.69 13.15
Macedonia MKD 199672.64 12.67
Macedonia MKD 199773.37 12.53
Macedonia MKD 199874.26 12.49
Macedonia MKD 199972.04 10.40
Macedonia MKD 200081.76 10.03
Mali MLI 199492.97 7.57
Mali MLI 199585.67 7.24
Mali MLI 199686.57 7.79
Mali MLI 199779.25 6.41
Mali MLI 199880.31 6.42
Mali MLI 199979.55 6.17
Mali MLI 200077.07 6.36
Malta MLT 199463.96 20.61
Malta MLT 199566.08 21.43
Malta MLT 199668.27 18.81
Malta MLT 199766.64 16.58
Malta MLT 199866.65 14.55
Malta MLT 1999na na
Malta MLT 2000na na
Mongolia MNG 1994na na
Mongolia MNG 1995na na
Mongolia MNG 199662.98 16.64
Mongolia MNG 1997na na
Mongolia MNG 1998na na
Mongolia MNG 1999na na
Mongolia MNG 2000na na
Mozambique MOZ 199499.67 3.52
Mozambique MOZ 199599.74 4.36
Mozambique MOZ 199697.80 3.66
Mozambique MOZ 199793.82 3.33
Mozambique MOZ 199891.56 4.20
Mozambique MOZ 199997.52 5.90
Mozambique MOZ 200096.09 4.68
Mauritania MRT 199474.24 6.87
Mauritania MRT 199578.29 8.14
Mauritania MRT 199677.75 9.95
Mauritania MRT 199775.65 11.01
Mauritania MRT 199879.58 10.35
Mauritania MRT 199977.37 8.64
Mauritania MRT 2000na na
Mauritius MUS 199484.31 13.65
Mauritius MUS 199581.27 10.62
Mauritius MUS 199680.10 10.40
Mauritius MUS 199781.49 12.79
Mauritius MUS 199879.13 11.83
Mauritius MUS 199982.13 11.14
Mauritius MUS 200081.33 11.34
Malawi MWI 199483.59 8.97
Malawi MWI 199588.52 5.03
Malawi MWI 199695.96 4.62
Malawi MWI 199796.64 4.56
Malawi MWI 199891.85 4.35
Malawi MWI 1999100.70 4.49
Malawi MWI 200093.58 3.75
Malaysia MYS 199451.11 31.97
Malaysia MYS 199550.71 34.74
Malaysia MYS 199649.13 33.18
Malaysia MYS 199748.20 34.40
Malaysia MYS 199840.87 18.06
Malaysia MYS 199934.85 18.26
Malaysia MYS 200030.03 21.70
Namibia NAM 199456.98 11.87
Namibia NAM 199558.94 10.53
Namibia NAM 199659.45 11.40
Namibia NAM 199761.69 10.19
Namibia NAM 199860.92 13.25
Namibia NAM 199958.59 11.67
Namibia NAM 2000na na
Niger NER 199477.07 4.13
Niger NER 199578.25 2.99
Niger NER 199681.47 3.92
Niger NER 199780.44 4.25
Niger NER 199882.78 4.39
Niger NER 199979.18 3.74
Niger NER 200083.32 3.85
Nigeria NGA 199472.87 12.76
Nigeria NGA 199575.46 11.04
Nigeria NGA 199661.19 9.82
Nigeria NGA 199773.97 9.61
Nigeria NGA 199881.13 11.54
Nigeria NGA 199969.82 16.31
Nigeria NGA 200031.89 22.19
Nicaragua NIC 199484.60 10.13
Nicaragua NIC 199582.70 11.31
Nicaragua NIC 199680.28 12.71
Nicaragua NIC 199794.53 16.80
Nicaragua NIC 199896.28 17.16
Nicaragua NIC 1999104.73 21.48
Nicaragua NIC 200092.21 17.88
Netherlands NLD 199462.60 21.10
Netherlands NLD 199562.14 21.85
Netherlands NLD 199662.55 21.93
Netherlands NLD 199762.23 22.35
Netherlands NLD 199862.84 22.34
Netherlands NLD 199963.76 22.37
Netherlands NLD 200062.73 22.47
Norway NOR 199460.61 25.84
Norway NOR 199559.80 27.17
Norway NOR 199658.95 25.94
Norway NOR 199757.91 28.41
Norway NOR 199861.30 31.31
Norway NOR 199960.58 26.91
Norway NOR 200053.45 24.48
Nepal NPL 199469.40 17.03
Nepal NPL 199567.83 18.06
Nepal NPL 199670.37 18.83
Nepal NPL 199770.79 17.36
Nepal NPL 199870.42 16.56
Nepal NPL 199970.49 13.26
Nepal NPL 200067.27 16.02
New Zealand NZL 199468.19 21.95
New Zealand NZL 199567.71 23.36
New Zealand NZL 199668.19 23.38
New Zealand NZL 199769.16 22.06
New Zealand NZL 199870.50 20.99
New Zealand NZL 199970.12 22.69
New Zealand NZL 200067.64 22.33
Oman OMN 1994na na
Oman OMN 1995na na
Oman OMN 199658.28 8.08
Oman OMN 1997na na
Oman OMN 1998na na
Oman OMN 1999na na
Oman OMN 2000na na
Pakistan PAK 199471.29 11.40
Pakistan PAK 199571.46 11.09
Pakistan PAK 199674.02 11.07
Pakistan PAK 199776.36 10.48
Pakistan PAK 199873.72 10.08
Pakistan PAK 199977.28 8.68
Pakistan PAK 200074.04 8.81
Panama PAN 199458.47 23.68
Panama PAN 199558.24 26.17
Panama PAN 199657.94 26.54
Panama PAN 199761.24 25.19
Panama PAN 199865.55 26.58
Panama PAN 199963.07 28.71
Panama PAN 200062.25 26.65
Peru PER 199470.81 19.94
Peru PER 199570.23 22.00
Peru PER 199670.88 20.86
Peru PER 199769.40 22.28
Peru PER 199870.35 21.78
Peru PER 199970.06 18.43
Peru PER 200069.53 17.44
Philippines PHL 199473.05 15.89
Philippines PHL 199574.71 15.56
Philippines PHL 199675.25 16.42
Philippines PHL 199775.74 17.48
Philippines PHL 199876.54 13.95
Philippines PHL 199971.83 12.22
Philippines PHL 200067.12 11.63
Papua New Guinea PNG 199450.16 5.76
Papua New Guinea PNG 199562.67 8.42
Papua New Guinea PNG 199654.26 12.65
Papua New Guinea PNG 199760.92 11.06
Papua New Guinea PNG 199859.26 9.46
Papua New Guinea PNG 199963.01 9.54
Papua New Guinea PNG 2000na na
Poland POL 199476.06 14.85
Poland POL 199572.91 17.34
Poland POL 199675.08 19.53
Poland POL 199775.62 21.50
Poland POL 199875.75 22.38
Poland POL 199977.18 22.24
Poland POL 200067.21 24.35
Puerto Rico PRI 1994na na
Puerto Rico PRI 1995na na
Puerto Rico PRI 199696.11 22.95
Puerto Rico PRI 199796.61 25.16
Puerto Rico PRI 199895.55 23.29
Puerto Rico PRI 1999na na
Puerto Rico PRI 2000na na
Portugal PRT 199462.86 20.71
Portugal PRT 199572.38 23.85
Portugal PRT 199672.48 23.73
Portugal PRT 199772.21 25.41
Portugal PRT 199872.33 26.62
Portugal PRT 199961.67 26.46
Portugal PRT 200060.74 27.22
Paraguay PRY 199472.56 12.24
Paraguay PRY 199572.84 12.89
Paraguay PRY 199671.61 12.43
Paraguay PRY 199779.87 13.06
Paraguay PRY 199880.88 12.43
Paraguay PRY 199977.12 11.63
Paraguay PRY 200077.14 11.06
Qatar QAT 1994na na
Qatar QAT 1995na na
Qatar QAT 199650.10 13.25
Qatar QAT 1997na na
Qatar QAT 1998na na
Qatar QAT 1999na na
Qatar QAT 2000na na
Romania ROM 199472.13 13.89
Romania ROM 199577.55 12.60
Romania ROM 199683.08 11.64
Romania ROM 199782.27 11.50
Romania ROM 199883.94 10.65
Romania ROM 199981.47 10.12
Romania ROM 200081.03 11.18
Russia RUS 199449.51 18.33
Russia RUS 199560.73 17.40
Russia RUS 199663.86 13.72
Russia RUS 199766.68 13.05
Russia RUS 199867.73 9.20
Russia RUS 199957.35 8.81
Russia RUS 200054.74 8.79
Rwanda RWA 1994132.16 4.48
Rwanda RWA 199592.77 3.08
Rwanda RWA 199689.71 3.21
Rwanda RWA 199791.44 3.72
Rwanda RWA 199889.34 4.22
Rwanda RWA 199985.72 3.46
Rwanda RWA 200083.86 3.22
Saudi Arabia SAU 1994na na
Saudi Arabia SAU 1995na na
Saudi Arabia SAU 199646.99 8.88
Saudi Arabia SAU 1997na na
Saudi Arabia SAU 1998na na
Saudi Arabia SAU 1999na na
Saudi Arabia SAU 2000na na
Sudan SDN 1994na na
Sudan SDN 1995na na
Sudan SDN 199679.21 9.57
Sudan SDN 1997na na
Sudan SDN 1998na na
Sudan SDN 1999na na
Sudan SDN 2000na na
Senegal SEN 199481.26 6.60
Senegal SEN 199582.13 6.41
Senegal SEN 199683.67 6.66
Senegal SEN 199783.82 6.55
Senegal SEN 199883.67 7.44
Senegal SEN 199986.21 6.91
Senegal SEN 200086.91 7.14
Singapore SGP 199438.34 39.92
Singapore SGP 199536.51 41.32
Singapore SGP 199634.74 43.93
Singapore SGP 199733.92 45.56
Singapore SGP 199832.87 40.05
Singapore SGP 199934.74 37.74
Singapore SGP 200034.79 37.72
Sierra Leone SLE 199481.94 4.55
Sierra Leone SLE 199592.02 3.21
Sierra Leone SLE 199698.93 5.27
Sierra Leone SLE 1997na na
Sierra Leone SLE 199894.56 4.22
Sierra Leone SLE 1999na na
Sierra Leone SLE 200093.12 3.91
El Salvador SLV 199489.03 9.81
El Salvador SLV 199589.31 10.35
El Salvador SLV 199688.77 7.79
El Salvador SLV 199787.05 7.90
El Salvador SLV 199886.72 9.28
El Salvador SLV 199987.76 8.34
El Salvador SLV 200089.26 8.87
Sao Tome and Principe STP 1994102.76 18.97
Sao Tome and Principe STP 1995114.31 17.42
Sao Tome and Principe STP 1996106.56 18.71
Sao Tome and Principe STP 1997na na
Sao Tome and Principe STP 199875.45 17.81
Sao Tome and Principe STP 199974.96 18.08
Sao Tome and Principe STP 200074.00 18.08
Slovak Republic SVK 199465.49 16.74
Slovak Republic SVK 199565.91 21.68
Slovak Republic SVK 199670.16 27.02
Slovak Republic SVK 199770.37 26.01
Slovak Republic SVK 199856.47 27.91
Slovak Republic SVK 199955.98 24.51
Slovak Republic SVK 200052.22 24.78
Slovenia SVN 199453.21 19.87
Slovenia SVN 199554.46 23.11
Slovenia SVN 199654.32 23.23
Slovenia SVN 199753.24 24.14
Slovenia SVN 199852.82 25.35
Slovenia SVN 199953.27 27.82
Slovenia SVN 200051.13 27.60
Sweden SWE 199469.48 18.48
Sweden SWE 199566.83 19.46
Sweden SWE 199667.50 18.93
Sweden SWE 199767.27 18.59
Sweden SWE 199867.56 19.56
Sweden SWE 199967.93 19.51
Sweden SWE 200050.14 20.60
Swaziland SWZ 1994na na
Swaziland SWZ 1995na na
Swaziland SWZ 199671.22 18.45
Swaziland SWZ 199770.88 20.40
Swaziland SWZ 199869.07 21.30
Swaziland SWZ 199970.47 18.63
Swaziland SWZ 200070.87 18.87
Seychelles SYC 199442.56 16.11
Seychelles SYC 199552.63 16.28
Seychelles SYC 199645.20 28.23
Seychelles SYC 199757.54 18.98
Seychelles SYC 199873.09 16.45
Seychelles SYC 199965.64 17.61
Seychelles SYC 200062.18 14.50
Syria SYR 199474.74 11.94
Syria SYR 199570.86 10.43
Syria SYR 199670.93 9.15
Syria SYR 199767.45 8.26
Syria SYR 199867.96 7.89
Syria SYR 199965.98 7.66
Syria SYR 200060.57 7.00
Chad TCD 199490.13 7.87
Chad TCD 199585.24 4.67
Chad TCD 199684.43 6.47
Chad TCD 199784.76 6.29
Chad TCD 199886.65 6.97
Chad TCD 199985.94 4.83
Chad TCD 200079.78 6.70
Togo TGO 199468.92 9.01
Togo TGO 199569.31 9.94
Togo TGO 199671.39 12.18
Togo TGO 199783.52 10.62
Togo TGO 199877.32 12.72
Togo TGO 199976.58 11.32
Togo TGO 200077.45 12.32
Thailand THA 199449.76 41.04
Thailand THA 199550.86 42.04
Thailand THA 199650.60 41.49
Thailand THA 199751.84 33.08
Thailand THA 199851.04 17.75
Thailand THA 199953.04 18.58
Thailand THA 200053.46 20.87
Tajikistan TJK 1994na na
Tajikistan TJK 1995na na
Tajikistan TJK 199667.37 11.96
Tajikistan TJK 199768.69 8.66
Tajikistan TJK 199883.12 6.86
Tajikistan TJK 199971.90 8.41
Tajikistan TJK 200075.94 9.09
Turkmenistan TKM 1994na na
Turkmenistan TKM 1995na na
Turkmenistan TKM 199639.05 40.47
Turkmenistan TKM 1997na na
Turkmenistan TKM 1998na na
Turkmenistan TKM 1999na na
Turkmenistan TKM 2000na na
Trinidad&Tobago TTO 199458.83 12.99
Trinidad&Tobago TTO 199561.43 9.78
Trinidad&Tobago TTO 199663.48 10.14
Trinidad&Tobago TTO 199769.75 17.97
Trinidad&Tobago TTO 199874.74 14.06
Trinidad&Tobago TTO 199972.84 8.36
Trinidad&Tobago TTO 200069.76 7.43
Tunisia TUN 199476.17 12.71
Tunisia TUN 199576.85 12.78
Tunisia TUN 199677.48 13.06
Tunisia TUN 199778.11 13.12
Tunisia TUN 199879.27 12.98
Tunisia TUN 199978.74 12.49
Tunisia TUN 200078.56 13.29
Turkey TUR 199469.04 16.11
Turkey TUR 199568.59 21.63
Turkey TUR 199670.84 20.99
Turkey TUR 199770.55 21.49
Turkey TUR 199869.10 20.15
Turkey TUR 199969.65 18.07
Turkey TUR 200069.15 21.11
Taiwan TWN 199462.63 21.77
Taiwan TWN 199562.85 21.63
Taiwan TWN 199662.49 20.63
Taiwan TWN 199762.75 21.83
Taiwan TWN 199863.93 21.96
Taiwan TWN 1999na na
Taiwan TWN 2000na na
Tanzania TZA 199486.97 11.15
Tanzania TZA 199585.15 9.92
Tanzania TZA 199685.45 8.62
Tanzania TZA 199782.23 10.42
Tanzania TZA 199889.55 9.83
Tanzania TZA 199988.05 8.90
Tanzania TZA 200083.33 9.39
Uganda UGA 199478.67 2.92
Uganda UGA 199578.14 3.53
Uganda UGA 199680.10 3.64
Uganda UGA 199776.78 3.29
Uganda UGA 199878.37 3.17
Uganda UGA 199983.85 3.22
Uganda UGA 200085.06 3.57
Ukraine UKR 199454.28 17.10
Ukraine UKR 199555.88 11.12
Ukraine UKR 199656.48 9.03
Ukraine UKR 199756.85 9.34
Ukraine UKR 199857.65 9.36
Ukraine UKR 199954.19 8.80
Ukraine UKR 200054.36 9.68
Uruguay URY 199469.50 12.00
Uruguay URY 199567.90 12.65
Uruguay URY 199669.59 11.58
Uruguay URY 199769.85 11.79
Uruguay URY 199870.63 12.21
Uruguay URY 199971.49 11.06
Uruguay URY 200071.82 10.03
United States USA 199468.11 20.90
United States USA 199568.14 20.98
United States USA 199668.05 21.58
United States USA 199767.45 22.52
United States USA 199868.08 22.89
United States USA 199968.84 23.14
United States USA 200068.26 24.25
Uzbekistan UZB 199455.78 13.30
Uzbekistan UZB 199546.88 13.69
Uzbekistan UZB 199655.53 9.33
Uzbekistan UZB 1997na na
Uzbekistan UZB 1998na na
Uzbekistan UZB 1999na na
Uzbekistan UZB 2000na na
St.Vincent & Grenadines VCT 199455.00 9.08
St.Vincent & Grenadines VCT 199546.90 9.66
St.Vincent & Grenadines VCT 199646.09 8.90
St.Vincent & Grenadines VCT 199757.14 9.77
St.Vincent & Grenadines VCT 199855.10 10.36
St.Vincent & Grenadines VCT 199953.17 10.42
St.Vincent & Grenadines VCT 200046.42 8.43
Venezuela VEN 199465.22 10.43
Venezuela VEN 199564.45 13.96
Venezuela VEN 199658.90 11.65
Venezuela VEN 199762.94 15.71
Venezuela VEN 199868.34 16.95
Venezuela VEN 199964.40 13.85
Venezuela VEN 200057.99 13.54
Vietnam VNM 199473.44 12.60
Vietnam VNM 199575.01 13.98
Vietnam VNM 199679.06 14.90
Vietnam VNM 199777.91 13.19
Vietnam VNM 1998na na
Vietnam VNM 1999na na
Vietnam VNM 2000na na
Yemen YEM 199449.13 5.30
Yemen YEM 199555.43 6.58
Yemen YEM 199666.80 6.82
Yemen YEM 199750.50 6.38
Yemen YEM 199856.05 6.27
Yemen YEM 199953.31 5.37
Yemen YEM 200039.77 5.62
South Africa ZAF 199462.72 7.73
South Africa ZAF 199565.00 8.57
South Africa ZAF 199665.17 7.94
South Africa ZAF 199765.45 7.61
South Africa ZAF 199866.23 7.28
South Africa ZAF 199965.74 6.74
South Africa ZAF 200064.99 7.08
Congo, Dem. Rep. ZAR 199480.48 2.96
Congo, Dem. Rep. ZAR 199577.93 2.63
Congo, Dem. Rep. ZAR 199678.43 2.43
Congo, Dem. Rep. ZAR 199781.94 2.60
Congo, Dem. Rep. ZAR 1998na na
Congo, Dem. Rep. ZAR 1999na na
Congo, Dem. Rep. ZAR 2000na na
Zambia ZMB 199475.43 9.86
Zambia ZMB 199576.55 10.31
Zambia ZMB 199678.74 10.99
Zambia ZMB 199777.59 12.15
Zambia ZMB 199885.12 13.75
Zambia ZMB 199991.82 15.30
Zambia ZMB 200086.33 15.38
Zimbabwe ZWE 199460.10 18.53
Zimbabwe ZWE 199566.89 15.03
Zimbabwe ZWE 199672.06 11.32
Zimbabwe ZWE 199782.82 11.01
Zimbabwe ZWE 199877.66 10.75
Zimbabwe ZWE 199976.89 10.73
Zimbabwe ZWE 2000
+
+ + + +
+ + + + diff --git a/demos/old/dev-complex.html b/demos/old/dev-complex.html deleted file mode 100644 index dfce6f93..00000000 --- a/demos/old/dev-complex.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - HTML Table Filter Generator - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FromDestinationRoad Distance (km)By Air (hrs)By Rail (hrs)
SydneyAdelaide14121.425.3
SydneyBrisbane9821.516
SydneyCanberra286.64.3
SydneyMelbourne8721.110.5
AdelaidePerth27813.138
AdelaideAlice Springs1533220.25
AdelaideBrisbane20452.1540
-
- - - - - - \ No newline at end of file diff --git a/demos/old/dev.html b/demos/old/dev.html deleted file mode 100644 index 37c430ea..00000000 --- a/demos/old/dev.html +++ /dev/null @@ -1,214 +0,0 @@ - - - - HTML Table Filter Generator - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FromDestinationRoad Distance (km)By Air (hrs)By Rail (hrs)
Tot:
SydneyAdelaide14121.425.3
SydneyBrisbane9821.516
SydneyCanberra286.64.3
SydneyMelbourne8721.110.5
AdelaidePerth27813.138
AdelaideAlice Springs1533220.25
AdelaideBrisbane20452.1540
- -
- - - - - -
- - - - - \ No newline at end of file diff --git a/demos/old/dist-complex.html b/demos/old/dist-complex.html deleted file mode 100644 index ccb69569..00000000 --- a/demos/old/dist-complex.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - HTML Table Filter Generator - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FromDestinationRoad Distance (km)By Air (hrs)By Rail (hrs)
SydneyAdelaide14121.425.3
SydneyBrisbane9821.516
SydneyCanberra286.64.3
SydneyMelbourne8721.110.5
AdelaidePerth27813.138
AdelaideAlice Springs1533220.25
AdelaideBrisbane20452.1540
-
- - - - - - \ No newline at end of file diff --git a/demos/old/dist.html b/demos/old/dist.html deleted file mode 100644 index f8e856e9..00000000 --- a/demos/old/dist.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - HTML Table Filter Generator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FromDestinationRoad Distance (km)By Air (hrs)By Rail (hrs)
Tot:
SydneyAdelaide14121.425.3
SydneyBrisbane9821.516
SydneyCanberra286.64.3
SydneyMelbourne8721.110.5
AdelaidePerth27813.138
AdelaideAlice Springs1533220.25
AdelaideBrisbane20452.1540
- - - - - \ No newline at end of file diff --git a/dist/tablefilter/style/tablefilter.css b/dist/tablefilter/style/tablefilter.css index 7ea0de72..a079891c 100644 --- a/dist/tablefilter/style/tablefilter.css +++ b/dist/tablefilter/style/tablefilter.css @@ -283,7 +283,7 @@ div.grd_Cont .odd{ background-color:#DFE8F6; }/*row bg alternating color*/ /* Selection */ .ezActiveRow{ background-color:#2852A8 !important; color:#fff; } -.ezSelectedRow{ background-color:#316AC5; color:#fff; } +.ezSelectedRow{ background-color:#316AC5 !important; color:#fff; } .ezActiveCell{ background-color:#D9E8FB !important; color:#000 !important; font-weight:bold; diff --git a/dist/tablefilter/tf-1.js b/dist/tablefilter/tf-1.js index c21f07f7..95f92d7a 100644 --- a/dist/tablefilter/tf-1.js +++ b/dist/tablefilter/tf-1.js @@ -198,10 +198,7 @@ webpackJsonp([1],[ } cfg.base_path = cfg.base_path || tf.basePath + 'ezEditTable/'; - // var editable = tf.editable; var editable = cfg.editable; - // cfg.editable = editable; - // var selectable = tf.selectable; var selectable = cfg.selectable; cfg.selection = selectable; diff --git a/libs/ezEditTable/docs/doc.html b/libs/ezEditTable/docs/doc.html deleted file mode 100644 index 51c58484..00000000 --- a/libs/ezEditTable/docs/doc.html +++ /dev/null @@ -1,2049 +0,0 @@ - - - - ezEditTable, enhance HTML tables easily, advanced inline editing, selection and keyboard navigation - script by Max Guglielmi - - - - - - - - - - - - - - - -
- - - - - -
- - - -

Documentation

- - - -

Configuration Object

- - -

You will find here all the properties of the configuration object ( var - etConfig = { property: value }) needed to configure the EditTable object:

- - - - - -

General

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropertyTypeDescriptionRemarksExample
selectionbooleanenables / disables selection model (default - true)  var etConfig = { selection: false }
editablebooleanenables / disables inline cell editing(default - false)  var etConfig = { editable: true }
key_navigationbooleanenables / disables keyboard navigation (default - true) var etConfig = { key_navigation: false }
table_cssstringdefines the css class of the table element (default - 'ezEditableTable')Check out the ezEditTable.css stylesheet and edit the css classes - for your project's needs var etConfig = { table_css: "myclass" }
unselectable_css string defines the css class that makes the table text unselectable (default - - 'ezUnselectable')Older versions of IE do not support this css class, as an alternative - use unselectable="on" to expect same result var etConfig = { unselectable_css: "myclass" }
activity_indicator_css string defines the css class to be applied to the table in order to indicate - server activity   var etConfig = { activity_indicator_css: "myclass" }
on_server_activity_start function callback event function called before server activity starts (default: - null)

2 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • -
  • row is the current row to be processed server-side
  • -
var etConfig = { on_server_activity_start: function(o, row){ - alert('Row data to be processed: ' + o.Selection.GetRowValues(row)); } }
on_server_activity_stop function callback event function called when server activity stopped (default: - null)

2 parameters are passed to the function:

- - -
    -
  • o is the current EditTable object
  • -
  • row is the current row to be processed server-side
  • -
var etConfig = { on_server_activity_stop: function(o, row){ - alert('Row data processed server-side: ' + o.Selection.GetRowValues(row)); - } }
base_pathstring defines the path to the script's directory (default: 'ezEditTable/')This is used for the command editor icons' path var etConfig = { base_path: "myDir/" }
- Top of page -
- - - -

Selection

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropertyTypeDescriptionRemarksExample
selection_modelstring defines the selection model: "single" or "multiple" - (default: 'single') 2 possible values: 'single' or 'multiple'var etConfig = { selection_model: 'multiple' }
default_selectionstringdefines the selection type (default: 'row')3 possible values: 'row', 'cell' or 'both'var etConfig = { default_selection: 'both' }
key_selectionbooleanenables / disable multiple selection by using Ctrl and Shift keys - (default: true)select multiple rows by holding Ctrl or Shift key down, only if - selection model is 'multiple'var etConfig = { key_selection: false }
select_row_at_startbooleanfirst row is selected at start if set true (default: false) var etConfig = { select_row_at_start: true }
row_index_at_startnumberdefines which row has to be selected at start (default: this.startRow)this.startRow = numeric parameter passed to constructor:
- var et = new EditTable('myTableId', 3, etConfig);
var etConfig = { row_index_at_start: 3 }
scroll_into_viewbooleanIf set true selected row scrolls into view; useful when row is selected - by using keyboard (default: false) var etConfig = { scroll_into_view: true }
active_row_cssstringdefines css class for active row (default: 'ezActiveRow') var etConfig = { active_row_css: 'myClass' }
selected_row_cssstringdefines css class for selected rows (default: 'ezSelectedRow')

only if 'multiple' selection model is enabled

-
var etConfig = { selected_row_css: 'myClass' }
active_cell_cssstring defines css class for active cell (default: 'ezActiveCell')only if 'cell' or 'both' selection type is enabledvar etConfig = { active_cell_css: 'myClass' };
nb_rows_per_pagenumber defines number of rows to jump when PgDown or PgUp keys are pressed - (default: 10)

specify a huge number to jump straight to 1st or last row (1000)

-
var etConfig = { nb_rows_per_page: 1000 }
- Top of page -
- - -

Selection callback events

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropertyTypeDescriptionRemarksExample
on_selection_initializedfunctioncallback event function called when Selection object is initialised - (default: null)

1 parameter is passed to the function:

-
    -
  • o is the current EditTable object
  • - -
var etConfig = { on_selection_initialized: function(o){ alert(o.id+' - Selection object is initialised!'); } }
on_before_selected_rowfunctioncallback event function called before a row is selected (default: - null) )

2 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • -
  • row is the current row to be selected
  • -
var etConfig = { on_before_selected_row: function(o, row){ - alert('Row index: ' + row.rowIndex); } }
on_after_selected_rowfunctioncallback event function called after a row is selected (default: - null)

2 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • - -
  • row is the current selected row
  • -
var etConfig = { on_after_selected_row: function(o, row){ - alert('Row index: ' + row.rowIndex); } }
on_before_selected_cellfunctioncallback event function called before a cell is selected (default: - null)

2 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • -
  • cell is the current cell to be selected
  • -
var etConfig = { on_before_selected_cell: function(o, cell){ - alert('Cell index: ' + cell.cellIndex); } }
on_after_selected_cellfunctioncallback event function called (default: null)

2 parameters are passed to the function:

-
    - -
  • o is the current EditTable object
  • -
  • cell is the current selected cell
  • -
var etConfig = { on_after_selected_cell: function(o, cell){ - alert('Cell index: ' + cell.cellIndex); } }
on_before_deselected_rowfunctioncallback event function called before a row is deselected (default: - null)

2 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • -
  • row is the current row to be deselected
  • - -
var etConfig = { on_before_deselected_row: function(o, row){ - alert('Row index: ' + row.rowIndex); } }
on_after_deselected_rowfunctioncallback event function called after a row is deselected (default: - null)

2 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • -
  • row is the current deselected row
  • -
var etConfig = { on_after_deselected_row: function(o, row){ - alert('Row index: ' + row.rowIndex); } }
on_before_deselected_cellfunctioncallback event function called before a cell is deselected (default: - null)

2 parameters are passed to the function:

-
    - -
  • o is the current EditTable object
  • -
  • cell is the current cell to be deselected
  • -
var etConfig = { on_before_deselected_cell: function(o, cell){ - alert('Cell index: ' + cell.cellIndex); } }
on_after_deselected_cellfunctioncallback event function called after a cell is deselected (default: - null)

2 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • -
  • cell is the current deselected cell
  • - -
var etConfig = { on_after_deselected_cell: function(o, cell){ - alert('Cell index: ' + cell.cellIndex); } }
on_validate_rowfunctioncallback event function called after a row is validated by pressing enter key or on double-click (default: - null)

2 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • -
  • row is the current validated row
  • -
-

Note the editable property needs to be set to false

- -
var etConfig = { on_validate_row: function(o, row){ - alert('Row index: ' + row.rowIndex); } }
on_validate_cellfunctioncallback event function called after a cell is validated by pressing enter key or on double-click (default: - null)

2 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • -
  • cell is the current validated cell
  • -
-

Note the editable property needs to be set to false

- -
var etConfig = { on_validate_cell: function(o, cell){ - alert('Cell index: ' + cell.cellIndex); } }
- Top of page -
- - - -

Editable

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropertyTypeDescriptionRemarksExample
editor_modelstringdefines the editor model (default: 'cell')2 possible values: 'cell' or 'row'var etConfig = { editor_model: 'row' }
open_editor_actionstringdefines which mouse action opens the inline editing feature (default: - 'dblclick') 2 possible values: 'dblclick', 'click'var etConfig = { open_editor_action: 'click' }
ajax newbooleanenables AJAX requests (default: true if jQuery is detected)it is enabled if jQuery is detected and the ajax property is - not explicitly set falsevar etConfig = { editable: true, ajax: false }
cell_editorsarrayarray defining the editor configuration for each column (default: - []) the number of editors must be equal to the number of columns. Refer - to Cell editors properties for details - about editors' configuration

var etConfig = { cell_editors: [
- { type: 'select' },
- { type: 'textarea' },
- { type: 'input' },
- { type: 'uploader' },
- { type: 'none' },
- { type: 'command' }
- ] }

input_editor_cssstringdefines the css class for 'input' type editors (default: 'ezInputEditor') var etConfig = { input_editor_css: 'myClass' };
textarea_editor_cssstringdefines the css class for 'textarea' type editors (default: 'ezTextAreaEditor') var etConfig = { textarea_editor_css: 'myClass' };
select_editor_cssstringdefines the css class for 'input' type editors (default: 'ezSelectEditor') var etConfig = { select_editor_css: 'myClass' };
command_editor_cssstringcss class applied to command editor buttons container (default: - 'ezCommandEditor') var etConfig = { command_editor_css: 'myClass' };
modified_cell_cssstringcss class applied to modified cells (default: 'ezModifiedCell')this css class shows the green small triangle in the left-upper - corner of the cellvar etConfig = { modified_cell_css: 'myClass' };
auto_savebooleansaves automatically pending changes upon selection changeeditable property needs to be activated (default: true if editable is on)var etConfig = { auto_save: false };
auto_save_modelstringdetermines when modified and/or added data is saved, upon row or cell selection change (default: 'row')2 possible values 'row' or 'cell'var etConfig = { auto_save_model: 'cell' };
auto_save_typestringdefines if only insertions or updates, or both are saved automatically (default: 'both')3 possible values 'insert', 'update' or 'both'var etConfig = { auto_save_type: 'update' };
editable_on_keystroke newbooleanmakes the inline cell editor appear upon keystroke (default: false)only if edition is enabled and editorModel is set to 'cell' and - selectionModel to 'single'var etConfig = { editable: true, editable_on_keystroke: true };
new_row_prefixstringdefines the prefix for new added row ids (default: 'tr')prefix should match the prefix assigned to already existing rowsvar etConfig = { new_row_prefix: 'row' };
form_submit_intervalnumberdefines the interval in ms separating rows data submissions (default: 50)by default the script submits a single form for each modified row. Depending on ISPs / network - security policies, multiple submissions to same page are blocked by the server. - This interval can be useful to fine tune the form submissions when those server restrictions apply.var etConfig = { form_submit_interval: 750 };
new_row_pos newstring or numberdefines the row position of a newly created row (default: 'top')2 possible values as a string: 'top' or 'bottom', and as an integer: - any number >= 0 and <= total number of rows. If the supplied numeric - value exceeds the total number of rows then the script fallback to default - value 'top'var etConfig = { new_row_pos: 'bottom' };
- - Top of page -
- - -

Cell editors

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropertyTypeDescriptionRemarksExample
typestringsets the editor type (default: 'input')these are the editor types: 'none', 'input', 'textarea', 'select', - 'multiple', 'boolean', 'command', 'custom', 'uploader' var etConfig = { cell_editors: [
- { type: 'select' },
- { type: 'textarea' },
- { type: 'input' },
- { type: 'uploader' },
- { type: 'none' },
- { type: 'command' }
- ]}
cssstringdefines a css class for the editor (default: null)  var etConfig = { cell_editors: [
- { type: 'select', css:'myClass' },...
- ]}
attributesarray defines the additional attributes for the editor's DOM element - (default: null)useful for specifying the max length of characters for input and - textarea typesvar etConfig = { cell_editors: [
- - { type: 'input', attributes:[['maxLength',5],['title','5 chars max']] - },...
- ]}
stylestringsets the inline style for the editor's DOM element (default: null) var etConfig = { cell_editors: [
- { type: 'textarea', style: 'background-color:#fff;' },...
- ]}
custom_slc_optionsarraydefines the options of a 'select' editor type (default: null)this property applies only to 'select' and 'multiple' editors { - type: 'multiple', custom_slc_options:['a','b','c'], sort_slc_options: - 'string', values_separator: ', ' },var etConfig = { cell_editors: [
- { type: 'select', custom_slc_options:['a','b','c'] },...
- ]}
custom_slc_valuesarraydefines the options values of a 'select' editor type (default: null)this property applies only to 'select' and 'multiple' editors { - type: 'multiple', custom_slc_options:['a','b','c'], custom_slc_values:['1','2','3'], sort_slc_options: - 'string', values_separator: ', ' },var etConfig = { cell_editors: [
- { type: 'select', custom_slc_options:['a','b','c'], custom_slc_values:['1','2','3'] },...
- ]}
sort_slc_optionsstringsorts the custom options (default: null)

this property applies only to 'select' and 'multiple' editors. - 3 possible values:

-
    - -
  • 'string': sorts string values
  • -
  • 'numasc': sorts numeric values in ascending manner
  • -
  • 'numdesc': sorts numeric values in descending manner
  • -
var etConfig = { cell_editors: [
- { type: 'select', custom_slc_options:['a','b','c'], sort_slc_options: - 'string' },...
- ]}
values_separatorstringdefines the value separator for 'multiple' type editors (default: - ', ') this property applies only to 'multiple' editorsvar etConfig = { cell_editors: [
- { type: 'multiple', custom_slc_options:['a','b','c'], sort_slc_options: - 'string', values_separator: '; ' },...
- ]}
allow_empty_valuebooleandefines the columns accepting empty values (default: false)var etConfig = { cell_editors: [
- { type: 'input', allow_empty_value:true },...
- ]}
targetstringdefines the custom editor target element id (default: 'null')this property applies only to 'custom' editorsvar etConfig = { cell_editors: [
- { type: 'custom', target: 'datePick' },...
- ]}
command_column_indexnumbertells the script in which column command buttons have to be generated - (default: this.nbCells-1)this property applies only to 'command' editors. Default value is - the last column of the tablevar etConfig = { cell_editors: [
- { type: 'command', command_column_index: 4 },...
- ]}
buttonsobject

this literal object is the configuration object of the command - buttons generated in column (default: {})

this property applies only to 'command' editors. Refer to Command - buttons properties for details about 'command' editor buttons - configuration

var etConfig = { cell_editors: [
- { type: 'command', command_column_index: 4,
- buttons:{
- enable: ['update', 'insert', 'delete', 'submit', 'cancel'],
- 'update': { title:'Edit row' },
- 'insert': { title:'Add row', scrollIntoView: false },
- 'delete': { title:'Delete row' },
- 'submit': { text:'Save', title:'Save' },
- 'cancel': { text:'Cancel', title:'Cancel' } }
- },...
- - ]}

- Top of page -
- - -

Command buttons

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropertyTypeDescriptionRemarksExample
enablearrayenables the command buttons to be generated (default: ['update', - 'insert', 'delete', 'submit', 'cancel'])command buttons types: 'update', 'insert', 'delete', 'submit', 'cancel'. - To disable a particular button remove it from the arrayvar etConfig = { cell_editors: [
- { type: 'command', command_column_index: 4,
- buttons:{
- enable: ['update', 'submit', 'cancel'],
- 'update': { title:'Edit row' },
- - 'submit': { text:'Save', title:'Save' },
- 'cancel': { text:'Cancel', title:'Cancel' } }
},...
- ]}
updateobjectconfiguration object of the 'update' button (default: {})

Below a list of the properties for the 'update' button:

-
    -
  • 'text': text of the button (default: '')
  • -
  • 'icon': icon image html (default: '<img src="'+this.basePath+'themes/icn_edit.gif" - alt="" />')
  • - -
  • 'title': tooltip for the button (default: 'Edit record')
  • -
  • 'css': additional css class (default: null)
  • -
  • 'style': inline style element (default: null)
  • -
var etConfig = { cell_editors: [
- { type: 'command', command_column_index: 4,
- - buttons:{
- enable: ['update'],
- 'update': { text:'Edit', title:'Edit row', css:'myClass'}
},...
- ]}
insertobject configuration object of the 'insert' button (default: {})

Below a list of the properties for the 'insert' button:

-
    -
  • 'text': text of the button (default: '')
  • -
  • 'icon': icon image html (default: '<img src="'+this.basePath+'themes/icn_edit.gif" - alt="" />')
  • - -
  • 'title': tooltip for the button (default: 'Create record')
  • -
  • 'css': additional css class (default: null)
  • -
  • 'style': inline style element (default: null)
  • -
  • 'scrollIntoView': scrolls into view inserted row (default: false)
  • -
var etConfig = { cell_editors: [
- { type: 'command', command_column_index: 4,
- buttons:{
- enable: ['insert'],
- 'insert': { text:'Add', title:'Add row', css:'myClass'}
},...
- ]}
deleteobjectconfiguration object of the 'delete' button (default: {})

Below a list of the properties for the 'delete' button:

-
    -
  • 'text': text of the button (default: '')
  • - -
  • 'icon': icon image html (default: '<img src="'+this.basePath+'themes/icn_edit.gif" - alt="" />')
  • -
  • 'title': tooltip for the button (default: 'Delete record')
  • -
  • 'css': additional css class (default: null)
  • -
  • 'style': inline style element (default: null)
  • - -
var etConfig = { cell_editors: [
- { type: 'command', command_column_index: 4,
- buttons:{
- enable: ['delete'],
- 'delete': { text:'Remove', title:'Remove row', css:'myClass'}
},...
- - ]}
submitobjectconfiguration object of the 'submit' button (default: {})

Below a list of the properties for the 'submit' button:

-
    -
  • 'text': text of the button (default: 'Submit')
  • -
  • 'icon': icon image html (default: '<img src="'+this.basePath+'themes/icn_edit.gif" - alt="" />')
  • -
  • 'title': tooltip for the button (default: 'Submit record')
  • - -
  • 'css': additional css class (default: null)
  • -
  • 'style': inline style element (default: null)
  • -
var etConfig = { cell_editors: [
- { type: 'command', command_column_index: 4,
- buttons:{
- - enable: ['submit'],
- 'submit': { text:'Save', title:'Save row', css:'myClass'}
},...
- ]}
cancelobjectconfiguration object of the 'cancel' button (default: {})

Below a list of the properties for the 'cancel' button:

-
    -
  • 'text': text of the button (default: 'Cancel')
  • -
  • 'icon': icon image html (default: '<img src="'+this.basePath+'themes/icn_edit.gif" - alt="" />')
  • - -
  • 'title': tooltip for the button (default: 'Cancel')
  • -
  • 'css': additional css class (default: null)
  • -
  • 'style': inline style element (default: null)
  • -
var etConfig = { cell_editors: [
- { type: 'command', command_column_index: 4,
- - buttons:{
- enable: ['cancel'],
- 'cancel': { css:'myClass'}
},...
- ]}
- Top of page -
- - -

Uploader editor

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropertyTypeDescriptionRemarksExample
uploaderobjectdefines the uploader editor settings (default: {}) ...cell_editors:[ - { - type: 'uploader', - uploader: { uri: 'php/uploadFile.php', path: 'images/uploads/', max_file_size: '51200', show_link: false } - },... - ] -
uristringdefines the URL of the resource performing the upload operation (default: null) ...cell_editors:[ - { - type: 'uploader', - uploader: { uri: 'php/uploadFile.php' } - },... - ] -
pathstringdefines the path to the uploads folder repository (default: null) ...cell_editors:[ - { - type: 'uploader', - uploader: { path: 'images/uploads/' } - },... - ] -
show_uploadbooleanshows or hides uploaded file (default: true) ...cell_editors:[ - { - type: 'uploader', - uploader: { show_upload: false } - },... - ] -
sql_fieldstringdefines the name of the SQL field name storing upload filename (default: 'IMAGENAME')optional depending on how the upload server-side operation is implemented. - On the script's website, the name of the SQL field storing the filename is rerquired by the PHP resource. - This does not mean that it is a good practice, it is just for demoing purposes....cell_editors:[ - { - type: 'uploader', - uploader: { sql_field: 'FILENAME' } - },... - ] -
record_id_column_indexnumbertells the script which is the index of the column containing the record id (default: null)optional depending on how the id of a record is used in the HTML table. - If this property is defined, the script will use it in order to retrieve the - record id of working row. Otherwise, it will extract it from the id of the - working row, by default 'tr'+Id. - ...cell_editors:[ - { - type: 'uploader', - uploader: { record_id_column_index: 0 } - },... - ] -
show_linkbooleanUploaded file appears as a link in the uploader box and in the cell if set true (default: true) ...cell_editors:[ - { - type: 'uploader', - uploader: { show_link: false } - },... - ] -
link_cssstringdefines the css class for the upload link (default: '') ...cell_editors:[ - { - type: 'uploader', - uploader: { show_link: true, link_css: 'myClass' } - },... - ] -
loader_imagestringdefines the path of the loader image displayed during the upload operation (default: this.basePath + 'themes/img_loader.gif') ...cell_editors:[ - { - type: 'uploader', - uploader: { loader_image: 'myFolder/loader.gif' } - },... - ] -
ok_imagestringsets the path of the image used to notify users that cell contains an uploaded file (default: this.basePath + 'themes/img_loader.gif')If show_upload is active and show_link property is set false this property applies....cell_editors:[ - { - type: 'uploader', - uploader: { ok_image: 'myFolder/ok.gif' } - },... - ] -
max_file_sizenumbersets the maximum file size allowed, default value is 100Kb (default: 102400)Optional depending on the server-side implementation. This value is passed to the server in the online script's demos....cell_editors:[ - { - type: 'uploader', - uploader: { max_file_size: 51200 } - },... - ] -
valid_extensionsstringsets a list of comma separated file extensions to pass to the server logic (default: 'jpg, jpeg, gif, png')Optional depending on the server-side implementation. This value is passed to the server in the online script's demos....cell_editors:[ - { - type: 'uploader', - uploader: { valid_extensions: 'doc,docx,pdf,rtf' } - },... - ] -
cssstringdefines the css class applied to the uploader container element (default: 'ezUploaderEditor')...cell_editors:[ - { - type: 'uploader', - uploader: { css: 'myClass' } - },... - ] -
output_cssstringdefines the css class applied to the uploader output messages container (default: 'ezUploaderEditorOutput')...cell_editors:[ - { - type: 'uploader', - uploader: { output_css: 'myClass' } - },... - ] -
display_cssstringdefines the css class applied to the image displayer container (default: 'ezUploaderEditorOutput')...cell_editors:[ - { - type: 'uploader', - uploader: { output_css: 'myClass' } - },... - ] -
javascript_code_successstringdefines javascript code to be injected by the server after a successfull upload operation - (default: '<script>window.parent["{1}"].SetUploadSuccess(true); window.parent["{1}"].SetUploadName("{0}");' + - 'window.parent["{1}"].ShowUpload();</script>')Optional depending on server-side implementation. This value is passed to the server in the online script's demos....cell_editors:[ - { - type: 'uploader', - uploader: { javascript_code_success: '<script>alert('Upload name: {0}');</script>' } - },... - ] -
- - Top of page -
- - -

Editable and cell editors callback events and delegates

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropertyTypeDescriptionRemarksExample
on_editable_initializedfunctioncallback event function called when Editable object is initialised - (default: null)

1 parameter is passed to the function:

-
    -
  • o is the current EditTable object
  • - -
var etConfig = { on_editable_initialized: function(o){ alert(o.id+ - ' Editable object is initialised!'); } }
on_before_open_editorfunctioncallback event function called before a cell editor is opened - (default: null) -

3 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • -
  • cell is the current cell
  • -
  • editor is the current opened editor
  • -
var etConfig = { on_before_open_editor: function(o, cell, - editor){ cell.style.backgroundColor = 'pink'; } }
on_after_open_editorfunction callback event function called after a cell editor is opened (default: - null)

3 parameters are passed to the function:

-
    - -
  • o is the current EditTable object
  • -
  • cell is the current cell
  • -
  • editor is the current opened editor
  • -
var etConfig = { on_after_open_editor: function(o, cell, editor){ - cell.style.backgroundColor = 'transparent'; } }
on_before_close_editorfunctioncallback event function called before a cell editor is closed (default: - null)

3 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • - -
  • cell is the current cell
  • -
  • editor is the current opened editor
  • -
var etConfig = { on_before_close_editor: function(o, cell, - editor){ cell.style.backgroundColor = 'pink'; } }
on_after_close_editorfunctioncallback event function called after a cell editor is closed (default: - null)

3 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • -
  • cell is the current cell
  • - -
  • editor is the current opened editor
  • -
var etConfig = { on_after_close_editor: function(o, cell, - editor){ cell.style.backgroundColor = 'transparent'; } }
set_custom_editor_valuefunctiondelegate function called to set 'custom' editor value (default: - null)

4 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • -
  • editor is the current opened editor
  • -
  • colIndex is the column index
  • - -
  • val is the value to set in the custom editor
  • -
var etConfig = { set_custom_editor_value: function(o, editor, - colIndex, val){ alert('Value to set in custom editor:' + val); } }
get_custom_editor_valuefunctiondelegate function called to get 'custom' editor value (default: - null)

3 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • -
  • editor is the current opened editor
  • -
  • colIndex is the column index
  • - -
var etConfig = { get_custom_editor_value: function(o, editor, - colIndex){ alert('Call function to retrieve custom editor value for - column '+colIndex); } }
set_cell_modified_valuefunctiondelegate function called to write modified value in cell (default: - null)

3 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • -
  • cell is the current cell
  • -
  • val is the value to write in the cell
  • -
var etConfig = { set_cell_modified_value: function(o, cell, - val){ alert('This value has to be written in the cell: ' + val); } - }
validate_modified_valuefunctiondelegate function called to validate modified value to be written - in cell (default: null)

3 parameters are passed to the function:

-
    - -
  • o is the current EditTable object
  • -
  • colIndex is the column index
  • -
  • cellVal is the cell value
  • -
  • edtVal is the editor value
  • -
  • cell is the current cell
  • - -
  • editor is the current editor
  • -
-

The validation delegate must return a boolean

var etConfig = { validate_modified_value: function(o, colIndex, - cellVal, edtVal, cell, editor){ alert('Validation function returns - a boolean'); } }
open_custom_editorfunctiondelegate function called to open 'custom' editor (default: null)

3 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • -
  • cell is the current cell
  • - -
  • editor is the current opened editor
  • -
var etConfig = { open_custom_editor: function(o, cell, editor){ - alert('Custom editor for column '+cell.cellIndex+' is being opened!'); - } }
close_custom_editorfunctiondelegate function called to close 'custom' editor (default: null)

3 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • -
  • cell is the current cell
  • -
  • editor is the current opened editor
  • - -
var etConfig = { close_custom_editor: function(o, cell, editor){ - alert('Custom editor for column '+cell.cellIndex+' is closed!'); } - }
show_uploadfunctiondelegate function called by uploader editor to display uploaded file (default: null)

4 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • -
  • divUplDisplay is the container element containing the upload
  • -
  • uploadName is the filename of the uploaded file
  • -
  • path is the upload path
  • -
var etConfig = { - cell_editors:[ - { - type: 'uploader', - uploader: { - show_upload: function(o, divUplDisplay, uploadName, path){ - divUplDisplay.style.display = ''; - divUplDisplay.innerHTML = uploadName; - } - } - }] - }
on_before_openfunctioncallback called before uploader editor is opened (default: null)

3 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • -
  • editor is the current opened uploader editor
  • -
  • cell is the current cell
  • -
var etConfig = { - cell_editors:[ - { - type: 'uploader', - uploader: { - on_before_open: function(o, editor, cell){ - alert('uploader is going to be opened'); - } - } - }] - }
on_after_openfunctioncallback called after uploader editor is opened (default: null)

3 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • -
  • editor is the current opened uploader editor
  • -
  • cell is the current cell
  • -
var etConfig = { - cell_editors:[ - { - type: 'uploader', - uploader: { - on_after_open: function(o, editor, cell){ - alert('uploader is opened now'); - } - } - }] - }
on_before_closefunctioncallback called before uploader editor is closed (default: null)

3 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • -
  • editor is the current opened uploader editor
  • -
  • cell is the current cell
  • -
var etConfig = { - cell_editors:[ - { - type: 'uploader', - uploader: { - on_before_close: function(o, editor, cell){ - alert('uploader is going to be closed'); - } - } - }] - }
on_after_closefunctioncallback called after uploader editor is closed (default: null)

3 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • -
  • editor is the current opened uploader editor
  • -
  • cell is the current cell
  • -
var etConfig = { - cell_editors:[ - { - type: 'uploader', - uploader: { - on_after_close: function(o, editor, cell){ - alert('uploader is closed now'); - } - } - }] - }
- Top of page -
- - -

Actions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropertyTypeDescriptionRemarksExample
actionsobjectserver actions configuration object (default: {})   

var etConfig = {
- actions:{
- 'update': {
- uri: 'updateRow.php', submit_method: 'form', form_method: 'POST', -
- param_names: ['iso', 'name', 'printablename', 'iso3', 'code'] },
- - 'insert': {
- uri: 'insertRow.php', submit_method: 'form', form_method: 'POST', -
- param_names: ['iso', 'name', 'printablename', 'iso3', 'code'] },
- 'delete': {
- uri: 'script.delete.php', submit_method: 'script', bulk_delete: - true }
- }
- -
}

-
update object'update' action configuration object (default: {})

Below the list of properties for the 'update' actions:

-
    -
  • uri: server-side page
  • -
  • form_method: 2 possible values 'form' or 'script'
  • -
  • submit_method: 'POST' or 'GET' requests, if form_method is script - only GET requests
  • -
  • param_names: collection of parameters expected by the server-side - page (uri property)
  • - -
var etConfig = {
- actions:{
- 'update': {
- uri: 'updateRow.php', submit_method: 'form', form_method: 'POST', -
- param_names: ['iso', 'name', 'printablename', 'iso3', 'code'] } }
- -
}
insertobject 'insert' action configuration object (default: {})

Below the list of properties for the 'insert' actions:

- -
    -
  • uri: server-side page
  • -
  • form_method: 2 possible values 'form' or 'script'
  • -
  • submit_method: 'POST' or 'GET' requests, if form_method is script - only GET requests
  • -
  • param_names: collection of parameters expected by the server-side - page (uri property)
  • -
  • default_record: collection of values to add when a row is added - to table (insert command button)
  • - -

var etConfig = {
- actions:{
- 'insert': {
- uri: 'insertRow.php', submit_method: 'form', form_method: 'POST', -
- param_names: ['iso', 'name', 'printablename', 'iso3', 'code'],
- - default_record: ['', 'New country', 'New country', 'XXX', '0']
} - }
-
}

-
deleteobject'delete' action configuration object  (default: {})

Below the list of properties for the 'update' actions:

-
    -
  • uri: server-side page
  • -
  • form_method: 2 possible values 'form' or 'script'
  • -
  • submit_method: 'POST' or 'GET' requests, if form_method is script - only GET requests
  • - -
  • param_names: collection of parameters expected by the server-side - page (uri property)
  • -
  • bulk_delete: enables multiple rows deletion operations
  • -
var etConfig = {
- actions:{
- 'delete': {
- - uri: 'script.delete.php', submit_method: 'script', bulk_delete: true - } }
}
- - -

Actions callback events

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropertyTypeDescriptionRemarksExample
on_update_submitfunctiondelegate function called for submitting modified data to server - (default: null)

2 parameters are passed to the function:

- -
    -
  • o is the current EditTable object
  • -
  • treated rows: array of modified rows objects
  • -


- var etConfig = {
-
actions:{
- - 'update': {
- uri: 'updateRow.php', submit_method: 'form', form_method: 'POST', -
- on_update_submit: function(o, treatedRows){ alert(treatedRows); - }
- } } } }

-
on_insert_submit function delegate function called for submitting inserted data to server - (default: null)

2 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • -
  • treated rows: array of inserted rows objects
  • - -
var etConfig = {
- actions:{
- 'insert': {
- uri: 'insertRow.php', submit_method: 'form', form_method: 'POST', -
- on_insert_submit: function(o, treatedRows){ alert(treatedRows); }
- - } } } }
on_delete_submitfunction delegate function called for submitting deleted data to server - (default: null)

2 parameters are passed to the function:

- -
    -
  • o is the current EditTable object
  • -
  • treated rows: array of deleted rows objects
  • -

- var etConfig = {
- actions:{
- - 'delete': {
- uri: 'script.delete.php', submit_method: 'script', bulk_delete: false,
- on_delete_submit: function(o, treatedRows){ alert(treatedRows); }
- } } } }
on_before_submit function callback function called before data is sent to server (default: - null)

2 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • -
  • treated rows: array of modified rows objects
  • - -

var etConfig = {
- actions:{
- 'update': {
- uri: 'updateRow.php', submit_method: 'form', form_method: 'POST',
- on_before_submit: function(o, modifiedRows){ alert('before update'); - }
- - },
- 'insert': {
- uri: 'insertRow.php', submit_method: 'form', form_method: 'POST', -
- on_before_submit: function(o, modifiedRows){ alert('before insert'); - }
- },
- 'delete': {
- - uri: 'script.delete.php', submit_method: 'script', bulk_delete: - false,
- on_before_submit: function(o, modifiedRows){ alert('before delete'); - } }
} }

-
on_after_submit function callback function called after data is sent to server (default: - null)

2 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • -
  • treated rows: array of modified rows objects
  • -
var etConfig = {
- actions:{
- 'update': {
- uri: 'updateRow.php', submit_method: 'form', form_method: 'POST',
- on_after_submit: function(o, modifiedRows){ alert('before update'); - }
- },
- - 'insert': {
- uri: 'insertRow.php', submit_method: 'form', form_method: 'POST', -
- on_after_submit: function(o, modifiedRows){ alert('before insert'); - }
- },
- 'delete': {
- uri: 'script.delete.php', submit_method: 'script', bulk_delete: false,
- - on_after_submit: function(o, modifiedRows){ alert('before delete'); - } }
}
on_submit_error function callback function called when error occurs when data is sent to - server (default: null)

2 parameters are passed to the function:

-
    -
  • o is the current EditTable object
  • -
  • e is the error object
  • -
  • desc is the error object description
  • -
-
-var etConfig = {
-        actions: {
-            'update': {
-                uri: 'updateRow.php',
-                submit_method: 'form',
-                form_method: 'POST',
-                on_submit_error: function (o, e, desc) {
-                    alert('An error occured');
-                }
-            },
-            'insert': {
-
-                uri: 'insertRow.php',
-                submit_method: 'form',
-                form_method: 'POST',
-
-                on_submit_error: function (o, e, desc) {
-                    alert('An error occured');
-                }
-            },
-            'delete': {
-                uri: 'script.delete.php',
-                submit_method: 'script',
-                bulk_delete: false,
-                on_submit_error: function (o, e, desc) {
-                    alert('An error occured');
-                }
-            }
-        }
-          	
-
check_response_sanity newfunctioncallback function called when the AJAX request returns a response object - usually in JSON format. This delegate checks the sanity of the response object and - returns a boolean (default: null) -

This callback is invoked only when ajax is on.

-

1 parameter is passed to the function:

-
    -
  • data: response object, usually in JSON format
  • -
-
-
-actions: {
-    'update': {
-        uri: 'php/json.update.record.php',
-        form_method: 'POST',
-        param_names: [
-        	'id', 'name', 'email', 'startdate', 'salary'
-        ],
-        check_response_sanity: function (data) {
-            return (data && data.hasOwnProperty('result') &&
-                data.result.hasOwnProperty('success'));
-        }
-    },
-    'insert': {
-        uri: 'php/json.insert.record.php',
-        form_method: 'POST',
-        param_names: [
-        	'id', 'name', 'email', 'startdate', 'salary'
-        ],
-        default_record: [
-        	'', 'Employee name...', 
-        	'employee@email.com', '2011-01-01', 
-        	'0.00'
-        ],
-        check_response_sanity: function (data) {
-            return (data && data.hasOwnProperty('result') &&
-                data.result.hasOwnProperty('success'));
-        }
-    },
-    'delete': {
-        uri: 'php/json.delete.record.php',
-        form_method: 'POST',
-        bulk_delete: false,
-        param_names: ['id'],
-        check_response_sanity: function (data) {
-            return (data && data.hasOwnProperty('result') &&
-                data.result.hasOwnProperty('success'));
-        }
-    }
-};
-          	
-
process_response newfunctioncallback function called when the AJAX request returns a response object - usually in JSON format. This delegate gives the possibility to add custom - processing of the response object (default: null) -

This callback is invoked only when ajax is on.

-

1 parameter is passed to the function:

-
    -
  • data: response object, usually in JSON format
  • -
-
-
-actions: {
-    'update': {
-        uri: 'php/json.update.record.php',
-        form_method: 'POST',
-        param_names: [
-        	'id', 'name', 'email', 'startdate', 'salary'
-        ],
-        process_response: function (data) {
-        	alert(data.result.description);
-        }
-    },
-    'insert': {
-        uri: 'php/json.insert.record.php',
-        form_method: 'POST',
-        param_names: [
-        	'id', 'name', 'email', 'startdate', 'salary'
-        ],
-        default_record: [
-        	'', 'Employee name...', 
-        	'employee@email.com', '2011-01-01', 
-        	'0.00'
-        ],
-        process_response: function (data) {
-            alert(data.result.description + 
-            	' ('+ data.result.id +')');
-        }
-    },
-    'delete': {
-        uri: 'php/json.delete.record.php',
-        form_method: 'POST',
-        bulk_delete: false,
-        param_names: ['id'],
-        process_response: function (data) {
-            alert(data.result.description + 
-            	' ('+ data.result.id +')');
-        }
-    }
-};
-          	
-
- - -

Messages

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropertyTypeDescriptionRemarksExample
msg_submit_okstringtext displayed when data was successfully sent to the server (default: - 'Modified rows were successfully submitted to server!') 

 

var etConfig = { msg_submit_ok: 'Data saved successfully!'}
msg_confirm_delete_selected_rowsstringtext displayed to ask confirmation for deleting operation (default: - ''Do you want to delete the selected row(s)?'')  var etConfig = { msg_confirm_delete_selected_rows: 'Are you - sure you want to delete selected rows?' }
msg_error_occuredstringtext displayed when an error occurs in general (default: 'An error - occured!')  var etConfig = { msg_error_occured: 'Error!' }
msg_submit_unsuccessfulstringtext displayed when an error occurs when data is sent to server - (default: 'Modified rows could not be saved correctly!')  var etConfig = { msg_submit_unsuccessful: 'Data could not - be saved correctly!' }
undefined_submit_urlstringtext displayed when data cannot be sent to server because URI is - missing (default: 'Modified rows could not be saved! Submit URL is - not defined')  var etConfig = { msg_filter: 'Please provide a URL to which - submit data!' }
- - Top of page -
- - -
- - - - -
- - - - diff --git a/libs/ezEditTable/docs/doc_class.html b/libs/ezEditTable/docs/doc_class.html deleted file mode 100644 index 38dab65f..00000000 --- a/libs/ezEditTable/docs/doc_class.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - ezEditTable, enhance HTML tables easily, advanced inline editing, selection and keyboard navigation - script by Max Guglielmi - - - - - - - - - - - - - - - -
- - - - - -
- - -

Documentation

- - -

EditTable Class

- - - - -

Constructor

-

EditTable(id, startRow, config);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterTypeDescriptionRemarksExample
idstringid of the table element var myEditTable = new EditTable("myTableId");
startRow numberindex of the first row from which row selection can startoptional parametervar myEditTable = new EditTable("myTableId", 2);
configobject configuration objectoptional parametervar myEditTable = new EditTable("myTableId", 2, { editable: true });
- - - -
- -
- - - - -
- - - - diff --git a/libs/ezEditTable/docs/doc_methods.html b/libs/ezEditTable/docs/doc_methods.html deleted file mode 100644 index f69723e9..00000000 --- a/libs/ezEditTable/docs/doc_methods.html +++ /dev/null @@ -1,599 +0,0 @@ - - - - ezEditTable, enhance HTML tables easily, advanced inline editing, selection and keyboard navigation - script by Max Guglielmi - - - - - - - - - - - - - - - -
- - - - - -
- - - -

Documentation

- - - - -

EditTable Class

- - - - -

General Public Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescriptionRemarksExample
Init()EditTable object initialisation  var myET = new EditTable('myTableId');
- myET.editable = true;
- ...
- myET.Init();
GetCellsNb( rowIndex )returns number of cells of a specified row  myET.GetCellsNb(4);
GetRowsNb()returns total number of rows myET.GetRowsNb();
GetRow(e)returns the DOM row element for a given event function myFunction(e){ var clickedRow = myET.GetRow(e); }
GetRowByIndex( rowIndex )returns the DOM row element for a given row index  myET.GetRowByIndex(5);
GetCell(e)returns the DOM cell element for a given event  function myFunction(e){ var clickedCell = myET.GetCell(e); - }
IsSelectable()checks if table rows are selectable and returns a boolean  myET.IsSelectable();
IsEditable()checks if table is editable and returns a boolean  myET.IsEditable();
ClearSelections()clears current row(s) and/or cell selection  myET.ClearSelections();
- - Top of page -
- - -

Selection Public Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescriptionRemarksExample
Init()Selection object initialisation  var myET = new EditTable('myTableId');
- ...
- myET.Selection.Init();
Set()enables selection feature  myET.Selection.Set();
Remove() disables selection feature myET.Selection.Remove();
SetEvents()sets click and keyboard events to table element myET.Selection.SetEvents();
RemoveEvents()removes click and keyboard events to table element myET.Selection.RemoveEvents();
GetActiveRow()returns the active row element, that is, the row currently selected  var activeRow = myET.Selection.GetActiveRow();
- if(activeRow){ ... }
GetActiveCell()returns the active cell element, that is, the cell currently selected var activeCell = myET.Selection.GetActiveCell();
- if(activeCell){ ... }
GetSelectedRows()returns an array of the row elements currently selected, if selection - model is multiplereturns:
- [rowobject, rowobject, rowobject, ... rowobject]
var selRows = myET.Selection.GetSelectedRows();
- if(selRows.length > 0){ ... }
GetSelectedValues()returns an array containing a collection of selected rows values - returns: [
- ['value 0', 'value 1', 'value 2', ... 'value 3'],
- ['value 0', 'value 1', 'value 2', ... 'value 3'],
- - ['value 0', 'value 1', 'value 2', ... 'value 3'],
- ...
- ['value 0', 'value 1', 'value 2', ... 'value 3']
- ]
var selValues = myET.Selection.GetSelectedValues();
- if(selValues.length > 0){
- - var firstValueOfFirstSelectedRow = selValues[0][0];
- }
GetActiveRowValues()returns an array containing the cell values of active rowreturns ['value 0', 'value 1', 'value 2', ... 'value 3']var activeValues = myET.Selection.GetActiveRowValues();
- if(activeValues.length > 0){ ... }
GetRowValues( row )returns an array containing the cell values of a given row, it accepts - only a row DOM elementreturns ['value 0', 'value 1', 'value 2', ... 'value 3']

var myRow = myET.GetRowByIndex(7);
- if(myRow){
- myRowValues = myET.Selection.GetRowValues(myRow);
-
}

SelectRowByIndex( rowIndex )selects a row for a given row index  myET.Selection.SelectRowByIndex(9);
SelectRowsByIndexes( rowIndexes ) newselects rows for a given array of row indexesMultiple selection needs to be active (selection_model: 'multiple') myET.Selection.SelectRowsByIndexes([2, 7, 9, 12]);
SelectRow( row )selects given row element var myRow = myET.GetRowByIndex(6);
- if(myRow){
- myET.Selection.SelectRow(myRow);
- }
DeselectRow( row )deselects given row element var myRow = myET.GetRowByIndex(6);
- if(myET.Selection.IsRowSelected(myRow)){
- - myET.Selection.DeselectRow(myRow);
- }
SelectCell( cell )selects given cell element var myCell = myET.GetRowByIndex(3).cells[2];
- if(myCell) myET.Selection.SelectCell(myCell);
DeselectCell( cell )deselects given cell element var myCell = myET.GetRowByIndex(3).cells[2];
- if(myCell) myET.Selection.DeselectCell(myCell);
ClearSelections()clears current row(s) and/or cell selectionThe general ClearSelections() invokes this method ( - myET.ClearSelections() )myET.Selection.ClearSelections();
IsRowSelected( row )determines if given row is selected and returns a boolean var myRow = myET.GetRowByIndex(6);
- - if(myET.Selection.IsRowSelected(myRow)){ ... }
IsCellSelected( cell )determines if given cell is selected and returns a boolean var myCell = myET.GetRowByIndex(3).cells[2];
- - if(myET.Selection.IsCellSelected( myCell )){ ... }
- - Top of page -
- - -

Editable Public Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescriptionRemarksExample
Init()Editable object initialisation  var myET = new EditTable('myTableId');
- - ...
- myET.Editable.Init();
Set()enables inline editing feature  myET.Editable.Set();
Remove() disables inline editing feature myET.Editable.Remove();
SetEvents()sets click and keyboard events to table element myET.Editable.SetEvents();
RemoveEvents()removes click and keyboard events to table element myET.Editable.RemoveEvents();
GetModifiedRows()returns an array containing the modified rows objectsreturns:
- [
- [rowIndex,
- { values: [val0, val1, ...valn],
- urlParams: '&ColName0=cellvalue0&ColName1=cellvalue1',
- - modified: [true, false, ...]
- }],
- ...
- [rowIndex,
- { values: [val0, val1, ...valn],
- urlParams: '&ColName0=cellvalue0&ColName1=cellvalue1',
- - modified: [true, false, ...]
- }]
- ]
- urlParams are the paramaters names that are expected server-side. - If the parameters' names are not defined by the property param_names - in the actions object (configuration object actions), - the param name by default equals to 'col_n' where - n is the column index (col_0, col_1, ... col_n)

var modRowObjs = myET.Editable.GetModifiedRows();
- for(var i=0; i<modRowObjs.length; i++){
- var rowIndex = modRowObjs[i][0]; //int
- var obj = modRowObjs[i][1]; //object
- var objValues = obj.values; //array
- - var objModValues = obj.modified; //array of booleans
- var objUrlParams = obj.urlParams //string
- }

GetAddedRows()returns an array containing the added rows objectsreturns:
- [
- [rowIndex,
- { values: [val0, val1, ...valn],
- urlParams: '&ColName0=cellvalue0&ColName1=cellvalue1',
- - modified: [true, true, ...]
- }],
- ...
- [rowIndex,
- { values: [val0, val1, ...valn],
- urlParams: '&ColName0=cellvalue0&ColName1=cellvalue1',
- - modified: [true, true, ...]
- }]
- ]
- urlParams are the paramaters names that are expected server-side. - If the parameters' names are not defined by the property param_names - in the actions object (configuration object actions), - the param name by default equals to 'col_n' where - n is the column index (col_0, col_1, ... col_n)
var addRowObjs = myET.Editable.GetAddedRows();
- for(var i=0; i<addRowObjs.length; i++){
- var rowIndex = addRowObjs[i][0]; //int
- var obj = addRowObjs[i][1]; //object
- var objValues = obj.values; //array
- var objModValues = obj.modified; //array of booleans
- - var objUrlParams = obj.urlParams //string
- }
GetDeletedRows()returns an array containing the deleted rows objectsreturns:
- - [
- [rowIndex,
- { values: [val0, val1, ...valn],
- urlParams: '&ColName0=cellvalue0&ColName1=cellvalue1',
- modified: [false, false, ...]
- - }],
- ...
- [rowIndex,
- { values: [val0, val1, ...valn],
- urlParams: '&ColName0=cellvalue0&ColName1=cellvalue1',
- - modified: [false, false, ...]
- }]
- ]
- urlParams are the paramaters names that are expected server-side. - If the parameters' names are not defined by the property param_names - in the actions object (configuration object actions), - the param name by default equals to 'col_n' where - n is the column index (col_0, col_1, ... col_n)
var delRowObjs = myET.Editable.GetDeletedRows();
- for(var i=0; i<delRowObjs.length; i++){
- var rowIndex = delRowObjs[i][0]; //int
- var obj = delRowObjs[i][1]; //object
- var objValues = obj.values; //array
- - var objModValues = obj.modified; //array of booleans
- var objUrlParams = obj.urlParams //string
- }
SubmitEditedRows()submits edited rows to server according to actions configuration - options modified rows objects are sent to server (uri property in 'update' - actions configuration options)

function SaveEditedRows(){
- myET.Editable.SubmitEditedRows();
- }

-
SubmitAddedRows()submits added rows to server according to actions configuration - options added rows objects are sent to server (uri property in 'insert' - actions configuration options)function SaveAddedRows(){ - myET.Editable.SubmitAddeddRows(); - }
SubmitDeletedRows()submits deleted rows to server according to actions configuration - options deleted rows objects are sent to server (uri property in 'delete' - actions configuration options). A - confirmation prompt appears before sending data to server

function DeleteSelectedRows(){ - myET.Editable.SubmitDeletedRows(); - }

SubmitAll() newsubmits added and edited rows to server according to actions configuration - options function SubmitAll(){ myET.Editable.SubmitAll(); }
AddNewRow()adds a row to the tablemyET.Editable.AddNewRow();
- -
- - - - -
- - - - diff --git a/libs/ezEditTable/docs/doc_properties.html b/libs/ezEditTable/docs/doc_properties.html deleted file mode 100644 index 1c295cf3..00000000 --- a/libs/ezEditTable/docs/doc_properties.html +++ /dev/null @@ -1,515 +0,0 @@ - - - - - ezEditTable, enhance HTML tables easily, advanced inline editing, selection and keyboard navigation - script by Max Guglielmi - - - - - - - - - - - - - - - -
- - - - - -
- - - -

Documentation

- - - -

EditTable Class

- - - - -

General Public Properties

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropertyTypeDescriptionRemarksExample
idstringreturns the HTML table's id used by the EditTable objectuse it as getter onlyalert( myET.id );
tableHTMLTableElementreturns the HTML table element used by the EditTable objectuse it as getter onlyalert( myET.table );
configobjectreturns the EditTable configuration object (literal object)use it as getter or setteralert( myET.config );
startRownumberindex of the first row from which row selection can startuse it as getter onlyalert( myET.startRow );
nbCellsnumberreturns the number of table columnsuse it as getter onlyalert( myET.nbCells );
selectionbooleanenables / disables selection modeluse it as getter or settermyET.selection = false;
keyNavbooleanenables / disables keyboard navigationuse it as getter or settermyET.keyNav = false;
editablebooleanenables / disables inline editinguse it as getter or settermyET.editable = true;
tableCssstringdefines the css class of the table elementuse it as getter or settermyET.tableCss = 'myClass';
unselectableCssstringdefines the css class that makes the table text unselectableuse it as getter or setteralert( myET.unselectableCss );
activityIndicatorCssstringdefines the css class to be applied to the table in order to indicate - server activity use it as getter or setteralert( myET.activityIndicatorCss );
basePathstringdefines the path to the script's directoryuse it as getter or setteralert( myET.basePath );
-
- Top of page - - -

Selection Public Properties

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropertyTypeDescriptionRemarksExample
selectionModelstringdefines the selection model: "single" or "multiple"use it as getter or setter - 2 possible values: 'single' or 'multiple'myET.selectionModel = 'multiple';
defaultSelectionstringdefines the selection typeuse it as getter or setter - 3 possible values: 'row', 'cell' or - 'both'myET.defaultSelection = 'both';
keySelectionbooleanenables / disable multiple selection by using Ctrl and Shift keys - use it as getter or setter - select multiple rows by holding Ctrl - or Shift key down, only if selection model is 'multiple'myET.keySelection = false;
selectRowAtStartbooleanfirst row is selected at start if set trueuse it as getter or settermyET.selectRowAtStart = true;
rowIndexAtStartnumberdefines which row has to be selected at startuse it as getter or settermyET.rowIndexAtStart = 5;
scrollIntoViewbooleanIf set true selected row scrolls into view; useful when row is selected - by using keyboarduse it as getter or settermyET.scrollIntoView = true;
activeRowCssstringdefines css class for active rowuse it as getter or settermyET.activeRowCss = 'myClass';
selectedRowCssstringdefines css class for selected rowsuse it as getter or setter - only if 'multiple' selection model - is enabledmyET.selectedRowCss = 'myClass';
activeCellCssstringdefines css class for active celluse it as getter or setter - only if 'cell' or 'both' selection - type is enabledmyET.activeCellCss = 'myClass';
nbRowsPerPagenumberdefines number of rows to jump when PgDown or PgUp keys are presseduse it as getter or setter - specify a huge number to jump straight - to 1st or last row (1000)myET.nbRowsPerPage = 1000;
-
- Top of page - - -

Editable Public Properties

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropertyTypeDescriptionRemarksExample
editorModelstringdefines the editor modeluse it as getter or setter - 2 possible values: 'cell' or 'row'myET.editorModel = 'row';
openEditorActionstringdefines which mouse action opens the inline editing featureuse it as getter or setter - 2 possible values: 'dblclick', 'click'myET.openEditorAction = 'click';
ajax newbooleanenables AJAX requests (default: true if jQuery is detected)it is enabled if jQuery is detected and the ajax property is - not explicitly set falsemyET.ajax = false;
inputEditorCssbooleandefines the css class for 'input' type editorsuse it as getter or setter - select multiple rows by holding Ctrl - or Shift key down, only if selection model is 'multiple'myET.inputEditorCss = 'myClass';
textareaEditorCssbooleandefines the css class for 'textarea' type editorsuse it as getter or settermyET.textareaEditorCss = 'myClass';
selectEditorCssnumberdefines the css class for 'input' type editorsuse it as getter or settermyET.selectEditorCss = 'myClass';
commandEditorCssbooleancss class applied to command editor buttons containeruse it as getter or settermyET.commandEditorCss = 'myClass';
modifiedCellCssstringcss class applied to modified cellsuse it as getter or setter - this css class shows the green small - triangle in the left-upper corner of the cellmyET.modifiedCellCss = 'myClass';
cellEditorsarrayarray defining the editor configuration for each columnuse it as getter or setter - the number of editors must be equal - to the number of columns. Refer to Cell - editors properties for details about editors' configurationmyET.cellEditors = [
- { type: 'select' },
- { type: 'textarea' },
- { type: 'input' },
- { type: 'uploader' },
- { type: 'none' },
- { type: 'command' }
- ];
actionsobjectserver actions configuration object use it as getter or setter - Refer to actions - properties for details about server actions configurationmyET.actions = {
- 'update': {
- uri: 'updateRow.php', submit_method: 'form', form_method: 'POST', -
- param_names: ['iso', 'name', 'printablename', 'iso3', 'code'] },
- 'insert': {
- uri: 'insertRow.php', submit_method: 'form', form_method: 'POST', -
- - param_names: ['iso', 'name', 'printablename', 'iso3', 'code'] },
- 'delete': {
- uri: 'script.delete.php', submit_method: 'script', bulk_delete: true - }
- }
autoSavebooleansaves automatically pending changes upon selection changeeditable property needs to be activated (default: true if editable is on)myET.autoSave = false;
autoSaveModelstringdetermines when modified and/or added data is saved, upon row or cell selection change (default: 'row')2 possible values 'row' or 'cell'myET.autoSaveModel = 'cell';
autoSaveTypestringdefines if only insertions or updates, or both are saved automatically (default: 'both')3 possible values 'insert', 'update' or 'both'myET.autoSaveType = 'update';
editableOnKeystroke newbooleanmakes the inline cell editor appear upon keystroke (default: false)only if edition is enabled and editorModel is set to 'cell' and - selectionModel to 'single'myET.editableOnKeystroke = true;
newRowPrefixstringdefines the prefix for new added row ids (default: 'tr')prefix should match the prefix assigned to already existing rowsmyET.newRowPrefix = 'row';
formSubmitIntervalnumberdefines the interval in ms separating rows data submissions (default: 50)by default the script submits a single form for each modified row. Depending on ISPs - security policies, multiple submissions to same page are simply blocked by the server. - This interval can be useful to fine tune the form submissions when those server restrictions apply.myET.formSubmitInterval = 750;
newRowPos newstring or numberdefines the row position of a newly created row (default: 'top')2 possible values as a string: 'top' or 'bottom', and as an integer: - any number >= 0 and <= total number of rows. If the supplied numeric - value exceeds the total number of rows then the script fallback to default - value 'top'myET.newRowPos = 'bottom';
-
- - Top of page - - -
- - - - -
- - - - diff --git a/libs/ezEditTable/docs/doc_utilities.html b/libs/ezEditTable/docs/doc_utilities.html deleted file mode 100644 index 2f362404..00000000 --- a/libs/ezEditTable/docs/doc_utilities.html +++ /dev/null @@ -1,207 +0,0 @@ - - - - - ezEditTable, enhance HTML tables easily, advanced inline editing, selection and keyboard navigation - script by Max Guglielmi - - - - - - - - - - - - - - - -
- - - - - -
- - - -

Documentation

- - - -

Utility Functions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescriptionRemarksExample
setEditTable( id, startRow, config )

Calls EditTable constructor and returns the EditTable object:

- -
    -
  • id: table id (string)
  • -
  • startRow (optional): index of the first row from which row selection - can start (number)
  • -
  • config (optional): configuration object (literal object)
  • -
  var et = setEditTable('myTableId', 2, { editable: true });
Get(id)

this is a document.getElementById() shortcut:

-
    -
  • id: id of the element (string)
  • - -
  var myElm = et.Get('myId');
Tag(o, tagname)

this is just a getElementsByTagName() shortcut:

- -
    -
  • o: target element (DOM element)
  • -
  • tagname: tag to search for (string)
  • -
-

It returns an array

 var myTables = et.Tag(document, 'table');
GetText(n)

returns the text of given a node and its child nodes:

-
    -
  • n: node (DOM element)
  • -
 var tableText = et.GetText( et.Tag(document,'table' )[0]);
CreateElm(tag)

creates an html element with defined attributes:

-
    -
  • the html tag to create (string)
  • - -
  • an unlimited # of arrays defining the attributes values ('attribute - name','value' ['id','myId'])
  • -
 var myInput = et.CreateElm( 'input', ['id','myId'], ['value','Hello - world'] );
CreateText(t)

this is just a document.createTextNode shortcut:

- -
    -
  • t: text to generate (string)
  • -
 var myText = et.CreateText( 'Hello world' );
IsArray(obj)

checks if passed param is an array. It returns a boolean

 alert(et.IsArray([1,2,3]));
IsObj(obj)

checks if passed param is an object. It returns a boolean

 alert(et.IsObj({ text: 'hello'}));
IsFn(fn)

checks if passed param is a function. It returns a boolean

 alert(et.IsFn(function(){ var a=0; }));
- -
- - - -
- - - - -
- - - - diff --git a/libs/ezEditTable/docs/index.html b/libs/ezEditTable/docs/index.html deleted file mode 100644 index 8d1da9ef..00000000 --- a/libs/ezEditTable/docs/index.html +++ /dev/null @@ -1,473 +0,0 @@ - - - - - ezEditTable, enhance HTML tables easily, advanced inline editing, selection and keyboard navigation - script by Max Guglielmi - - - - - - - - - - - - - - - -
- - - - - -
-

ezEditTable

-

Description

-

- ezEditTable is a javascript code aimed at enhancing regular - HTML tables by adding features such as inline editing components, advanced - selection and keyboard navigation. With just a line of code you can easily - convert a regular HTML table in an advanced editable and selectable grid control. -

-

Main features

-
    -
  • Attach to an existing HTML table
  • -
  • Advanced selection model
  • -
  • Extended keyboard navigation
  • -
  • Inline cell or row editing
  • -
  • Insert and remove rows
  • -
  • Send changes to server via GET or POST form submission, AJAX requests or - by script injection in the head section of the document (only GETs)
  • -
  • Integration with any server-side technology as this is a pure client-side solution
  • -
  • Callbacks for all events, and delegates for most actions
  • -
  • Based on plain javascript and dependent on jQuery only for performing AJAX requests
  • -
  • Exhaustive documentation and API
  • -
  • Easy setup and easy customisable themes
  • -
- -

Installation - - Starter - -

-

To install ezEditTable unzip the download package and then include the following - scripts and stylesheet files in the head section of your page:

- -
-	<link href="ezEditTable/ezEditTable.css" rel="stylesheet" type="text/css"/>
-	<script src="ezEditTable/ezEditTable.js"></script>
-	
- -

Make sure the table you'd like to make editable or selectable - has an unique id and a thead and tbody - sections.

-

Here you have an example of a regular html table:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FromDestinationRoad Distance (km)By Air (hrs)By Rail (hrs)
SydneyAdelaide14121.425.3
SydneyBrisbane9821.516
SydneyCanberra286.64.3
SydneyMelbourne8721.110.5
AdelaidePerth27813.138
AdelaideAlice Springs1533220.25
AdelaideBrisbane20452.1540
- -

Below the same table enhanced by the script (id="table1"), - click to select a row or use keys to move the selection:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FromDestinationRoad Distance (km)By Air (hrs)By Rail (hrs)
SydneyAdelaide14121.425.3
SydneyBrisbane9821.516
SydneyCanberra286.64.3
SydneyMelbourne8721.110.5
AdelaidePerth27813.138
AdelaideAlice Springs1533220.25
AdelaideBrisbane20452.1540
- - -

There are 2 different ways to call the script:

-
    - - -
  • invoke the setEditTable function, which returns a EditTable object:
  • -
- -
<script language="javascript" type="text/javascript">
-	var et = setEditTable("table1");
-</script> 
- -
    -
  • instanciate the EditTable object:
  • -
- -
<script language="javascript" type="text/javascript">
-	var et = new EditTable('table1');
-	et.Init();
-</script> 
-

If your document contains several tables (like this page), it is important - to define unique ids, otherwise the script will not work properly.

- -

The setEditTable() function or the EditTable - class accepts 2 additional parameters that will be explained in the next - tables. In the example below, by specifing a row number as a "start" - row, we tell the script from which row can start the selection, this is - helpful when the tbody and thead sections are not defined:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
This is the table caption
FromDestinationRoad Distance (km)By Air (hrs)By Rail (hrs)
SydneyAdelaide14121.425.3
SydneyBrisbane9821.516
SydneyCanberra286.64.3
SydneyMelbourne8721.110.5
AdelaidePerth27813.138
AdelaideAlice Springs1533220.25
AdelaideBrisbane20452.1540
- - -
var et02 = setEditTable("table2", 2);
- -

or

- -
var et02 = new EditTable("table2", 2);
-et02.Init();
-

By default, the script adds a single row selection feature to the table. - You could decide to also add a cell selection feature and make the cells - editable, double-click on a cell to see:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
This is the table caption
FromDestinationRoad Distance (km)By Air (hrs)By Rail (hrs)
SydneyAdelaide14121.425.3
SydneyBrisbane9821.516
SydneyCanberra286.64.3
SydneyMelbourne8721.110.5
AdelaidePerth27813.138
AdelaideAlice Springs1533220.25
AdelaideBrisbane20452.1540
- -

To do that you just need to declare a literal object (configuration - object) in which you specify the features you would like to enable:

- -
<script language="javascript" type="text/javascript">
-	var table3Config = {
-		default_selection: 'both',
-		editable: true,
-		auto_save: false
-	}
- 	var et03 = setTableEdit("table3", 2, table3Config);
-</script>
-

or

-
<script language="javascript" type="text/javascript">
-	var table3Config = {
-		default_selection: 'both',
-		editable: true,
-		auto_save: false
-	}
-	var et03 = new EditTable("table3", 2 ,table3Config);
-	et03.Init();
-</script>
- -

You can name the configuration object as you want, but don't forget - to add it to the parameters of the setEditTable() function - or EditTable class. It is important to respect the syntax and - naming convention as shown above. You will find an exhaustive list of properties - in the documentation section.

-

Documentation

- - -

For more information about the script's configuration and API check out - the documentation and the - available online demos.

- -
- -
- - - - -
- - - - diff --git a/libs/ezEditTable/docs/samples.html b/libs/ezEditTable/docs/samples.html deleted file mode 100644 index 233ed4fe..00000000 --- a/libs/ezEditTable/docs/samples.html +++ /dev/null @@ -1,1082 +0,0 @@ - - - - ezEditTable, enhance HTML tables easily, advanced inline editing, selection and keyboard navigation - script by Max Guglielmi | Samples, Examples - - - - - - - - - - - - - - - -
- - - - - -
- -

Samples - - Starter - -

- -

In this page you will find a collection of samples showing how to configure - the ezEditTable script.

-
-
    -
  • Table 1: call the script
  • -
  • Table 2: enable cell selection only
  • - -
  • Table 3: enable multiple rows selection (click - + ctrl or shift key) and define selection's starting row
  • -
  • Table 4: disable key navigation and key selection - (ctrl and shift key for multiple selection), enable multiple selection - (click selection)
  • -
  • Table 5: select a row at start and use callback - event functions before and after a row is selected
  • -
  • Table 6: enable default inline cell editing, double-click - on a cell to display cell editor
  • -
  • Table 7: define editor type by column, double-click - or use F2, enter or spacebar keys to display editor
  • - -
  • Table 8: use the script's public methods and properties - to change features programmatically or to retrieve information
  • -
  • Table 9: enable a command type column editor
  • -
-
- -
-

Here you have a regular HTML table:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- WORLD INTERNET USAGE AND POPULATION STATISTICS -
World RegionsPopulation ( 2007 Est.)Population % of World% Population ( Penetration )Usage % of World
Africa933,448,29214.2 %3.5 %3.0 %
Asia3,712,527,62456.5 %10.5 %35.6 %
Europe809,624,68612.3 %38.6 %28.6 %
Middle East193,452,7272.9 %10.0 %1.8 %
North America334,538,0185.1 %69.4 %21.2 %
Latin America / Caribbean556,606,6278.5 %16.0 %8.1 %
Oceania / Australia34,468,4430.5 %53.5 %1.7 %
- -

Below the same table enhanced by the ezEditTable script:

- -

TABLE 1

-

Call the script

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
World RegionsPopulation ( 2007 Est.)Population % of World% Population ( Penetration )Usage % of World
Africa933,448,29214.2 %3.5 %3.0 %
Asia3,712,527,62456.5 %10.5 %35.6 %
Europe809,624,68612.3 %38.6 %28.6 %
Middle East193,452,7272.9 %10.0 %1.8 %
North America334,538,0185.1 %69.4 %21.2 %
Latin America / Caribbean556,606,6278.5 %16.0 %8.1 %
Oceania / Australia34,468,4430.5 %53.5 %1.7 %
- -
<script language="javascript" type="text/javascript">
-	var et1 = setEditTable("table1");
-</script>
-
- - Top of page -
- -

TABLE 2

-

Enable cell selection only

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
World RegionsPopulation ( 2007 Est.)Population % of World% Population ( Penetration )Usage % of World
Africa933,448,29214.2 %3.5 %3.0 %
Asia3,712,527,62456.5 %10.5 %35.6 %
Europe809,624,68612.3 %38.6 %28.6 %
Middle East193,452,7272.9 %10.0 %1.8 %
North America334,538,0185.1 %69.4 %21.2 %
Latin America / Caribbean556,606,6278.5 %16.0 %8.1 %
Oceania / Australia34,468,4430.5 %53.5 %1.7 %
- -
<script language="javascript" type="text/javascript">
-	var table2_Config = { default_selection:'cell' };
-	var et2 = setEditTable("table2", table2_Config);
-</script>
- - Top of page -
- -

TABLE 3

- -

Enable multiple rows selection (click + ctrl or shift key) and define selection's - starting row

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Group 1Group 2Group 3
World RegionsPopulation ( 2007 Est.)Population % of World% Population ( Penetration )Usage % of World
Africa933,448,29214.2 %3.5 %3.0 %
Asia3,712,527,62456.5 %10.5 %35.6 %
Europe809,624,68612.3 %38.6 %28.6 %
Middle East193,452,7272.9 %10.0 %1.8 %
North America334,538,0185.1 %69.4 %21.2 %
Latin America / Caribbean556,606,6278.5 %16.0 %8.1 %
Oceania / Australia34,468,4430.5 %53.5 %1.7 %
-
<script language="javascript" type="text/javascript">
-	var table3_Config = { selection_model: 'multiple' };
-	var et3 = setEditTable("table3", table3_Config, 2);
-</script>
- - Top of page -
- -

TABLE 4

-

Disable key navigation and key selection, enable multiple selection (click - selection)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
World RegionsPopulation ( 2007 Est.)Population % of World% Population ( Penetration )Usage % of World
Africa933,448,29214.2 %3.5 %3.0 %
Asia3,712,527,62456.5 %10.5 %35.6 %
Europe809,624,68612.3 %38.6 %28.6 %
Middle East193,452,7272.9 %10.0 %1.8 %
North America334,538,0185.1 %69.4 %21.2 %
Latin America / Caribbean556,606,6278.5 %16.0 %8.1 %
Oceania / Australia34,468,4430.5 %53.5 %1.7 %
-
<script language="javascript" type="text/javascript">
-	table4_Config = { key_navigation: false, key_selection: false, selection_model: 'multiple' };
-	var et4 = setEditTable("table4", table4_Config);
-</script>
- - Top of page -
- -

TABLE 5

- -

Select a row at start and use callback event functions before (on_before_selected_row) - and after (on_after_selected_row) a row is selected

- -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
World RegionsPopulation ( 2007 Est.)Population % of World% Population ( Penetration )Usage % of World
Africa933,448,29214.2 %3.5 %3.0 %
Asia3,712,527,62456.5 %10.5 %35.6 %
Europe809,624,68612.3 %38.6 %28.6 %
Middle East193,452,7272.9 %10.0 %1.8 %
North America334,538,0185.1 %69.4 %21.2 %
Latin America / Caribbean556,606,6278.5 %16.0 %8.1 %
Oceania / Australia34,468,4430.5 %53.5 %1.7 %
- -
-<script language="javascript" type="text/javascript">
-	var table5_Config = {
-		select_row_at_start: true,
-		row_index_at_start: 1,
-		on_before_selected_row: function(o, row){ o.Get('output1').innerHTML = 'Active row: '+row.rowIndex.toString() +' '; },
-		on_after_selected_row: function(o, row){ o.Get('output2').innerHTML = 'Active row data:' + o.Selection.GetRowValues(row); },
-	};
-	var et5 = setEditTable("table5", table5_Config);
-</script>
- - Top of page -
-

TABLE 6

- -

Enable default inline cell editing, double-click on a cell to display cell - editor

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
World RegionsPopulation ( 2007 Est.)Population % of World% Population ( Penetration )Usage % of World
Africa933,448,29214.2 %3.5 %3.0 %
Asia3,712,527,62456.5 %10.5 %35.6 %
Europe809,624,68612.3 %38.6 %28.6 %
Middle East193,452,7272.9 %10.0 %1.8 %
North America334,538,0185.1 %69.4 %21.2 %
Latin America / Caribbean556,606,6278.5 %16.0 %8.1 %
Oceania / Australia34,468,4430.5 %53.5 %1.7 %
-
-<script language="javascript" type="text/javascript">
-	var table6_Config = { editable: true, auto_save: false, default_selection: 'both' };
-	var et6 = setEditTable("table6", table6_Config);
-</script>
- - Top of page -
- -

TABLE 7

- -

Define editor type by column, double-click or use F2, enter or spacebar - keys to display editor

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
World RegionsPopulation ( 2007 Est.)Population % of World% Population ( Penetration )Usage % of World
Africa933,448,29214.2 %3.5 %3.0 %
Asia3,712,527,62456.5 %10.5 %35.6 %
Europe809,624,68612.3 %38.6 %28.6 %
Middle East193,452,7272.9 %10.0 %1.8 %
North America334,538,0185.1 %69.4 %21.2 %
Latin America / Caribbean556,606,6278.5 %16.0 %8.1 %
Oceania / Australia34,468,4430.5 %53.5 %1.7 %
-
-<script language="javascript" type="text/javascript">
-	var table7_Config = {
-		editable: true,
-		auto_save: false,
-		default_selection: 'both',
-		cell_editors:[
-			{ type: 'select', attributes:[['title','Choose a continent']] },
-			{ type: 'input', css:'alignRight' },
-			{ type: 'textarea', style:'background-color: yellow;' },
-			{ type: 'input', attributes:[['maxLength',5],['title','5 chars max']] },
-			{ type: 'none' }
-		]
-	};
-var et7 = setEditTable('table7', table7_Config);
-</script>
- - Top of page -
- -

TABLE 8

- -

Use the script's public methods and properties to change features programmatically - or to retrieve information

-
- - - - - - -
- - - - - - - - - - - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
World RegionsPopulation ( 2007 Est.)Population % of World% Population ( Penetration )Usage % of World
Africa933,448,29214.2 %3.5 %3.0 %
Asia3,712,527,62456.5 %10.5 %35.6 %
Europe809,624,68612.3 %38.6 %28.6 %
Middle East193,452,7272.9 %10.0 %1.8 %
North America334,538,0185.1 %69.4 %21.2 %
Latin America / Caribbean556,606,6278.5 %16.0 %8.1 %
Oceania / Australia34,468,4430.5 %53.5 %1.7 %
- - -
-<script language="javascript" type="text/javascript">
-	var table8_Config = { editable: true, auto_save: false };
-	var et8 = setEditTable("table8", table8_Config);
-</script>
-
-<!-- buttons code below -->
-
-<input type="button" value="Is selectable?" onClick="alert( et8.IsSelectable() );" />
-<input type="button" value="Is editable?" onClick="alert( et8.IsEditable() );" />
-
-<input type="button" value="Clear selections" onClick="et8.ClearSelections();" />
-<input type="button" value="Disable edition" onClick="et8.Editable.Remove();" />
-
-<input type="button" value="Enable edition" onClick="et8.Editable.Set();" />
-<input type="button" value="Disable selection" onClick="et8.Selection.Remove();" />
-
-<input type="button" value="Enable selection" onClick="et8.Selection.Set();" />
-<input type="button" value="Enable multiple selection" onClick="et8.selectionModel = 'multiple';" />
-
-<input type="button" value="Disable multiple selection" onClick="et8.selectionModel = 'single';" />
-<input type="button" value="Enable cell selection" onClick="et8.ClearSelections(); et8.defaultSelection = 'cell';" />
-
-<input type="button" value="Disable cell selection" onClick="et8.ClearSelections(); et8.defaultSelection = 'row';" />
-<input type="button" value="Enable row editor" onClick="et8.editorModel = 'row';" />
-
-<input type="button" value="Disable row editor" onClick="et8.Editable.CloseRowEditor(); et8.editorModel = 'cell';" />
-<input type="button" value="Get active row values" onClick="alert(et8.Selection.GetActiveRowValues());" />
-
-<input type="button" value="Get selected rows values" onClick="alert(et8.Selection.GetSelectedValues());" />
-
- - Top of page -
- - -

TABLE 9

-

Enable a command type column editor

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
World RegionsPopulation ( 2007 Est.)Population % of World% Population ( Penetration )Usage % of WorldAction
Africa933,448,29214.2 %3.5 %3.0 % 
Asia3,712,527,62456.5 %10.5 %35.6 % 
Europe809,624,68612.3 %38.6 %28.6 % 
Middle East193,452,7272.9 %10.0 %1.8 % 
North America334,538,0185.1 %69.4 %21.2 % 
Latin America / Caribbean556,606,6278.5 %16.0 %8.1 % 
Oceania / Australia34,468,4430.5 %53.5 %1.7 % 
-
-<script language="javascript" type="text/javascript">
-//<![CDATA[
-	var table9_Config = {
-		base_path: '../',
-		editable: true,
-		auto_save: false,
-		cell_editors:[
-			{ type: 'select', attributes:[['title','Choose a continent']] },
-			{ type: 'input', css:'alignRight' },
-			{ type: 'textarea', style:'background-color: yellow;' },
-			{ type: 'input', attributes:[['maxLength',5],['title','5 chars max']] },
-			{ type: 'input' },
-			{ type: 'command',
-				buttons:{
-					enable: ['update', 'insert', 'delete', 'submit', 'cancel'],
-					'update': { title:'Edit row' },
-					'insert': { title:'Add row'  },
-					'delete': { title:'Delete row' },
-					'submit': { text:'Save', title:'Save'  },
-					'cancel': { text:'Cancel', title:'Cancel' }
-				}
-			}
-		]
-	};
-	var et9 = setEditTable("table9", table9_Config);
-//]]>
-</script>
- - - Top of page -
- -
- - - - -
- - - - diff --git a/libs/ezEditTable/docs/starter.html b/libs/ezEditTable/docs/starter.html deleted file mode 100644 index 1f306b87..00000000 --- a/libs/ezEditTable/docs/starter.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - ezEditTable, enhance HTML tables easily - Starter page - by Max Guglielmi - - - - - - - - - - -

Starter

-

- ← Documentation -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FromDestinationRoad Distance (km)By Air (hrs)By Rail (hrs)
SydneyAdelaide14121.425.3
SydneyBrisbane9821.516
SydneyCanberra286.64.3
SydneyMelbourne8721.110.5
AdelaidePerth27813.138
AdelaideAlice Springs1533220.25
AdelaideBrisbane20452.1540
- - - -
- -
-

Source code of the page:

-
-<!DOCTYPE HTML>
-<html>
-<head>
-    <title>ezEditTable, enhance HTML tables easily - Starter page - by Max Guglielmi</title>
-    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-
-    <link href="../ezEditTable.css" rel="stylesheet" type="text/css">
-    <script src="../ezEditTable.js"></script>
-</head>
-<body>
-    <h1>ezEditTable Starter</h1>
-
-    <table id="demo" cellspacing="0" cellpadding="0">
-        <thead>
-                    <tr>
-                        <th>From</th>
-                        <th>Destination</th>
-                        <th>Road Distance (km)</th>
-                        <th>By Air (hrs)</th>
-                        <th width="15%">By Rail (hrs)</th>
-
-                    </tr>
-                </thead>
-                <tbody>
-                    <tr>
-                        <td><strong>Sydney</strong></td>
-                        <td>Adelaide</td>
-                        <td>1412</td>
-                        <td>1.4</td>
-                        <td>25.3</td>
-                    </tr>
-                    <tr>
-                        <td><strong>Sydney</strong></td>
-                        <td>Brisbane</td>
-                        <td>982</td>
-                        <td>1.5</td>
-                        <td>16</td>
-                    </tr>
-                    <tr>
-                        <td><strong>Sydney</strong></td>
-                        <td>Canberra</td>
-                        <td>286</td>
-                        <td>.6</td>
-                        <td>4.3</td>
-                    </tr>
-                    <tr>
-                        <td><strong>Sydney</strong></td>
-                        <td>Melbourne</td>
-                        <td>872</td>
-                        <td>1.1</td>
-                        <td>10.5</td>
-                    </tr>
-                    <tr>
-                        <td><strong>Adelaide</strong></td>
-                        <td>Perth</td>
-                        <td>2781</td>
-                        <td>3.1</td>
-                        <td>38</td>
-                    </tr>
-                    <tr>
-                        <td><strong>Adelaide</strong></td>
-                        <td>Alice Springs</td>
-                        <td>1533</td>
-                        <td>2</td>
-                        <td>20.25</td>
-                    </tr>
-                     <tr>
-                        <td><strong>Adelaide</strong></td>
-                        <td>Brisbane</td>
-                        <td>2045</td>
-                        <td>2.15</td>
-                        <td>40</td>
-                    </tr>
-        </tbody>
-    </table>
-
-    <script language="javascript" type="text/javascript">
-        var config = {
-            selection: true,
-            default_selection: 'both'
-        };
-        var et = new EditTable('demo', config);
-        et.Init();
-    </script>
-
-</body>
-</html>
-	  		
-
- - diff --git a/libs/ezEditTable/ezEditTable-uncompressed.css b/libs/ezEditTable/ezEditTable-uncompressed.css deleted file mode 100644 index 50fa7fc9..00000000 --- a/libs/ezEditTable/ezEditTable-uncompressed.css +++ /dev/null @@ -1,86 +0,0 @@ -/*==================================================== - - ezEditTable global stylesheet - - Edit classes below for your projects' needs -=====================================================*/ - -.ezEditableTable{ - padding:0; color:#000; - border-collapse:collapse; - font:12px/13px arial, tahoma, helvetica, sans-serif !important; -} -.ezEditableTable th, .ezEditableTable td{ - margin:0; padding:5px; - color:inherit; - border:1px solid #ccc !important; -} -.ezEditableTable th{ - background:#EBECEE !important; -} - -/* Selection */ -.ezActiveRow{ background-color:#2852A8 !important; color:#fff; } -.ezSelectedRow{ background-color:#316AC5; color:#fff; } -.ezActiveCell{ - background-color:#D9E8FB !important; - color:#000 !important; font-weight:bold; -} -.ezUnselectable{ - -moz-user-select: -moz-none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - user-select: none; -} - -/* Cell editors */ -.ezInputEditor{ width:95%; height:auto; font-size:inherit; border:1px solid #AACCF6; } -.ezTextareaEditor{ width:95%; height:35px; font-size:inherit; border:1px solid #AACCF6; } -.ezSelectEditor{ width:100%; font-size:inherit; border:1px solid #AACCF6; } -.ezModifiedCell{ background:transparent url(themes/bg_mod_cell.png) 0 0 no-repeat; } -select[multiple="multiple"].ezSelectEditor{ height:35px; } -/* Command type editor */ -.ezCommandEditor{ margin:2px; } -.ezCommandEditor button{ - font-size:10px; - border:1px solid #ccc; - background:#fff; margin:1px; - border-radius:4px 4px 4px 4px; - -moz-border-radius:4px 4px 4px 4px; -} -/* Uploader editor */ -.ezUploaderEditor{ - position:absolute; display:inline; - margin:15px 0 0 0px; - border:1px solid #ccc; padding:5px; - background:#fff; color:#000; z-index:10000; - border-radius:4px; - -moz-border-radius:4px; - -webkit-border-radius:4px; - box-shadow:3px 3px 2px #888; - -moz-box-shadow:3px 3px 2px #888; - -webkit-box-shadow:3px 3px 2px #888; -} -.ezUploaderEditor button{ - font-size:10px; - border:1px solid #ccc; - background:#fff; margin:1px; - border-radius:4px 4px 4px 4px; - -moz-border-radius:4px 4px 4px 4px; -} -.ezUploaderEditorOutput{ } -.ezUploaderEditorDisplay{ - display:none; position:relative; - max-width:800px; max-height:600px; - overflow:auto; border:0; - background:#fff; padding:5px; margin:5px; -} - -/* Utils */ -.ezOpacity{ - filter:alpha(opacity=60); /* for IE */ - opacity:0.6; /* CSS3 standard */ -} -.alignLeft{ text-align:left; } -.alignCenter{ text-align:center; } -.alignRight{ text-align:right; } -.icnImg{ border:0; } \ No newline at end of file diff --git a/libs/ezEditTable/ezEditTable-uncompressed.js b/libs/ezEditTable/ezEditTable-uncompressed.js deleted file mode 100644 index ee66e659..00000000 --- a/libs/ezEditTable/ezEditTable-uncompressed.js +++ /dev/null @@ -1,2081 +0,0 @@ -/*------------------------------------------------------------------------ - - ezEditTable v2.3 (edittable.free.fr) - - Copyright (c) 2012 Max Guglielmi - - License required for use -------------------------------------------------------------------------*/ - -var EditTable = function(id){ -/*======================================================================== - - EditTable object constructor - - Params: - - id: table id (string) - - startRow (optional): start row index (number) - - config (optional): configuration object (literal object) -========================================================================*/ - if(arguments.length === 0){ return; } - this.id = id; - this.version = '2.3'; - this.table = this.Get(id); - this.tBody = this.table.tBodies[0]; - this.startRow = 0; - this.config = null; - this.nbCells = null; - if(!window['et_activeGrid']){ window.et_activeGrid = ''; }//global var for active grid in page - - if(this.table === null || this.table.nodeName.LCase() !== 'table'){ return; } - var tBodyRows = this.Tag(this.tBody, 'tr'); - if(tBodyRows.length > 0){ this.startRow = tBodyRows[0].rowIndex; } - - if(arguments.length > 1){ - for(var i=0; iwindow.parent["{1}"].SetUploadSuccess(true); window.parent["{1}"].SetUploadName("{0}");' + - 'window.parent["{1}"].ShowUpload();'; //js code invoked from server-side when file successfully uploaded - - //Uploader callbacks and delegates - this.showUpload[i] = upl.hasOwnProperty('show_upload') && this.IsFn(upl['show_upload']) ? upl['show_upload'] : null; //delegate function for showing uploaded file - this.onBeforeOpenUploader[i] = upl.hasOwnProperty('on_before_open') && this.IsFn(upl['on_before_open']) ? upl['on_before_open'] : null; - this.onAfterOpenUploader[i] = upl.hasOwnProperty('on_after_open') && this.IsFn(upl['on_after_open']) ? upl['on_after_open'] : null; - this.onBeforeCloseUploader[i] = upl.hasOwnProperty('on_before_close') && this.IsFn(upl['on_before_close']) ? upl['on_before_close'] : null; - this.onAfterCloseUploader[i] = upl.hasOwnProperty('on_after_close') && this.IsFn(upl['on_after_close']) ? upl['on_after_close'] : null; - break; - } - } - if(this.editorTypes.indexOf(this.edtTypes.command) != -1){ this.editorModel = 'row'; } - this.inputEditorCss = f.input_editor_css!==undefined ? f.input_editor_css : 'ezInputEditor'; //default css class applied to input editor - this.textareaEditorCss = f.textarea_editor_css!==undefined ? f.textarea_editor_css : 'ezTextareaEditor'; //default css class applied to textarea editor - this.selectEditorCss = f.select_editor_css!==undefined ? f.select_editor_css : 'ezSelectEditor'; //default css class applied to select editor - this.commandEditorCss = f.command_editor_css!==undefined ? f.command_editor_css : 'ezCommandEditor'; //default css class applied to command editor - this.modifiedCellCss = f.modified_cell_css!==undefined ? f.modified_cell_css : 'ezModifiedCell'; //default css class applied to modified cell - - //Command type editor config - this.cmdEnabledBtns = this.editorCmdBtns.hasOwnProperty('enable') ? this.editorCmdBtns.enable : ['update', 'insert', 'delete', 'submit', 'cancel']; //command buttons to be enabled - this.cmdUpdateBtn = this.editorCmdBtns.hasOwnProperty('update') ? this.editorCmdBtns.update : {}; //update command button - this.cmdInsertBtn = this.editorCmdBtns.hasOwnProperty('insert') ? this.editorCmdBtns.insert : {}; //insert command button - this.cmdDeleteBtn = this.editorCmdBtns.hasOwnProperty('delete') ? this.editorCmdBtns['delete'] : {}; //delete command button - this.cmdSubmitBtn = this.editorCmdBtns.hasOwnProperty('submit') ? this.editorCmdBtns['submit'] : {}; //submit command button - this.cmdCancelBtn = this.editorCmdBtns.hasOwnProperty('cancel') ? this.editorCmdBtns.cancel : {}; //cancel command button - - this.cmdUpdateBtnText = this.cmdUpdateBtn.hasOwnProperty('text') ? this.cmdUpdateBtn.text : ''; //Default text is empty because icon is set by default - this.cmdInsertBtnText = this.cmdInsertBtn.hasOwnProperty('text') ? this.cmdInsertBtn.text : ''; //Default text is empty because icon is set by default - this.cmdDeleteBtnText = this.cmdDeleteBtn.hasOwnProperty('text') ? this.cmdDeleteBtn.text : ''; //Default text is empty because icon is set by default - this.cmdSubmitBtnText = this.cmdSubmitBtn.hasOwnProperty('text') ? this.cmdSubmitBtn.text : 'Submit'; - this.cmdCancelBtnText = this.cmdCancelBtn.hasOwnProperty('text') ? this.cmdCancelBtn.text : 'Cancel'; - - this.cmdUpdateBtnTitle = this.cmdUpdateBtn.hasOwnProperty('title') ? this.cmdUpdateBtn.title : 'Edit record'; - this.cmdInsertBtnTitle = this.cmdInsertBtn.hasOwnProperty('title') ? this.cmdInsertBtn.title : 'Create record'; - this.cmdDeleteBtnTitle = this.cmdDeleteBtn.hasOwnProperty('title') ? this.cmdDeleteBtn.title : 'Delete record'; - this.cmdSubmitBtnTitle = this.cmdSubmitBtn.hasOwnProperty('title') ? this.cmdSubmitBtn.title : 'Submit record'; - this.cmdCancelBtnTitle = this.cmdCancelBtn.hasOwnProperty('title') ? this.cmdCancelBtn.title : 'Cancel'; - - this.cmdUpdateBtnIcon = this.cmdUpdateBtn.hasOwnProperty('icon') ? this.cmdUpdateBtn.icon : ''; - this.cmdInsertBtnIcon = this.cmdInsertBtn.hasOwnProperty('icon') ? this.cmdInsertBtn.icon : ''; - this.cmdDeleteBtnIcon = this.cmdDeleteBtn.hasOwnProperty('icon') ? this.cmdDeleteBtn.icon : ''; - this.cmdSubmitBtnIcon = this.cmdSubmitBtn.hasOwnProperty('icon') ? this.cmdSubmitBtn.icon : ''; - this.cmdCancelBtnIcon = this.cmdCancelBtn.hasOwnProperty('icon') ? this.cmdCancelBtn.icon : ''; - - this.cmdUpdateBtnCss = this.cmdUpdateBtn.hasOwnProperty('css') ? this.cmdUpdateBtn.css : null; - this.cmdInsertBtnCss = this.cmdInsertBtn.hasOwnProperty('css') ? this.cmdInsertBtn.css : null; - this.cmdDeleteBtnCss = this.cmdDeleteBtn.hasOwnProperty('css') ? this.cmdDeleteBtn.css : null; - this.cmdSubmitBtnCss = this.cmdSubmitBtn.hasOwnProperty('css') ? this.cmdSubmitBtn.css : null; - this.cmdCancelBtnCss = this.cmdCancelBtn.hasOwnProperty('css') ? this.cmdCancelBtn.css : null; - - this.cmdUpdateBtnStyle = this.cmdUpdateBtn.hasOwnProperty('style') ? this.cmdUpdateBtn.style : null; - this.cmdInsertBtnStyle = this.cmdInsertBtn.hasOwnProperty('style') ? this.cmdInsertBtn.style : null; - this.cmdDeleteBtnStyle = this.cmdDeleteBtn.hasOwnProperty('style') ? this.cmdDeleteBtn.style : null; - this.cmdSubmitBtnStyle = this.cmdSubmitBtn.hasOwnProperty('style') ? this.cmdSubmitBtn.style : null; - this.cmdCancelBtnStyle = this.cmdCancelBtn.hasOwnProperty('style') ? this.cmdCancelBtn.style : null; - - this.cmdInsertBtnScroll = this.cmdInsertBtn.hasOwnProperty('scrollIntoView') ? this.cmdInsertBtn.scrollIntoView : false; //scroll new added row into view - - //Editor callbacks, delegates - this.onEditableInit = this.IsFn(f.on_editable_initialized) ? f.on_editable_initialized : null; - this.onBeforeOpenEditor = this.IsFn(f.on_before_open_editor) ? f.on_before_open_editor : null; - this.onAfterOpenEditor = this.IsFn(f.on_after_open_editor) ? f.on_after_open_editor : null; - this.onBeforeCloseEditor = this.IsFn(f.on_before_close_editor) ? f.on_before_close_editor : null; - this.onAfterCloseEditor = this.IsFn(f.on_after_close_editor) ? f.on_after_close_editor : null; - this.setCustomEditorValue = this.IsFn(f.set_custom_editor_value) ? f.set_custom_editor_value : null; - this.getCustomEditorValue = this.IsFn(f.get_custom_editor_value) ? f.get_custom_editor_value : null; - this.setCellModifiedValue = this.IsFn(f.set_cell_modified_value) ? f.set_cell_modified_value : null; - this.validateModifiedValue = this.IsFn(f.validate_modified_value) ? f.validate_modified_value : null; - this.openCustomEditor = this.IsFn(f.open_custom_editor) ? f.open_custom_editor : null; - this.closeCustomEditor = this.IsFn(f.close_custom_editor) ? f.close_custom_editor : null; - this.onAddedDomRow = this.IsFn(f.on_added_dom_row) ? f.on_added_dom_row : null; - - //Server actions config - this.actions = this.IsObj(f.actions) ? f.actions : {}; - this.updateConfig = this.actions['update']!==undefined ? this.actions['update'] : {}; - this.insertConfig = this.actions['insert']!==undefined ? this.actions['insert'] : {}; - this.deleteConfig = this.actions['delete']!==undefined ? this.actions['delete'] : {}; - this.updateURI = this.updateConfig.hasOwnProperty('uri') ? this.updateConfig['uri'] : null; - this.insertURI = this.insertConfig.hasOwnProperty('uri') ? this.insertConfig['uri'] : null; - this.deleteURI = this.deleteConfig.hasOwnProperty('uri') ? this.deleteConfig['uri'] : null; - this.updateFormMethod = this.updateConfig.hasOwnProperty('form_method') ? this.updateConfig['form_method'].LCase() : 'post'; - this.insertFormMethod = this.insertConfig.hasOwnProperty('form_method') ? this.insertConfig['form_method'].LCase() : 'post'; - this.deleteFormMethod = this.deleteConfig.hasOwnProperty('form_method') ? this.deleteConfig['form_method'].LCase() : 'post'; - this.updateSubmitMethod = this.updateConfig.hasOwnProperty('submit_method') ? this.updateConfig['submit_method'].LCase() : this.ajax ? 'ajax': 'form'; - this.insertSubmitMethod = this.insertConfig.hasOwnProperty('submit_method') ? this.insertConfig['submit_method'].LCase() : this.ajax ? 'ajax': 'form'; - this.deleteSubmitMethod = this.deleteConfig.hasOwnProperty('submit_method') ? this.deleteConfig['submit_method'].LCase() : this.ajax ? 'ajax': 'form'; - this.bulkDelete = this.deleteConfig.hasOwnProperty('bulk_delete') ? this.deleteConfig['bulk_delete'] : false; //enables delete of selected rows - this.defaultRecord = this.insertConfig.hasOwnProperty('default_record') - && this.IsArray(this.insertConfig['default_record']) ? this.insertConfig['default_record'] : null; - this.updateParams = this.updateConfig.hasOwnProperty('param_names') - && this.IsArray(this.updateConfig['param_names']) ? this.updateConfig['param_names'] : null; - this.insertParams = this.insertConfig.hasOwnProperty('param_names') - && this.IsArray(this.insertConfig['param_names']) ? this.insertConfig['param_names'] : null; - this.deleteParams = this.deleteConfig.hasOwnProperty('param_names') - && this.IsArray(this.deleteConfig['param_names']) ? this.deleteConfig['param_names'] : null; - - //Server actions delegates and callbacks - this.onUpdateSubmit = this.updateConfig.hasOwnProperty('on_update_submit') - && this.IsFn(this.updateConfig['on_update_submit']) ? this.updateConfig['on_update_submit'] : null; - this.onInsertSubmit = this.insertConfig.hasOwnProperty('on_insert_submit') - && this.IsFn(this.insertConfig['on_insert_submit']) ? this.insertConfig['on_insert_submit'] : null; - this.onDeleteSubmit = this.deleteConfig.hasOwnProperty('on_delete_submit') - && this.IsFn(this.deleteConfig['on_delete_submit']) ? this.deleteConfig['on_delete_submit'] : null; - this.onBeforeUpdateSubmit = this.updateConfig.hasOwnProperty('on_before_submit') - && this.IsFn(this.updateConfig['on_before_submit']) ? this.updateConfig['on_before_submit'] : null; - this.onBeforeInsertSubmit = this.insertConfig.hasOwnProperty('on_before_submit') - && this.IsFn(this.insertConfig['on_before_submit']) ? this.insertConfig['on_before_submit'] : null; - this.onBeforeDeleteSubmit = this.deleteConfig.hasOwnProperty('on_before_submit') - && this.IsFn(this.deleteConfig['on_before_submit']) ? this.deleteConfig['on_before_submit'] : null; - this.onAfterUpdateSubmit = this.updateConfig.hasOwnProperty('on_after_submit') - && this.IsFn(this.updateConfig['on_after_submit']) ? this.updateConfig['on_after_submit'] : null; - this.onAfterInsertSubmit = this.insertConfig.hasOwnProperty('on_after_submit') - && this.IsFn(this.insertConfig['on_after_submit']) ? this.insertConfig['on_after_submit'] : null; - this.onAfterDeleteSubmit = this.deleteConfig.hasOwnProperty('on_after_submit') - && this.IsFn(this.deleteConfig['on_after_submit']) ? this.deleteConfig['on_after_submit'] : null; - this.onUpdateError = this.updateConfig.hasOwnProperty('on_submit_error') - && this.IsFn(this.updateConfig['on_submit_error']) ? this.updateConfig['on_submit_error'] : null; - this.onInsertError = this.insertConfig.hasOwnProperty('on_submit_error') - && this.IsFn(this.insertConfig['on_submit_error']) ? this.insertConfig['on_submit_error'] : null; - this.onDeleteError = this.deleteConfig.hasOwnProperty('on_submit_error') - && this.IsFn(this.deleteConfig['on_submit_error']) ? this.deleteConfig['on_submit_error'] : null; - this.checkUpdateResponseSanity = this.updateConfig.hasOwnProperty('check_response_sanity') - && this.IsFn(this.updateConfig['check_response_sanity']) ? this.updateConfig['check_response_sanity'] : null; - this.checkInsertResponseSanity = this.insertConfig.hasOwnProperty('check_response_sanity') - && this.IsFn(this.insertConfig['check_response_sanity']) ? this.insertConfig['check_response_sanity'] : null; - this.checkDeleteResponseSanity = this.deleteConfig.hasOwnProperty('check_response_sanity') - && this.IsFn(this.deleteConfig['check_response_sanity']) ? this.deleteConfig['check_response_sanity'] : null; - this.processUpdateResponse = this.updateConfig.hasOwnProperty('process_response') - && this.IsFn(this.updateConfig['process_response']) ? this.updateConfig['process_response'] : null; - this.processInsertResponse = this.insertConfig.hasOwnProperty('process_response') - && this.IsFn(this.insertConfig['process_response']) ? this.insertConfig['process_response'] : null; - this.processDeleteResponse = this.deleteConfig.hasOwnProperty('process_response') - && this.IsFn(this.deleteConfig['process_response']) ? this.deleteConfig['process_response'] : null; - - //Messages - this.msgSubmitOK = f.msg_submit_ok!==undefined ? f.msg_submit_ok : 'Changes were successfully submitted to server!'; - this.msgConfirmDelSelectedRows = f.msg_confirm_delete_selected_rows!==undefined ? f.msg_confirm_delete_selected_rows : 'Do you want to delete the selected row(s)?'; - this.msgErrOccur = f.msg_error_occured!==undefined ? f.msg_error_occured : 'An error occured!'; - this.msgSaveUnsuccess = f.msg_submit_unsuccessful!==undefined ? f.msg_submit_unsuccessful : 'Changes could not be saved!'; - this.msgUndefinedSubmitUrl = f.undefined_submit_url!==undefined ? f.undefined_submit_url : 'Changes could not be saved! Endpoint URL is not defined'; - this.msgNewRowNoUploader = f.msg_new_row_no_uploader!==undefined ? f.msg_new_row_no_uploader : 'Please save the newly added rows before using the Uploader.'; - this.msgInvalidData = f.msg_invalid_data!==undefined ? f.msg_invalid_data : 'Returned data is invalid.'; - - //Containers - this.ifrmContainer = {}; //submit forms container - - //Values - this.valuesSeparator = ', '; - this.defaultRecordUndefinedValue = '...'; - this.newRowClass = 'ezNewRow'; - this.recordKeyValue = 'new'; - - //Attributes - this.attrValue = 'data-ez-slc-value'; - this.attrText = 'data-ez-slc-text'; - this.attrCont = 'data-ez-html'; - this.attrData = 'data-ez-data'; - this.attrUplname = 'data-ez-uplname'; - this.attrColIndex = 'data-ez-col-index'; - this.attrRowIndex = 'data-ez-row-index'; - - //Counters - this.savedRowsNb = { 'insert': 0, 'update': 0, 'delete': 0 }; - - //prefixes - this.prfxEdt = 'edt_'; - this.prfxIFrm = 'iframe_'; - this.prfxFrm = 'form_'; - this.prfxScr = 'scr_'; - this.prfxParam = 'col_'; - //upload editor - this.prfxUplCont = 'upl_'; - this.prfxUplForm = 'upl_form_'; - this.prfxUplIframe = 'upl_ifrm_'; - this.prfxUplInfo = 'upl_info_'; - this.prfxUplOutput = 'upl_output_'; - this.prfxUplBtn = 'upl_btn_'; - this.prfxUplBtnClose = 'upl_btn_close_'; - this.prfxUplImgDisplay = 'upl_img_display_'; - this.prfxUplWinRef = 'et_upl_'; - - //Upload form - this.uplFileInp = 'UPL_FILE'; - this.uplKeyInput = 'RECORD_KEY'; - this.uplFldPath = 'IMAGES_FOLDER_PATH'; - this.uplSqlFieldName = 'SQL_FIELD'; - this.uplFileSize = 'MAX_FILE_SIZE'; - this.uplValidExts = 'VALID_EXTENSIONS'; - this.uplJsCode = 'JS_CODE'; - - this.Editable = new Editable(this); - this.Selection = new Selection(this); -}; - -var Editable = function(editTable){ - this.o = editTable; -}; - -var Selection = function(editTable){ - this.o = editTable; -}; - -var Uploader = function(editTable, colIndex){ - this.o = editTable; - this.colIndex = colIndex; - window[this.o.prfxUplWinRef + colIndex + this.o.id] = this; //global reference for server-side purposes -}; - -Uploader.prototype = { - divUpl: null, formUpl: null, fileUpl: null, hiddenFileSize: null, hiddenFolderPath: null, hiddenValidExt: null, hiddenKey: null, - ifrmUpl: null, divUplInfo: null, divUplOutput: null, divUplBtnsCont: null, divUplBtn: null, divUplBtnClose: null, divUplDisplay: null, - initialValue: null, isUploadSuccessful: false, - Init: function(){ - if(!this.o.hasUploader){ return; } - this.SetUploader(); - }, - SetUploader: function(){ - this.divUpl = this.o.CreateElm('div', - ['id', this.o.prfxUplCont + this.colIndex + this.o.id], ['style', 'display:none; z-index:10001;'], ['class', this.o.uplCss[this.colIndex]] - ); - this.formUpl = this.o.CreateElm('form', - ['id', this.o.prfxUplForm + this.colIndex + this.o.id], ['name', this.o.prfxUplForm + this.colIndex + this.o.id], ['method', 'POST'], - ['action', this.o.uplURI[this.colIndex]], ['target', this.o.prfxUplIframe + this.colIndex + this.o.id], ['enctype', 'multipart/form-data'] - ); - this.fileUpl = this.o.CreateElm('input',['id', this.o.uplFileInp], ['name', this.o.uplFileInp], ['type', 'file']); - this.hiddenFileSize = this.o.CreateElm('input', ['name', this.o.uplFileSize], ['type', 'hidden'], ['value', this.o.uplMaxFileSize[this.colIndex]]); //server-side info: max file size - this.hiddenFolderPath = this.o.CreateElm('input', ['name', this.o.uplFldPath], ['type', 'hidden'], ['value', this.o.uplPath[this.colIndex]]); //server-side info: images folder path - this.hiddenValidExt = this.o.CreateElm('input', ['name', this.o.uplValidExts], ['type', 'hidden'], ['value', this.o.uplValidExt[this.colIndex]]); //server-side info: allowed file extensions - this.hiddenKey = this.o.CreateElm('input', ['name', this.o.uplKeyInput], ['type', 'hidden'], ['value', this.o.recordKeyValue]); //server-side info: record key - this.hiddenSqlField = this.o.CreateElm('input', ['name', this.o.uplSqlFieldName], ['type', 'hidden'], ['value', this.o.uplSqlField[this.colIndex]]); //server-side info: SQL field name storing upload filename - this.hiddenUplWinRef = this.o.CreateElm('input', ['name', this.o.uplJsCode], ['type', 'hidden'], ['value', this.o.uplJsSuccess[this.colIndex]]); //server-side info: js code invoked from server when upload successful - this.ifrmUpl = this.o.CreateElm('iframe', ['id', this.o.prfxUplIframe + this.colIndex + this.o.id], ['name', this.o.prfxUplIframe + this.colIndex + this.o.id], ['style', 'display:none; left:-10001;']); - this.divUplInfo = this.o.CreateElm('div',['id', this.o.prfxUplInfo + this.colIndex + this.o.id]); - this.divUplOutput = this.o.CreateElm('div',['id', this.o.prfxUplOutput + this.colIndex + this.o.id], ['class', this.o.uplOutputCss[this.colIndex]]); - this.divUplBtnsCont = this.o.CreateElm('div',['style', 'text-align:right']); - this.divUplBtn = this.o.CreateElm('button',['id', this.o.prfxUplBtn + this.colIndex + this.o.id], ['style', 'display:none;']); - this.divUplBtnClose = this.o.CreateElm('button',['id', this.o.prfxUplBtnClose + this.colIndex + this.o.id]); - this.divUplDisplay = this.o.CreateElm('div',['id', this.o.prfxUplImgDisplay + this.colIndex + this.o.id], ['class', this.o.uplDisplayCss[this.colIndex]]); - - //IE<8 class, name, style attributes are not set correctly... - if(!this.o.Css.Has(this.divUpl, this.o.uplCss[this.colIndex])){ - this.o.Css.Add(this.divUpl, this.o.uplCss[this.colIndex]); - this.o.Css.Add(this.divUplOutput, this.o.uplOutputCss[this.colIndex]); - this.o.Css.Add(this.divUplDisplay, this.o.uplDisplayCss[this.colIndex]); - this.divUpl.style.cssText = 'display:none; z-index:10001;'; - this.divUplBtnsCont.style.cssText = 'text-align:right'; - this.divUplBtn.style.cssText = 'display:none;'; - this.formUpl = document.createElement( - '
' - ); - this.ifrmUpl = document.createElement( - '' - ); - } - - this.divUplInfo.innerHTML = parseInt(this.o.uplMaxFileSize[this.colIndex]/1024, 10) + 'Kb max (' + this.o.uplValidExt[this.colIndex].toString() + ')'; - this.divUplBtn.appendChild(this.o.CreateText('Upload')); - this.divUplBtnClose.appendChild(this.o.CreateText('Close')); - this.divUplBtnsCont.appendChild(this.divUplBtn); - this.divUplBtnsCont.appendChild(this.divUplBtnClose); - - this.formUpl.appendChild(this.fileUpl); - this.formUpl.appendChild(this.hiddenFileSize); - this.formUpl.appendChild(this.hiddenFolderPath); - this.formUpl.appendChild(this.hiddenUplWinRef); - this.formUpl.appendChild(this.hiddenValidExt); - this.formUpl.appendChild(this.hiddenKey); - this.formUpl.appendChild(this.hiddenSqlField); - - this.divUpl.appendChild(this.formUpl); - this.divUpl.appendChild(this.ifrmUpl); - this.divUpl.appendChild(this.divUplInfo); - this.divUpl.appendChild(this.divUplOutput); - this.divUpl.appendChild(this.divUplBtnsCont); - this.divUpl.appendChild(this.divUplDisplay); - this.o.table.parentNode.insertBefore(this.divUpl, this.o.table); - - //Events - var x = this; - this.ifrmUpl.onload = this.ifrmUpl.onreadystatechange = function(){ //Iframe onload event - if(!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete'){ - try{ - var iframeDoc = this.contentDocument || this.contentWindow.document; - if(iframeDoc.location.href != 'about:blank'){ - x.Output(iframeDoc.body.innerHTML); - x.iframe.src = 'about:blank'; - x.HideUploadButton(); - } - } catch(ex){} - } - }; - - this.o.Event.Add(this.fileUpl, 'click', function(e){ x.OnUplClick(); }); - this.o.Event.Add(this.divUplBtn, 'click', function(e){ x.Upload(); }); - this.o.Event.Add(this.divUplBtnClose, 'click', function(e){ x.Close(x.o.Selection.GetActiveRow().cells[x.colIndex]); }); - - //Js code passed to server - var js = this.o.uplJsSuccess[this.colIndex].replace(/\{1\}/g, this.o.prfxUplWinRef + this.colIndex + this.o.id); - this.hiddenUplWinRef.value = js; - }, - GetValue: function(){ return this.fileUpl.value; }, - HasValueChanged: function(){ return this.initialValue != this.GetValue(); }, - OnUplClick: function(){ this.ShowUploadButton(); }, - Upload: function(){ this.ShowLoader(); this.formUpl.submit(); }, - SetRecordKey: function(key){ this.hiddenKey.value = key; }, - GetRecordKey: function(){ return this.hiddenKey.value; }, - ShowUploadButton: function(){ this.divUplBtn.style.display = 'inline'; }, - HideUploadButton: function(){ this.divUplBtn.style.display = 'none'; }, - ShowUploadContainer: function(){ this.divUplDisplay.style.display = 'block'; }, - HideUploadContainer: function(){ this.divUplDisplay.style.display = 'none'; }, - ShowUpload: function(){ - if(!this.o.uplShowUpload[this.colIndex]){ return; } - var row = this.o.Selection.GetActiveRow(); - if(this.o.showUpload[this.colIndex]){ - this.ShowUploadContainer(); - this.o.showUpload[this.colIndex].call(this, this.o, this.divUplDisplay, this.GetUploadName(), this.o.uplPath[this.colIndex]); - return; - } - if(row){ - var uplname = this.GetUploadName(); - if(uplname){ - if(this.o.uplShowLink[this.colIndex]){ - this.divUplDisplay.innerHTML = this.GetUploadLinkHtml(); - } else { - this.divUplDisplay.innerHTML = ''+uplname+''; - } - this.ShowUploadContainer(); - this.divUpl.scrollIntoView(false); - } else { this.ClearUpload(); } - } - }, - ClearUpload: function(){ - this.divUplDisplay.innerHTML = ''; - this.HideUploadContainer(); - }, - GetUploadName: function(){ - var cell = this.o.Selection.GetActiveRow().cells[this.colIndex]; - if(cell){ return cell.getAttribute(this.o.attrUplname); } - return null; - }, - SetUploadName: function(name){ - var cell = this.o.Selection.GetActiveRow().cells[this.colIndex]; - if(cell){ cell.setAttribute(this.o.attrUplname, name); } - }, - GetUploadLinkHtml: function(){ - var uplname = this.GetUploadName(); - return ''+ - uplname.replace(this.GetRecordKey()+'_', '') + ''; - }, - Open: function(cell){ - if(!cell){ return; } - if(this.o.Css.Has(cell.parentNode, this.o.newRowClass) || !cell.parentNode.getAttribute('id')){ alert(this.o.msgNewRowNoUploader); return; } - cell.appendChild(this.divUpl); - if(this.o.onBeforeOpenUploader[this.colIndex]){ - this.o.onBeforeOpenUploader[this.colIndex].call(this, this.o, this.divUpl, cell); - } - var key = this.o.uplRecordIdColIndex[this.colIndex] - ? this.o.Selection.GetActiveRow()[this.o.uplRecordIdColIndex[this.colIndex]] - : this.o.Selection.GetActiveRow().getAttribute('id').replace(this.o.newRowPrefix, ''); - if(key !== ''){ - this.divUpl.style.display = ''; - this.SetRecordKey(key); - this.initialValue = this.GetValue(); - this.SetUploadSuccess(false); - this.ShowUpload(); - } - if(this.o.onAfterOpenUploader[this.colIndex]){ - this.o.onAfterOpenUploader[this.colIndex].call(this, this.o, this.divUpl, cell); - } - }, - Close: function(cell){ - if(this.divUpl.style.display == 'none'){ return; } - if(this.o.onBeforeCloseUploader[this.colIndex]){ - this.o.onBeforeCloseUploader[this.colIndex].call(this, this.o, this.divUpl, cell); - } - if(cell && this.IsUploadSuccessful()){ - if(this.o.uplShowLink[this.colIndex]){ - var div = this.o.CreateElm('div'); - div.innerHTML = this.divUplDisplay.innerHTML; - cell.appendChild(div); - } else { - var img = this.o.Tag(cell, 'img')[0]; - if(img){ img.src = this.o.uplOkImg[this.colIndex]; } - } - } - this.Output(''); - this.SetRecordKey(''); - this.ClearUpload(); - this.HideUploadButton(); - this.divUpl.style.display = 'none'; - this.o.StandardBody().appendChild(this.divUpl); - if(this.o.onAfterCloseUploader[this.colIndex]){ - this.o.onAfterCloseUploader[this.colIndex].call(this, this.o, this.divUpl, cell); - } - }, - Output: function(msg){ this.divUplOutput.innerHTML = msg; }, - SetUploadSuccess: function(val){ this.isUploadSuccessful = val; }, - IsUploadSuccessful: function(val){ return this.isUploadSuccessful; }, - ShowLoader: function(){ this.Output('Please wait...'); }, - HideLoader: function(){ this.Output(''); } -}; - -Editable.prototype = { - onEditAdded: false, activeCellEditor: null, openCellEditor: null, activeRow: null, - modifiedRows: [], newRows: [], addedRows: [], deletedRows: [], - Init: function(){ - if(!this.o.editable){ return; } - this.SetEvents(); - this.SetCellsEditor(); - if(this.o.onEditableInit){ this.o.onEditableInit.call(null, this.o); } - }, - Set: function(){ this.o.editable = true; this.SetEvents(); }, - Remove: function(){ this.o.editable = false; this.RemoveEvents(); }, - SetEvents: function(){ - if(!this.onEditAdded){ - var x = this; - this.o.Event.Bind(this.o.table, this.o.openEditorAction, function(e){ x.Edit.call(x, e); }); - this.onEditAdded = true; - } - }, - RemoveEvents: function(){ - if(this.onEditAdded){ - var x = this; - this.o.Event.Unbind(this.o.table, this.o.openEditorAction, function(e){ x.Edit.call(x, e); }); - this.onEditAdded = false; - } - }, - SetCellsEditor: function(){ - for (var i = 0; i < this.o.nbCells; i++){ - if(this.o.editorTypes.length == this.o.nbCells){ - switch (this.o.editorTypes[i]){ - case this.o.edtTypes.none: - this.o.editors[i] = null; - break; - case this.o.edtTypes.input: - this.o.editors[i] = this.CreateInputEditor(i); - break; - case this.o.edtTypes.textarea: - this.o.editors[i] = this.CreateMultilineEditor(i); - break; - case this.o.edtTypes.select: - case this.o.edtTypes.multiple: - this.o.editors[i] = this.CreateSelectEditor(i); - break; - case this.o.edtTypes.bool: - this.o.editors[i] = {}; - break; - case this.o.edtTypes.uploader: - this.o.editors[i] = this.CreateUploaderEditor(i); - break; - case this.o.edtTypes.command: - this.SetCommandEditor(i); - this.o.editors[i] = null; - break; - case this.o.edtTypes.custom: - this.o.editors[i] = this.o.Get(this.o.customEditor[i]); - break; - default: - this.o.editors[i] = null; - break; - } - } else { - //If editor type not set, default type is input - this.o.editorTypes[i] = this.o.edtTypes.input; - this.o.editors[i] = this.CreateInputEditor(i); - } - } - }, - CreateInputEditor: function(colIndex){ - if(colIndex === undefined) return null; - var inp = this.o.CreateElm(this.o.edtTypes.input, ['id', this.o.prfxEdt + colIndex + '_' + this.o.id], ['type', 'text'], - ['class', this.o.inputEditorCss], [this.o.attrColIndex, colIndex]); - var attr = this.o.editorAttributes[colIndex]; - if(attr) for (var i = 0; i < attr.length; i++){ inp.setAttribute(attr[i][0], attr[i][1]); } //additional attributes - if(inp.className === '') inp.className = this.o.inputEditorCss; //for older IE versions... - if(this.o.editorCss[colIndex]) this.o.Css.Add(inp, this.o.editorCss[colIndex]); //additional css - if(this.o.editorStyles[colIndex]) inp.style.cssText = this.o.editorStyles[colIndex]; //inline style - var x = this; - this.o.Event.Add(inp, 'focus', function(e){ x.Event.OnInputFocus.call(x, e); }); - this.o.Event.Add(inp, 'blur', function(e){ x.Event.OnBlur.call(x, e); }); - return inp; - }, - CreateMultilineEditor: function(colIndex){ - if(colIndex === undefined) return null; - var txa = this.o.CreateElm(this.o.edtTypes.textarea, ['id', this.o.prfxEdt + colIndex + '_' + this.o.id], - ['class', this.o.textareaEditorCss], [this.o.attrColIndex, colIndex]); - var attr = this.o.editorAttributes[colIndex]; - if(attr) for (var i = 0; i < attr.length; i++){ txa.setAttribute(attr[i][0], attr[i][1]); } //additional attributes - if(txa.className === '') txa.className = this.o.textareaEditorCss; //for older IE versions... - if(this.o.editorCss[colIndex]) this.o.Css.Add(txa, this.o.editorCss[colIndex]); //additional css - if(this.o.editorStyles[colIndex]) txa.style.cssText = this.o.editorStyles[colIndex]; //inline style - var x = this; - this.o.Event.Add(txa, 'focus', function(e){ x.Event.OnInputFocus.call(x, e); }); - this.o.Event.Add(txa, 'blur', function(e){ x.Event.OnBlur.call(x, e); }); - this.o.Event.Add(txa, 'keypress', function(e){ x.Event.OnKeyPress.call(x, e); }); - return txa; - }, - CreateSelectEditor: function(colIndex){ - if(colIndex === undefined) return null; - var slc = this.o.CreateElm(this.o.edtTypes.select, ['id', this.o.prfxEdt + colIndex + '_' + this.o.id], - ['class', this.o.selectEditorCss], [this.o.attrColIndex, colIndex]); - if(this.o.IsEditorType(colIndex, this.o.edtTypes.multiple)){ slc.setAttribute('multiple', 'multiple'); } - var attr = this.o.editorAttributes[colIndex]; - if(attr) for (var i = 0; i < attr.length; i++){ slc.setAttribute(attr[i][0], attr[i][1]); } //additional attributes - if(slc.className === '') slc.className = this.o.selectEditorCss; //for older IE versions... - if(this.o.editorCss[colIndex]) this.o.Css.Add(slc, this.o.editorCss[colIndex]); //additional css - if(this.o.editorStyles[colIndex]) slc.style.cssText = this.o.editorStyles[colIndex]; //inline style - var optArray = [], valArray = []; //options arrays - if(this.o.editorCustomSlcOptions[colIndex]){//custom values - for (var i = 0; i < this.o.editorCustomSlcOptions[colIndex].length; i++){ - var data = this.o.editorCustomSlcOptions[colIndex][i]; - if(this.o.editorCustomSlcValues[colIndex]){ - var val = this.o.editorCustomSlcValues[colIndex][i]; - if(valArray.indexOf(val) == -1) valArray.push(val); - } - if(optArray.indexOf(data) == -1) optArray.push(data); - } - } else {//automatic column values - for (var i = this.o.startRow; i < this.o.GetRowsNb(); i++){ - var row = this.o.table.rows[i]; - var cell = row.cells[colIndex]; - if(!row || !cell) continue; - var data = this.o.GetText(cell); - if(optArray.indexOf(data) == -1) optArray.push(data); - } - } - if(this.o.editorSortSlcOptions[colIndex]){ - var sortType = this.o.editorSortSlcOptions[colIndex].LCase(); - if(sortType == 'numdesc'){ - try { optArray.sort(this.o.Sort.NumDesc); } catch (e){ } - } else if(sortType == 'numasc'){ - try { optArray.sort(this.o.Sort.NumAsc); } catch (e){ } - } else { - try { optArray.sort(this.o.Sort.IgnoreCase); } catch (e){ } - } - } - for (var j = 0; j < optArray.length; j++){ - var opt = this.o.CreateElm('option', ['value', valArray[j] || optArray[j]]); - opt.appendChild(this.o.CreateText(optArray[j])); - slc.appendChild(opt); - } - var x = this; - this.o.Event.Add(slc, 'change', function(e){ - var cell = x.o.GetCell(e); - if(cell){ - cell.setAttribute(x.o.attrText, slc.options[slc.selectedIndex].text); //for inserts - cell.setAttribute(x.o.attrValue, slc.options[slc.selectedIndex].value); //for inserts - slc.setAttribute(x.o.attrText, slc.options[slc.selectedIndex].text); - slc.setAttribute(x.o.attrValue, slc.options[slc.selectedIndex].value); - } - }); - this.o.Event.Add(slc, 'blur', function(e){ x.Event.OnBlur.call(x, e); }); - this.o.Event.Add(slc, 'keypress', function(e){ x.Event.OnKeyPress.call(x, e); }); - return slc; - }, - SetCommandEditor: function(colIndex){ - if(colIndex === undefined || !this.o.IsEditorType(colIndex, this.o.edtTypes.command)){ return; } - this.edtBtns = []; this.addBtns = []; this.delBtns = []; this.submitBtns = []; this.cancelBtns = []; - var x = this.o.Editable, - o = this.o; - for (var i = this.o.startRow; i < this.o.GetRowsNb(); i++){ - var row = this.o.table.rows[i]; - var cell = row.cells[colIndex]; - if(!row || !cell) continue; - - var div = this.o.CreateElm('div', ['class', this.o.commandEditorCss]); - if(this.o.cmdEnabledBtns.indexOf('update') != -1){ - var editBtn = this.o.CreateElm('button', ['id', 'editBtn_' + i + '_' + this.o.id], ['title', this.o.cmdUpdateBtnTitle], - ['css', this.o.cmdUpdateBtnCss], [this.o.attrColIndex, i]); - if(this.o.cmdUpdateBtnStyle) editBtn.style.cssText = this.o.cmdUpdateBtnStyle; //inline style - editBtn.innerHTML = this.o.cmdUpdateBtnIcon + this.o.cmdUpdateBtnText; - div.appendChild(editBtn); - this.o.Event.Add(editBtn, 'click', function(e){ x.Edit.call(x, e); }); - if(this.edtBtns.indexOf(editBtn) == -1) this.edtBtns[i] = editBtn; - } - if(this.o.cmdEnabledBtns.indexOf('insert') != -1){ - var createBtn = this.o.CreateElm('button', ['id', 'createBtn_' + i + '_' + this.o.id], ['title', this.o.cmdInsertBtnTitle], - ['css', this.o.cmdInsertBtnCss], [this.o.attrColIndex, i]); - if(this.o.cmdInsertBtnStyle) createBtn.style.cssText = this.o.cmdInsertBtnStyle; //inline style - createBtn.innerHTML = this.o.cmdInsertBtnIcon + this.o.cmdInsertBtnText; - div.appendChild(createBtn); - this.o.Event.Add(createBtn, 'click', function(e){ x.AddNewRow(); x.SetCommandEditor(x.o.editorCmdColIndex); }); - if(this.addBtns.indexOf(createBtn) == -1) this.addBtns[i] = createBtn; - } - if(this.o.cmdEnabledBtns.indexOf('delete') != -1){ - var delBtn = this.o.CreateElm('button', ['id', 'delBtn_' + i + '_' + this.o.id], ['title', this.o.cmdDeleteBtnTitle], - ['css', this.o.cmdDeleteBtnCss], [this.o.attrColIndex, i]); - if(this.o.cmdDeleteBtnStyle) delBtn.style.cssText = this.o.cmdDeleteBtnStyle; //inline style - delBtn.innerHTML = this.o.cmdDeleteBtnIcon + this.o.cmdDeleteBtnText; - div.appendChild(delBtn); - this.o.Event.Add(delBtn, 'click', function(e){ x.SubmitDeletedRows(); }); - if(this.delBtns.indexOf(delBtn) == -1) this.delBtns[i] = delBtn; - } - if(this.o.cmdEnabledBtns.indexOf('submit') != -1){ - var postBtn = this.o.CreateElm('button', ['id', 'postBtn_' + i + '_' + this.o.id], ['title', this.o.cmdSubmitBtnTitle], - ['style', 'display:none;'], ['css', this.o.cmdSubmitBtnCss], [this.o.attrColIndex, i]); - postBtn.style.display = 'none'; //older versions of IE - if(this.o.cmdSubmitBtnStyle) postBtn.style.cssText += this.o.cmdSubmitBtnStyle; //inline style - postBtn.innerHTML = this.o.cmdSubmitBtnIcon + this.o.cmdSubmitBtnText; - div.appendChild(postBtn); - this.o.Event.Add(postBtn, 'click', function(e){ - o.Event.Stop(e); - x.CloseRowEditor(); - x.SubmitAll(); - }); - if(this.submitBtns.indexOf(postBtn) == -1) this.submitBtns[i] = postBtn; - } - if(this.o.cmdEnabledBtns.indexOf('cancel') != -1){ - var cancelBtn = this.o.CreateElm('button', ['id', 'cancelBtn_' + i + '_' + this.o.id], ['title', this.o.cmdCancelBtnTitle], - ['style', 'display:none;'], ['css', this.o.cmdCancelBtnCss], [this.o.attrColIndex, i]); - cancelBtn.style.display = 'none'; //older versions of IE - if(this.o.cmdCancelBtnStyle) cancelBtn.style.cssText += this.o.cmdCancelBtnStyle; //inline style - cancelBtn.innerHTML = this.o.cmdCancelBtnIcon + this.o.cmdCancelBtnText; - div.appendChild(cancelBtn); - this.o.Event.Add(cancelBtn, 'click', function(e){ o.Event.Stop(e); x.CloseRowEditor(); }); - if(this.cancelBtns.indexOf(cancelBtn) == -1) this.cancelBtns[i] = cancelBtn; - } - cell.innerHTML = ''; - cell.appendChild(div); - } - }, - CreateUploaderEditor: function(colIndex){ - var uploader = new Uploader(this.o, colIndex); - uploader.Init(); - return uploader; - }, - OpenCellEditor: function(cell){ - if(!cell){ return; } - var cellIndex = cell.cellIndex; - var editor = this.o.editors[cellIndex]; - if(this.o.onBeforeOpenEditor){ this.o.onBeforeOpenEditor.call(null, this.o, cell, editor); } - this.activeCellEditor = cell; - this.openCellEditor = cellIndex; - if(!this.o.IsEditorType(cellIndex, this.o.edtTypes.uploader)){ - var data = this.o.GetText(cell); - this.SetCellCache(cell, data); - this.SetEditorValue(cellIndex, data); - if(!this.o.IsEditorType(cellIndex, this.o.edtTypes.custom)){ - cell.innerHTML = ''; - cell.appendChild(editor); - if(this.o.editorModel == 'cell'){ this.SetEditorFocus(cellIndex); } - } else { - if(this.o.openCustomEditor){ this.o.openCustomEditor.call(null, this.o, cell, editor); } - } - } else { editor.Open(cell); } - if(this.o.onAfterOpenEditor){ this.o.onAfterOpenEditor.call(null, this.o, cell, editor); } - }, - OpenRowEditor: function(row){ - if(!row) return; - this.activeRow = row; - for (var i = 0; i < this.o.nbCells; i++){ - if(!this.o.editors[i] || this.o.IsEditorType(i, this.o.edtTypes.bool) - || this.o.IsEditorType(i, this.o.edtTypes.command)){ continue; } - var c = row.cells[i]; - this.OpenCellEditor(c); - if(this.o.Selection.activeCell && this.o.Selection.activeCell.cellIndex === i){ - this.SetEditorFocus(i); - } - } - this.ShowCommandBtns(row.rowIndex, false); - }, - CloseRowEditor: function(){ - if(!this.activeRow) return; - var row = this.activeRow; - for (var i = 0; i < this.o.nbCells; i++){ - if(!this.o.editors[i] || this.o.IsEditorType(i, this.o.edtTypes.bool)) continue; - this.activeCellEditor = row.cells[i]; - this.CloseCellEditor(i); - } - this.ShowCommandBtns(row.rowIndex, true); - if(this.o.autoSave){ this.AutoSubmit(); } - this.activeRow = null; - }, - ShowCommandBtns: function(rowIndex, showIcons){ - if(rowIndex === undefined || showIcons === undefined || this.o.editorModel != 'row') return; - if(!this.edtBtns || !this.addBtns || !this.delBtns || !this.submitBtns || !this.cancelBtns) return; - if(showIcons){ - if(this.edtBtns[rowIndex]) this.edtBtns[rowIndex].style.display = 'inline'; - if(this.addBtns[rowIndex]) this.addBtns[rowIndex].style.display = 'inline'; - if(this.delBtns[rowIndex]) this.delBtns[rowIndex].style.display = 'inline'; - if(this.submitBtns[rowIndex]) this.submitBtns[rowIndex].style.display = 'none'; - if(this.cancelBtns[rowIndex]) this.cancelBtns[rowIndex].style.display = 'none'; - } else { - if(this.edtBtns[rowIndex]) this.edtBtns[rowIndex].style.display = 'none'; - if(this.addBtns[rowIndex]) this.addBtns[rowIndex].style.display = 'none'; - if(this.delBtns[rowIndex]) this.delBtns[rowIndex].style.display = 'none'; - if(this.submitBtns[rowIndex]) this.submitBtns[rowIndex].style.display = 'inline'; - if(this.cancelBtns[rowIndex]) this.cancelBtns[rowIndex].style.display = 'inline'; - } - }, - CloseCellEditor: function(colIndex){ - if(colIndex === undefined || !this.activeCellEditor){ return; } - if(this.o.onBeforeCloseEditor){ this.o.onBeforeCloseEditor.call(null, this.o, this.activeCellEditor, this.o.editors[colIndex]); } - var edtVal = this.GetEditorValue(colIndex), - cache = this.GetCellCache(this.activeCellEditor), - cellVal = cache[1], cellHtml = cache[0], - editor = this.o.editors[colIndex], - val; - if(this.o.IsEditorType(colIndex, this.o.edtTypes.uploader)){ - editor.Close(this.activeCellEditor); - } else { - if(this.o.IsEditorType(colIndex, this.o.edtTypes.multiple)){//multiple selections need to be cleared - for (var j = 0; j < editor.options.length; j++){ - if(editor.options[j].selected){ editor.options[j].selected = false; } - } - } - if(edtVal != cellVal){ - var reg = new RegExp(cellVal.RegexpEscape(), 'g'); - if(reg.test(cellHtml) && cellVal !== ''){ val = cellHtml.replace(reg, edtVal); } //value to be written - else { val = edtVal; } - } - if(this.o.setCellModifiedValue){ this.o.setCellModifiedValue.call(null, this.o, this.activeCellEditor, val); } - else { - try { this.activeCellEditor.removeChild(editor); } catch (e){ if(this.activeCellEditor) this.activeCellEditor.innerHTML = ''; } //for older versions of IE - try { - if(!this.o.validateModifiedValue || - this.o.validateModifiedValue.call(null, this.o, colIndex, cellVal, edtVal, this.activeCellEditor, editor)){ //validation ok - if(this.o.editorAllowEmptyValue[colIndex]){ //empty value is allowed - this.activeCellEditor.innerHTML = (val !== undefined ? val : cellHtml); - } else { this.activeCellEditor.innerHTML = (val !== undefined && val.Trim() !== '' ? val : cellHtml); } - if(edtVal != cellVal){ - //select editor with option value different from option text - if(this.o.IsEditorType(colIndex, this.o.edtTypes.select)){ val = editor.getAttribute(this.o.attrValue); } - if(this.o.editorModel == 'row'){ this.SetModifiedCell(this.activeCellEditor, this.activeCellEditor.innerHTML, cellVal); } - else { this.SetModifiedCell(this.activeCellEditor, val, cellVal); } - } - } else { this.activeCellEditor.innerHTML = cellVal || cellHtml; } //resets cached value - } catch (e){ } //Temp solution for mysterious Chrome bug - } - if(this.o.onAfterCloseEditor){ this.o.onAfterCloseEditor.call(null, this.o, this.activeCellEditor, editor); } - this.RemoveCellCache(this.activeCellEditor); - if(this.o.IsEditorType(colIndex, this.o.edtTypes.custom)){ - if(this.o.closeCustomEditor){ this.o.closeCustomEditor.call(null, this.o, this.activeCellEditor, editor); } - } - } - if(this.o.autoSave && this.o.editorModel === 'cell' && this.o.autoSaveModel === 'cell'){ this.AutoSubmit(); } - this.activeCellEditor = null; - this.openCellEditor = null; - }, - IsEditorOpen: function(colIndex){ return this.openCellEditor == colIndex; }, - IsRowEditorOpen: function(){ return this.activeRow !== null; }, - SetEditorFocus: function(colIndex){ - if(this.o.editors[colIndex] && (this.IsEditorOpen(colIndex) || this.activeRow) && - (!this.o.IsEditorType(colIndex, this.o.edtTypes.custom) && !this.o.IsEditorType(colIndex, this.o.edtTypes.command) - && !this.o.IsEditorType(colIndex, this.o.edtTypes.bool))){ this.o.editors[colIndex].focus(); } - }, - BlurEditor: function(colIndex){ if(this.o.editors[colIndex] && (this.IsEditorOpen(colIndex) || this.activeRow)) this.o.editors[colIndex].blur(); }, - SetModifiedCell: function(cell, val, oldVal){ - if(!cell) return; - var row = cell.parentNode; - if(this.o.Css.Has(row, this.o.newRowClass)){ return; } //modified values of added rows don't need to be treated - var r = {}; r.values = []; r.urlParams = ''; r.modified = []; - var modRow = this.GetModifiedRow(row.rowIndex); - if(!modRow){ - for (var i = 0; i < row.cells.length; i++){ - if(cell.cellIndex == i){ this.o.Css.Add(cell, this.o.modifiedCellCss); } - var cache = this.GetCellCache(row.cells[i]); - var t = cell.cellIndex == i ? val : (this.o.editorModel == 'row' && !this.o.IsEditorType(i, this.o.edtTypes.none) ? cache[1] || this.o.GetText(row.cells[i]) : this.o.GetText(row.cells[i])); - if(this.o.IsEditorType(i, this.o.edtTypes.bool) && this.o.Tag(row.cells[i], 'input').length > 0) - t = this.o.Tag(row.cells[i], 'input')[0].checked; - var paramName = this.o.prfxParam + i; //param name for server-side purposes - r.values.push(t); - r.modified.push(cell.cellIndex == i ? true : false); - r.urlParams += '&' + paramName + '=' + encodeURIComponent(t); //params for submission - } - this.modifiedRows.push([row.rowIndex, r]); - } else { - var obj = modRow[1]; - obj.values[cell.cellIndex] = val; - obj.modified[cell.cellIndex] = true; - var paramName = this.o.prfxParam + cell.cellIndex; - var oldParam = paramName + '=' + encodeURIComponent(oldVal); - var newParam = paramName + '=' + encodeURIComponent(val); - obj.urlParams = obj.urlParams.replace(oldParam, newParam); - } - }, - GetModifiedRow: function(rowIndex){ - if(rowIndex === undefined){ return null; } - for (var i = 0; i < this.modifiedRows.length; i++){ - if(this.modifiedRows[i][0] == rowIndex){ - return this.modifiedRows[i]; - } - } return null; - }, - GetModifiedRows: function(){ return this.modifiedRows; }, - GetAddedRows: function(){ return this.addedRows; }, - SetRowsObject: function(rows, cmd){ - if(!rows) return; - for (var i = 0; i < rows.length; i++){ - var row = rows[i]; - if(!row) continue; - var r = {}; r.values = []; r.urlParams = ''; r.modified = []; - for (var j = 0; j < row.cells.length; j++){ - var cell = row.cells[j]; - var t = this.o.GetText(row.cells[j]); - if(this.o.IsEditorType(j, this.o.edtTypes.bool) && this.o.Tag(cell, 'input').length > 0){ - t = this.o.Tag(cell, 'input')[0].checked; - } else if(this.o.IsEditorType(j, this.o.edtTypes.select)){ t = cell.getAttribute(this.o.attrValue); } - var paramName = this.o.prfxParam + j; //param name for server-side purposes - r.values.push(t); - r.modified.push((cmd == 'delete' ? false : true)); - r.urlParams += '&' + paramName + '=' + encodeURIComponent(t); //params for submission - } - if(cmd == 'delete') this.deletedRows.push([row.rowIndex, r]); - else if(cmd == 'insert') this.addedRows.push([row.rowIndex, r]); - else this.modifiedRows.push([row.rowIndex, r]); - } - }, - GetDeletedRows: function(){ return this.deletedRows; }, - RemoveModifiedRow: function(rowIndex){ - if(rowIndex === undefined) return; - for (var i = 0; i < this.GetModifiedRows().length; i++){ - if(this.GetModifiedRows()[i][0] == rowIndex){ - this.modifiedRows.splice(i, 1); break; - } - } - }, - RemoveModifiedCellMark: function(rowIndex, cellIndexes){ - if(rowIndex === undefined) return; - var row = this.o.table.rows[rowIndex], cells = row.cells; - for (var i = 0; i < cells.length; i++){ - var cell = cells[i]; - if(!cellIndexes || cellIndexes.indexOf(i) != -1) - this.o.Css.Remove(cell, this.o.modifiedCellCss); - } - }, - SetCellCache: function(cell, data, htmlCont){ - if(!cell || data === undefined) return; - var html = htmlCont || htmlCont === '' ? htmlCont : cell.innerHTML; - cell.setAttribute(this.o.attrCont, escape(html)); - cell.setAttribute(this.o.attrData, escape(data)); - }, - GetCellCache: function(cell){ - if(!cell) return []; - var a, b; - if(cell.attributes[this.o.attrCont] !== undefined) a = unescape(cell.getAttribute(this.o.attrCont)); - if(cell.attributes[this.o.attrData] !== undefined) b = unescape(cell.getAttribute(this.o.attrData)); - return [a, b]; - }, - RemoveCellCache: function(cell){ - if(!cell) return; - if(cell.attributes[this.o.attrCont] !== undefined) cell.removeAttribute(this.o.attrCont); - if(cell.attributes[this.o.attrData] !== undefined) cell.removeAttribute(this.o.attrData); - }, - GetEditorValue: function(colIndex){ - var editor = this.o.editors[colIndex]; - var editorType = this.o.editorTypes[colIndex]; - var val = ''; - if(!editor || !editorType) return val; - switch (editorType.LCase()){ - case this.o.edtTypes.input: - case this.o.edtTypes.textarea: - val = editor.value; - break; - case this.o.edtTypes.select: - val = editor.getAttribute(this.o.attrText) || editor.value; - break; - case this.o.edtTypes.multiple: - var sep = !this.o.editorValuesSeparator[colIndex] ? this.o.valuesSeparator : this.o.editorValuesSeparator[colIndex]; - for (var j = 0; j < editor.options.length; j++) - if(editor.options[j].selected) - val = val.concat(editor.options[j].value, sep); - val = val.substring(0, val.length - sep.length); - break; - case this.o.edtTypes.custom: - if(this.o.getCustomEditorValue) val = this.o.getCustomEditorValue.call(null, this.o, editor, colIndex); - break; - } - return val; - }, - SetEditorValue: function(colIndex, val){ - var editor = this.o.editors[colIndex]; - var editorType = this.o.editorTypes[colIndex]; - switch (editorType.LCase()){ - case this.o.edtTypes.input: - case this.o.edtTypes.textarea: - case this.o.edtTypes.select: - editor.value = val; - break; - case this.o.edtTypes.multiple: - for (var j = 0; j < editor.options.length; j++) - if(editor.options[j].value == val) editor.options[j].selected = true; - break; - case this.o.edtTypes.custom: - if(this.o.setCustomEditorValue) this.o.setCustomEditorValue.call(null, this.o, editor, colIndex, val); - break; - } - }, - GetCheckBox: function(cell){ - if(!cell) return null; - var chk = this.o.Tag(cell, 'input')[0]; - if(chk.getAttribute('type').LCase() == 'checkbox') return chk; - else return null; - }, - SetCheckBoxValue: function(e, cell){ - if(!cell) return; - var x = this.o.Editable; - var checkbox = x.GetCheckBox(cell); - if(!checkbox || checkbox.type.LCase() != 'checkbox') return; - if(this.o.Event.GetElement(e) != checkbox){//in case user clicks on cell instead of checkbox - if(checkbox.checked) checkbox.checked = false; - else checkbox.checked = true; - } - var data = !checkbox.checked; - x.SetCellCache(cell, data, ''); - x.SetModifiedCell(cell); - if(x.o.autoSave){ x.SubmitAll(); } //checkbox value set straightaway, prevents treatedRows inconsistency - }, - AddNewRow: function(){ - var row, - rowIdx = this.o.startRow; - - if(this.o.newRowPos === 'bottom'){ - rowIdx = -1; - } - else if(typeof this.o.newRowPos === 'number' && - this.o.newRowPos >= -1){ - rowIdx = this.o.newRowPos; - } - - try{ - row = this.o.table.insertRow(rowIdx); - } catch(e) { - row = this.o.table.insertRow(this.o.startRow); - console.log(e); - } - row.setAttribute('id', this.o.CreateId()); //temp id for new row - this.o.Css.Add(row, this.o.newRowClass); - for (var i = 0; i < this.o.nbCells; i++){ - var cell = row.insertCell(i); - if(this.o.defaultRecord){ cell.innerHTML = this.o.defaultRecord[i]; } - else { cell.innerHTML = this.o.defaultRecordUndefinedValue; } - } - if(this.o.cmdInsertBtnScroll){ row.scrollIntoView(false); } - this.newRows.push(row); - if(this.o.onAddedDomRow){ this.o.onAddedDomRow.call(null, this.o, this.newRows, row); } - }, - SubmitEditedRows: function(){ this.Submit('update'); }, - SubmitAddedRows: function(){ this.SetRowsObject(this.newRows, 'insert'); this.Submit('insert'); }, - SubmitDeletedRows: function(){ - if(this.o.selection){ - if(!this.o.Selection.activeRow && this.o.Selection.selectedRows.length === 0) return; - var rows = (this.o.bulkDelete) ? this.o.Selection.selectedRows : [this.o.Selection.activeRow]; - if(rows.length === 0){ return; } - this.SetRowsObject(rows, 'delete'); - if(confirm(this.o.msgConfirmDelSelectedRows)){ this.Submit('delete'); } - else { this.deletedRows = []; } - } - }, - SubmitAll: function(){ this.submitAll = true; this.SubmitAddedRows(); this.SubmitEditedRows(); }, - AutoSubmit: function(){ - switch(this.o.autoSaveType){ - case 'both': this.SubmitAll(); break; - case 'insert': this.SubmitAddedRows(); break; - case 'update': default: this.SubmitEditedRows(); break; - } - }, - Submit: function(cmd){ - cmd = cmd.LCase(); - var x = this; - var treatedRows, uri, submitMethod, formMethod, params; - var beforeSubmitCallBack, afterSubmitCallBack, onSubmit, onSubmitError; - var checkResponseSanity, processResponse; - switch ((cmd || '')){ - case 'insert': - treatedRows = this.GetAddedRows(); - uri = this.o.insertURI; - submitMethod = this.o.insertSubmitMethod; - formMethod = this.o.insertFormMethod; - params = this.o.insertParams; - beforeSubmitCallBack = this.o.onBeforeInsertSubmit; - afterSubmitCallBack = this.o.onAfterInsertSubmit; - onSubmit = this.o.onInsertSubmit; - onSubmitError = this.o.onInsertError; - checkResponseSanity = this.o.checkInsertResponseSanity; - processResponse = this.o.processInsertResponse; - break; - case 'delete': - treatedRows = this.GetDeletedRows(); - uri = this.o.deleteURI; - submitMethod = this.o.deleteSubmitMethod; - formMethod = this.o.deleteFormMethod; - params = this.o.deleteParams; - beforeSubmitCallBack = this.o.onBeforeDeleteSubmit; - afterSubmitCallBack = this.o.onAfterDeleteSubmit; - onSubmit = this.o.onDeleteSubmit; - onSubmitError = this.o.onDeleteError; - checkResponseSanity = this.o.checkDeleteResponseSanity; - processResponse = this.o.processDeleteResponse; - break; - case 'update': - default: - treatedRows = this.GetModifiedRows(); - uri = this.o.updateURI; - submitMethod = this.o.updateSubmitMethod; - formMethod = this.o.updateFormMethod; - params = this.o.updateParams; - beforeSubmitCallBack = this.o.onBeforeUpdateSubmit; - afterSubmitCallBack = this.o.onAfterUpdateSubmit; - onSubmit = this.o.onUpdateSubmit; - onSubmitError = this.o.onUpdateError; - checkResponseSanity = this.o.checkUpdateResponseSanity; - processResponse = this.o.processUpdateResponse; - break; - } - if(beforeSubmitCallBack){ beforeSubmitCallBack.call(null, this.o, treatedRows); } - if(onSubmit){ onSubmit.call(null, this.o, treatedRows); } - else { - if((!uri || uri === '') && treatedRows.length > 0){ - alert(cmd.toUpperCase() + ': ' + this.o.msgUndefinedSubmitUrl); - treatedRows = []; x.o.savedRowsNb[cmd] = 0; - SubmitComplete(false); - } else { - for (var i = 0; i < treatedRows.length; i++){ - var modArr = treatedRows[i], rowIndex = modArr[0], row = modArr[1]; - if(rowIndex < 0) continue; - var rowValues = row.values; - var urlParams = row.urlParams, paramParts = urlParams.split('&'); - var rowId = this.o.table.rows[rowIndex].getAttribute('id'); - if(params && this.o.IsArray(params)){//params are replaced if defined - for (var j = 0; j < params.length; j++){ - if(params[j] === ''){ continue; } - urlParams = urlParams.replace(paramParts[j + 1].split('=')[0], params[j]); - } - paramParts = urlParams.split('&'); - } - this.o.Css.Add(this.o.table, this.o.activityIndicatorCss); - if(this.o.onServerActivityStart) this.o.onServerActivityStart.call(null, this.o, this.o.table.rows[rowIndex]); - - if(submitMethod === 'script'){//GET method by using script tag inclusion - var prm = (uri.indexOf('?') === -1 ? '?rowId=' : '&rowId=') + rowId + urlParams; - try {//window.open(uri+prm); - this.o.IncludeFile(this.o.prfxScr + rowIndex + '_' + this.o.id, uri + prm, - function(eg, scriptElm){ - eg.savedRowsNb[cmd]++; var rIndex = scriptElm.id.replace(eg.prfxScr, '').replace('_' + eg.id, ''); - eg.Editable.RemoveModifiedCellMark(parseInt(rIndex, 10)); - SubmitComplete(true); - }); - } catch (e){ - this.o.Css.Remove(this.o.table, this.o.activityIndicatorCss); - if(this.o.onServerActivityStop) this.o.onServerActivityStop.call(null, this.o, this.o.table.rows[rowIndex]); - if(this.o.onSubmitError) this.o.onSubmitError.call(null, this.o, e, e.description); - else alert(this.o.msgErrOccur + '\n' + e.description + '\n' + this.o.msgSaveUnsuccess); - } - } - else if(submitMethod !== 'script' && this.o.ajax){ - var xhr = (function(rowIndex, arrIndex, rowId, urlParams) { - var _self = this, - div; - // Submit data with intervals - if(arrIndex===0){ - submitData(rowId, urlParams, rowIndex, arrIndex); - } else { - setTimeout(function() { - submitData(rowId, urlParams, rowIndex, arrIndex); }, - (arrIndex*x.o.formSubmitInterval) - ); - } - - function submitData(rowId, urlParams, rowIndex, arrIndex){ - var prm = 'rowId=' + rowId + '&rIndex=' + rowIndex + urlParams; - - $.ajax({ - url: uri, - type: formMethod, - data: prm - }).done(function(data, status, xhr){ - // Determine response content-type - var dataType = xhr.getResponseHeader('content-type') || 'application/json'; - - if(dataType.indexOf('application/json') !== -1){ - var sane = sanityCheck(data); - if(sane){ - // Process the response if needed - if(processResponse){ - processResponse.call(_self.o, data); - } - - // Ensure id attribute is set for newly created rows, so they can be updated immediately - if(data.result && data.result.id && cmd === 'insert'){ - if(_self.o.table.rows[rowIndex]){ - _self.o.table.rows[rowIndex].setAttribute('id', _self.o.newRowPrefix + data.result.id); - } - } - - release(); - } else { - fail(null, 'Invalid Data', _self.o.msgInvalidData); - } - } else { - div = _self.o.CreateElm('div', ['id', 'xhr_' + rowIndex + '_' + _self.o.id]); - document.body.appendChild(div); - $(div).html(data); - release(); - } - }).always(function(data){ - if(div){ document.body.removeChild(div); } - }).fail(fail); - } - - function sanityCheck(data) { - if(checkResponseSanity){ - return checkResponseSanity.call(_self.o, data); - } - return (data && data.hasOwnProperty('result') && - data.result.hasOwnProperty('success') && - data.result.hasOwnProperty('id')); - } - - function fail(jqXHR, textStatus, errDesc) { - // remove reference from collection of rows to be treated - if(cmd === 'insert'){ - _self.o.Editable.addedRows.splice(arrIndex, 1); - _self.o.Editable.newRows.splice(arrIndex, 1); - } - treatedRows.splice(arrIndex, 1); - _self.o.Css.Remove(_self.o.table, _self.o.activityIndicatorCss); - if(_self.o.onServerActivityStop) _self.o.onServerActivityStop.call(null, _self.o, _self.o.table.rows[rowIndex]); - if(_self.o.onSubmitError) _self.o.onSubmitError.call(null, _self.o, e, e.description); - else alert(_self.o.msgErrOccur + '\n' + errDesc + '\n' + _self.o.msgSaveUnsuccess); - } - - function release(){ - _self.o.savedRowsNb[cmd]++; - _self.o.Editable.RemoveModifiedCellMark(rowIndex); - _self.o.Css.Remove(_self.o.table.rows[rowIndex], _self.o.newRowClass); - SubmitComplete(true); - } - }).call(this, rowIndex, i, rowId, urlParams); - } else {//GET or POST method by using form and iframe elements - if(!this.o.ifrmContainer[cmd]) this.o.ifrmContainer[cmd] = this.o.CreateElm('div', ['id', 'cont_' + this.o.id + cmd], ['style', 'display:none;']); - var iframeId = this.o.prfxIFrm + rowIndex + '_' + this.o.id + cmd; - var iframe; //below for older versions of IE, name attribute dynamically created problem, very ugly solution... - try { var iframe = document.createElement(''); } - catch (e){ var iframe = this.o.CreateElm('iframe', ['id', iframeId], ['name', iframeId], ['src', 'about:blank'], [this.o.attrRowIndex, rowIndex]); } - iframe.style.cssText = 'display:none; width:0; height:0;'; - - var form = this.o.CreateElm( 'form', - ['id', this.o.prfxFrm + rowIndex + '_' + this.o.id + cmd], ['method', formMethod], ['action', uri], - ['target', iframeId], ['accept-charset', 'utf-8'] ); - for (var j = 1; j < paramParts.length; j++){ - var paramName = paramParts[j].split('=')[0]; - var paramValue = paramParts[j].split('=')[1]; - var hiddenField = this.o.CreateElm('input', ['type', 'hidden'], ['name', paramName], ['value', paramValue]); - form.appendChild(hiddenField); - } - var hiddenField = this.o.CreateElm('input', ['type', 'hidden'], ['name', 'rowId'], ['value', rowId]); - form.appendChild(hiddenField); - - document.body.appendChild(this.o.ifrmContainer[cmd]); - this.o.ifrmContainer[cmd].appendChild(iframe); - this.o.ifrmContainer[cmd].appendChild(form); - } - } //for i - - if(treatedRows.length > 0 && this.o.ifrmContainer[cmd]){ - var ifrms = this.o.Tag(this.o.ifrmContainer[cmd], 'iframe'), - frms = this.o.Tag(this.o.ifrmContainer[cmd], 'form'); - for(var j=0; j= x.o.startRow) { - slcRowIndex = curSlcRowIndex-1; - } else { - slcRowIndex = x.o.startRow; - } - } - if(selectedCell){ - curSlcCellIndex = selectedCell.cellIndex; - } - x.o.Selection.ClearSelections(); - var a = []; - for (var k = 0; k < x.o.Editable.deletedRows.length; k++){ - a.push(x.o.Editable.deletedRows[k][0]); - } - a.sort(x.o.Sort.NumDesc); //rows indexes need to be sorted in desc manner for rows deleting operation - for (var k = 0; k < a.length; k++){ - x.o.table.deleteRow(a[k]); - } - if(slcRowIndex !== null){ - x.o.Selection.SelectRowByIndex(slcRowIndex); - } - if(curSlcCellIndex !== null){ - if(selectedRow){ - var cell = selectedRow.cells[curSlcCellIndex]; - x.o.Selection.SelectCell(cell); - } - } - } - x.o.Editable.deletedRows = []; - x.o.Editable.SetCommandEditor(x.o.editorCmdColIndex); - } - else x.o.Editable.modifiedRows = []; - if(x.o.savedRowsNb.update === 0 && x.o.savedRowsNb.insert === 0 && x.o.savedRowsNb['delete'] === 0){ - if(afterSubmitCallBack){ afterSubmitCallBack.call(null, x.o, treatedRows); } - else { // message displayed if autosave false - if(verbose && !x.o.autoSave && (!x.o.Editable.submitAll || - (x.o.Editable.submitAll && cmd === 'update'))){ - alert(x.o.msgSubmitOK); - } - } - x.o.Editable.submitAll = false; - } - if(x.o.onServerActivityStop) x.o.onServerActivityStop.call(null, x.o, x.o.table.rows[rowIndex]); - if(submitMethod === 'form' && !x.o.ajax && x.o.ifrmContainer[cmd]){ - x.o.ifrmContainer[cmd].innerHTML = ''; - } - x.o.Css.Remove(x.o.table, x.o.activityIndicatorCss); - } - } - }, - Edit: function(e){ - var row, cell; - if(e && e.type && e.type.LCase().indexOf('click') !== -1){ - row = this.o.GetRow(e); - cell = this.o.GetCell(e); - } else { - if(!this.o.selection) return; - if(!this.o.Selection.activeRow && !this.o.Selection.activeCell) return; - row = this.o.Selection.activeRow; - cell = this.o.Selection.activeCell; - } - if(!row || row.rowIndex < this.o.startRow) return; - - if(this.o.editorModel === 'cell' && cell){ - var cellIndex = cell.cellIndex; - if(!this.activeCellEditor && this.o.editors[cellIndex]){ - if(this.o.IsEditorType(cellIndex, this.o.edtTypes.bool)){ - this.SetCheckBoxValue(e, cell); - } else { this.OpenCellEditor(cell); } - } - } - if(this.o.editorModel === 'row' && !this.IsRowEditorOpen()){ this.OpenRowEditor(row); } - }, - Event: { - OnInputFocus: function(e){ - var elm = this.o.Event.GetElement(e); - elm.select(); - }, - OnBlur: function(e){ - var elm = this.o.Event.GetElement(e); - var colIndex = elm.getAttribute(this.o.attrColIndex); - if(colIndex === null){ - var cell = this.o.GetElement(e, 'td'); - colIndex = cell.cellIndex; - } - if(this.o.editorModel == 'cell'){ this.CloseCellEditor(colIndex); } - } - } -}; - -Selection.prototype = { - onClickAdded: false, activeRow: null, activeCell: null, selectedRows: [], - Init: function(){ - if(!this.o.selection) return; - this.SetEvents(); - if(this.o.selectRowAtStart){ - this.SelectRowByIndex(this.o.rowIndexAtStart); - if(this.activeRow) this.SelectCell(this.activeRow.cells[0]); - } - if(this.o.onSelectionInit) this.o.onSelectionInit.call(null, this.o); - }, - Set: function(){ - this.o.selection = true; - this.o.keyNav = true; - this.SetEvents(); - }, - Remove: function(){ - this.o.selection = false; - this.o.keyNav = false; - this.RemoveEvents(); - }, - SetEvents: function(){ - if(!this.onClickAdded){ - var x = this; - this.o.Event.Bind(this.o.table, 'click', function(e){ x.OnClick.call(x, e); }); - if(this.o.onValidateRow || this.o.onValidateCell) this.o.Event.Bind(this.o.table, 'dblclick', function(e){ x.OnDblClick.call(x, e); }); - this.onClickAdded = true; - } - if(this.o.keyNav){ this.o.Event.Bind(this.o.StandardBody(), 'keydown', function(e){ x.OnKeyDown.call(x, e); }); } - }, - RemoveEvents: function(){ - if(this.onClickAdded){ - var x = this; - this.o.Event.Unbind(this.o.table, 'click', function(e){ x.OnClick.call(x, e); }); - if(this.o.onValidateRow || this.o.onValidateCell) this.o.Event.Unbind(this.o.table, 'dblclick', function(e){ x.OnDblClick.call(x, e); }); - this.o.Event.Unbind(this.o.StandardBody(), 'keydown', function(e){ x.OnKeyDown.call(x, e); }); - this.onClickAdded = false; - } - }, - GetActiveRow: function(){ return this.activeRow; }, - GetActiveCell: function(){ return this.activeCell; }, - GetSelectedRows: function(){ return this.selectedRows; }, - GetSelectedValues: function(){ - var values = []; - for(var i=0; i 0){ - if(!this.IsRowSelected(row)) this.SelectRow(row); - else this.DeselectRow(row); - } else this.SelectRow(row); - } - else if(this.o.keySelection && (!e.ctrlKey && !e.shiftKey)){ - this.ClearSelections(); - this.SelectRow(row); - } - else if(this.o.keySelection && e.ctrlKey && this.selectedRows.length > 0) - this.SelectRow(row); - else if(this.o.keySelection && e.shiftKey && this.selectedRows.length > 0){ - if(!this.activeRow) return; - var prevRowIndex = this.activeRow.rowIndex; - this.SelectRow(row); - var curRowIndex = this.activeRow.rowIndex; - if(prevRowIndex < curRowIndex){ - for(var i=prevRowIndex+1; icurRowIndex; i--){ - var r = this.o.table.rows[i]; - if(r){ - if(!this.IsRowSelected(r)) this.SelectRow(r); - else this.DeselectRow(r); - } - } - if(!this.IsRowSelected(this.o.table.rows[prevRowIndex-1])) - this.DeselectRow(this.o.table.rows[prevRowIndex]); - } - this.SelectRow(row); - } - else{ this.SelectRow(row); } - this.DeselectCell(this.activeCell); - if(this.IsRowSelected(row)){ this.SelectCell(cell); } - } - - if(this.o.editable){ - if(this.o.editorModel=='cell'){ - var activeCellEditor = this.o.Editable.activeCellEditor; - if(!activeCellEditor && cell && this.o.editors[cell.cellIndex]){ - //Boolean is set if cell clicked even if editor action is dblclick - if(this.o.IsEditorType(cell.cellIndex, this.o.edtTypes.bool) && this.o.openEditorAction==='dblclick'){ - this.o.Editable.SetCheckBoxValue(e, cell); - } - } - //Custom or uploader editor is closed if cell selection changes - if(activeCellEditor && (this.o.IsEditorType(activeCellEditor.cellIndex, this.o.edtTypes.custom) || - this.o.IsEditorType(activeCellEditor.cellIndex, this.o.edtTypes.uploader)) - && (cell && cell.cellIndex!=activeCellEditor.cellIndex || row.rowIndex!=activeCellEditor.parentNode.rowIndex)){ - this.o.Editable.CloseCellEditor(activeCellEditor.cellIndex); - } - } - if(this.o.editorModel=='row'){ - if(row != this.o.Editable.activeRow) this.o.Editable.CloseRowEditor(); - } - } - }, - OnKeyDown: function(e){ - if(!this.activeRow) return; - var t = this.o.GetTableFromElement(this.activeRow); - if(!t || t.nodeName.LCase() != 'table' || t['id'] != et_activeGrid) return; - var keyCode = this.o.Event.GetKey(e); - var maxRowIndex = (this.o.table.rows.length - 1); - var nbCells = (this.o.GetCellsNb() - 1); - var curRowIndex = this.activeRow.rowIndex; - var rowIndex, cellIndex; - - var x = this; - var navigate = function(cmd){ - if(!x.activeRow){ - rowIndex = x.o.startRow; cellIndex = 0; - } else { - var curCellIndex = (x.activeCell ? x.activeCell.cellIndex : 0); - if(x.o.selectionModel == 'single' || (x.o.selectionModel == 'multiple' && !e.shiftKey) || !x.o.keySelection) x.ClearSelections(); - else if(x.o.selectionModel == 'multiple' && e.shiftKey) x.DeselectCell(x.activeCell, e); - cellIndex = curCellIndex; - if(cmd === 'down') rowIndex = (curRowIndex < maxRowIndex) ? curRowIndex + 1 : maxRowIndex; - else if(cmd === 'up') rowIndex = (curRowIndex == x.o.startRow) ? x.o.startRow : curRowIndex - 1; - else if(cmd === 'pgdown') rowIndex = (curRowIndex+x.o.nbRowsPerPage < maxRowIndex) ? curRowIndex + x.o.nbRowsPerPage : maxRowIndex; - else if(cmd === 'pgup') rowIndex = (curRowIndex-x.o.nbRowsPerPage <= x.o.startRow) ? x.o.startRow : curRowIndex - x.o.nbRowsPerPage; - else if(cmd === 'home') rowIndex = x.o.startRow; - else if(cmd === 'end') rowIndex = maxRowIndex; - else if(cmd === 'right'){ - if(x.o.defaultSelection != 'row'){ - rowIndex = curRowIndex; - cellIndex = (curCellIndex+1 > nbCells) ? 0 : curCellIndex+1; - if((curCellIndex+1) > nbCells) rowIndex = (curRowIndex < maxRowIndex) ? curRowIndex + 1 : maxRowIndex; - } else rowIndex = (curRowIndex < maxRowIndex) ? curRowIndex + 1 : maxRowIndex; - } - else if(cmd === 'left'){ - if(x.o.defaultSelection != 'row'){ - rowIndex = curRowIndex; - cellIndex = (curCellIndex-1 < 0) ? nbCells : curCellIndex-1; - if(curCellIndex-1 < 0) rowIndex = (curRowIndex == x.o.startRow) ? x.o.startRow : curRowIndex - 1; - } else rowIndex = (curRowIndex == x.o.startRow) ? x.o.startRow : curRowIndex - 1; - } - } - var row = x.o.table.rows[rowIndex]; - if(x.o.keySelection && e.shiftKey && x.selectedRows.length > 0 && (cmd=='pgdown' || cmd=='pgup' || cmd=='home' || cmd=='end')){ - if(!x.activeRow) return; - if(curRowIndex < rowIndex){ - for(var i=curRowIndex+1; irowIndex; i--){ - var r = x.o.table.rows[i]; - if(r){ - if(!x.IsRowSelected(r)) x.SelectRow(r, e); - else x.DeselectRow(r, e); - } - } - if(!x.IsRowSelected(x.o.table.rows[curRowIndex-1])) - x.DeselectRow(x.o.table.rows[curRowIndex], e); - } - x.SelectRow(row, e); - } else { - if(x.o.keySelection && e.shiftKey && x.IsRowSelected(row)) x.DeselectRow(x.o.table.rows[curRowIndex], e); - x.SelectRow(row, e); - } - - if(x.o.defaultSelection != 'row'){ - var cell = row.cells[cellIndex]; - x.SelectCell(cell, e); - if(x.o.scrollIntoView) cell.scrollIntoView(false); - } - if(x.o.scrollIntoView && x.o.defaultSelection=='row') row.scrollIntoView(false); - if(x.o.autoSave && x.o.autoSaveModel === 'row'){ - if(rowIndex !== curRowIndex){ x.o.Editable.AutoSubmit(); } - } - x.o.Event.Cancel(e); - }; - - var ed = this.o.Editable; - function closeEditor(){ - if(x.o.editable && ed.activeCellEditor && x.o.editorModel=='cell') - ed.CloseCellEditor(ed.activeCellEditor.cellIndex); - - if(x.o.editable && ed.activeRow && x.o.editorModel=='row') - if(ed.activeRow != x.activeRow) ed.CloseRowEditor(); - } - - switch(keyCode){ - case 40: //arrow down - if(!x.o.editable || (x.o.editable && !ed.activeCellEditor && !ed.activeRow)) navigate('down'); - break; - case 38: //arrow up - if(!x.o.editable || (x.o.editable && !ed.activeCellEditor && !ed.activeRow)) navigate('up'); - break; - case 37: //arrow left - if(!x.o.editable || (x.o.editable && !ed.activeCellEditor && !ed.activeRow)) navigate('left'); - break; - case 39: //arrow right - if(!x.o.editable || (x.o.editable && !ed.activeCellEditor) && !ed.activeRow) navigate('right'); - break; - case 34: //pagedown - navigate('pgdown'); closeEditor(); - break; - case 33: //pageup - navigate('pgup'); closeEditor(); - break; - case 36: //home - navigate('home'); closeEditor(); - break; - case 35: //end - navigate('end'); closeEditor(); - break; - case 9: //tab - if(e.shiftKey) navigate('left'); - else navigate('right'); - if(x.o.editorModel == 'row'){ - if(x.activeCell && x.selectionModel!='row') ed.SetEditorFocus(x.activeCell.cellIndex); - if(x.activeRow && ed.activeRow && x.activeRow.rowIndex != ed.activeRow.rowIndex) closeEditor(); - } else{ closeEditor(); } - break; - case 13: //enter - if(!x.o.editable){ - if(!x.o.onValidateRow && !x.o.onValidateCell) navigate('down'); - else{ - if(x.o.onValidateRow && x.o.defaultSelection != 'cell') x.o.onValidateRow.call(null, x.o, x.activeRow); - if(x.o.onValidateCell && x.o.defaultSelection != 'row') x.o.onValidateCell.call(null, x.o, x.activeCell); - } - } else { - if(!ed.activeCellEditor){ ed.Edit.call(ed, e); x.o.Event.Cancel(e); } - else - if(x.o.IsEditorType(ed.activeCellEditor.cellIndex, x.o.edtTypes.input)){ closeEditor(); } - } - break; - case 113: //F2 - case 32: //space bar - if(x.o.editable && (!ed.activeCellEditor)){ ed.Edit.call(ed, e); x.o.Event.Cancel(e); } - break; - case 45: //insert - if(x.o.editable && (!ed.activeCellEditor)){ - ed.AddNewRow(); - ed.SetCommandEditor(x.o.editorCmdColIndex); - x.o.Event.Cancel(e); - } - break; - case 46: //delete - if(x.o.editable && (!ed.activeCellEditor)){ ed.SubmitDeletedRows(); x.o.Event.Cancel(e); } - break; - case 27: //escape - if(x.o.editable && x.o.editorModel == 'cell'){ if(ed.activeCellEditor) closeEditor(); } - if(x.o.editable && x.o.editorModel == 'row') closeEditor(); - break; - default: //key stroke opens editor if edition is enabled - if((x.o.editable && x.o.editableOnKeystroke && - x.o.editorModel == 'cell' && x.o.selectionModel == 'single' && - !ed.activeCellEditor && !ed.activeRow)){ - ed.Edit.call(ed, e); - x.o.Event.Cancel(e); - } - break; - } - if(x.o.editable && x.o.openEditorAction=='click'){ ed.Edit.call(ed, e); } - } -};//Selection - -EditTable.prototype = { - Init: function(){ - this.Css.Add(this.table, this.tableCss+' '+this.unselectableCss); - this.Selection.Init(); - this.Editable.Init(); - }, - GetCellsNb: function(rowIndex){ - var tr = (rowIndex === undefined) ? this.table.rows[this.startRow] : this.table.rows[rowIndex]; - return tr.cells.length; - }, - GetRowsNb: function(){ return this.table.rows.length; }, - GetRow: function(e){ return this.GetElement(e, 'tr'); }, - GetRowByIndex: function(rowIndex){ return this.table.rows[rowIndex]; }, - GetCell: function(e){ return this.GetElement(e, 'td') || this.GetElement(e, 'th'); }, - GetTableFromElement: function(elm){ - if(!elm) return null; - while(elm.parentNode){ - if(elm.nodeName.UCase() === 'TABLE'){ return elm; } - elm = elm.parentNode; - } - return null; - }, - GetElement: function(e, tagName){ - var elm, target = this.Event.GetElement(e); - while(target.parentNode){ - if(target.nodeName.UCase() === tagName.UCase() - && this.IsParentValid(target)){ - elm = target; break; - } - target = target.parentNode; - } - return elm; - }, - IsParentValid: function(elm){ - while(elm.parentNode){ - if(elm.nodeName.UCase() === 'TABLE'){ - if(elm.id == this.id) return true; - else return false; - } - elm = elm.parentNode; - } - return false; - }, - IsSelectable: function(){ return this.selection; }, - IsEditable: function(){ return this.editable; }, - ClearSelections: function(){ this.Selection.ClearSelections(); }, - IsEditorType: function(colIndex, type){ return this.editorTypes[colIndex] === type; }, - IsObj: function(o){ return (o && o.constructor == Object); }, - IsFn: function(fn){ return (fn && fn.constructor == Function); }, - IsArray: function(a){ return (a && a.constructor == Array); }, - Get: function(id){ return document.getElementById(id); }, - Tag: function(o, tagname){ if(!o){ return null; } else { return o.getElementsByTagName(tagname); } }, - GetText: function(n){ - if(!n){ return ''; } - var s = n.textContent || n.innerText || n.innerHTML.replace(/\<[^<>]+>/g, ''); - return s.replace(/^\s+/, '').replace(/\s+$/, '').Trim(); - }, - CreateElm: function(tag){ - if(tag===undefined || tag===null || tag==='') return; - var el = document.createElement(tag); - if(arguments.length>1){ - for(var i=0; i IE onload event works only for scripts, not for stylesheets - if(!isLoaded && - (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')){ - isLoaded = true; - if(typeof callback === 'function'){ - head.removeChild(file); - callback.call(null, x, this); - } - } - }; - head.appendChild(file); - }, - Sort:{ - NumAsc: function(a, b){ return (a-b); }, - NumDesc: function(a, b){ return (b-a); }, - IgnoreCase: function(a, b){ - var x = a.LCase(); - var y = b.LCase(); - return ((x < y) ? -1 : ((x > y) ? 1 : 0)); - } - } -}; - -if(typeof String.prototype.LCase === 'undefined'){ - String.prototype.LCase = function(){ return this.toLowerCase(); }; -} -if(typeof String.prototype.UCase === 'undefined'){ - String.prototype.UCase = function(){ return this.toUpperCase(); }; -} -if(typeof String.prototype.Trim === 'undefined'){ - String.prototype.Trim = function(){//optimised by Anthony Maes - return this.replace(/(^[\s\xA0]*)|([\s\xA0]*$)/g,''); - }; -} -if(typeof String.prototype.RegexpEscape === 'undefined'){ - String.prototype.RegexpEscape = function(){ - var s = this; - function escape(e){ - a = new RegExp('\\'+e,'g'); - s = s.replace(a,'\\'+e); - } - chars = new Array('\\','[','^','$','.','|','?','*','+','(',')','�'); - for(var e=0; e0&&(this.startRow=b[0].rowIndex),arguments.length>1)for(var c=0;cwindow.parent["{1}"].SetUploadSuccess(true); window.parent["{1}"].SetUploadName("{0}");window.parent["{1}"].ShowUpload();',this.showUpload[c]=g.hasOwnProperty("show_upload")&&this.IsFn(g.show_upload)?g.show_upload:null,this.onBeforeOpenUploader[c]=g.hasOwnProperty("on_before_open")&&this.IsFn(g.on_before_open)?g.on_before_open:null,this.onAfterOpenUploader[c]=g.hasOwnProperty("on_after_open")&&this.IsFn(g.on_after_open)?g.on_after_open:null,this.onBeforeCloseUploader[c]=g.hasOwnProperty("on_before_close")&&this.IsFn(g.on_before_close)?g.on_before_close:null,this.onAfterCloseUploader[c]=g.hasOwnProperty("on_after_close")&&this.IsFn(g.on_after_close)?g.on_after_close:null}}-1!=this.editorTypes.indexOf(this.edtTypes.command)&&(this.editorModel="row"),this.inputEditorCss=void 0!==e.input_editor_css?e.input_editor_css:"ezInputEditor",this.textareaEditorCss=void 0!==e.textarea_editor_css?e.textarea_editor_css:"ezTextareaEditor",this.selectEditorCss=void 0!==e.select_editor_css?e.select_editor_css:"ezSelectEditor",this.commandEditorCss=void 0!==e.command_editor_css?e.command_editor_css:"ezCommandEditor",this.modifiedCellCss=void 0!==e.modified_cell_css?e.modified_cell_css:"ezModifiedCell",this.cmdEnabledBtns=this.editorCmdBtns.hasOwnProperty("enable")?this.editorCmdBtns.enable:["update","insert","delete","submit","cancel"],this.cmdUpdateBtn=this.editorCmdBtns.hasOwnProperty("update")?this.editorCmdBtns.update:{},this.cmdInsertBtn=this.editorCmdBtns.hasOwnProperty("insert")?this.editorCmdBtns.insert:{},this.cmdDeleteBtn=this.editorCmdBtns.hasOwnProperty("delete")?this.editorCmdBtns["delete"]:{},this.cmdSubmitBtn=this.editorCmdBtns.hasOwnProperty("submit")?this.editorCmdBtns.submit:{},this.cmdCancelBtn=this.editorCmdBtns.hasOwnProperty("cancel")?this.editorCmdBtns.cancel:{},this.cmdUpdateBtnText=this.cmdUpdateBtn.hasOwnProperty("text")?this.cmdUpdateBtn.text:"",this.cmdInsertBtnText=this.cmdInsertBtn.hasOwnProperty("text")?this.cmdInsertBtn.text:"",this.cmdDeleteBtnText=this.cmdDeleteBtn.hasOwnProperty("text")?this.cmdDeleteBtn.text:"",this.cmdSubmitBtnText=this.cmdSubmitBtn.hasOwnProperty("text")?this.cmdSubmitBtn.text:"Submit",this.cmdCancelBtnText=this.cmdCancelBtn.hasOwnProperty("text")?this.cmdCancelBtn.text:"Cancel",this.cmdUpdateBtnTitle=this.cmdUpdateBtn.hasOwnProperty("title")?this.cmdUpdateBtn.title:"Edit record",this.cmdInsertBtnTitle=this.cmdInsertBtn.hasOwnProperty("title")?this.cmdInsertBtn.title:"Create record",this.cmdDeleteBtnTitle=this.cmdDeleteBtn.hasOwnProperty("title")?this.cmdDeleteBtn.title:"Delete record",this.cmdSubmitBtnTitle=this.cmdSubmitBtn.hasOwnProperty("title")?this.cmdSubmitBtn.title:"Submit record",this.cmdCancelBtnTitle=this.cmdCancelBtn.hasOwnProperty("title")?this.cmdCancelBtn.title:"Cancel",this.cmdUpdateBtnIcon=this.cmdUpdateBtn.hasOwnProperty("icon")?this.cmdUpdateBtn.icon:'',this.cmdInsertBtnIcon=this.cmdInsertBtn.hasOwnProperty("icon")?this.cmdInsertBtn.icon:'',this.cmdDeleteBtnIcon=this.cmdDeleteBtn.hasOwnProperty("icon")?this.cmdDeleteBtn.icon:'',this.cmdSubmitBtnIcon=this.cmdSubmitBtn.hasOwnProperty("icon")?this.cmdSubmitBtn.icon:"",this.cmdCancelBtnIcon=this.cmdCancelBtn.hasOwnProperty("icon")?this.cmdCancelBtn.icon:"",this.cmdUpdateBtnCss=this.cmdUpdateBtn.hasOwnProperty("css")?this.cmdUpdateBtn.css:null,this.cmdInsertBtnCss=this.cmdInsertBtn.hasOwnProperty("css")?this.cmdInsertBtn.css:null,this.cmdDeleteBtnCss=this.cmdDeleteBtn.hasOwnProperty("css")?this.cmdDeleteBtn.css:null,this.cmdSubmitBtnCss=this.cmdSubmitBtn.hasOwnProperty("css")?this.cmdSubmitBtn.css:null,this.cmdCancelBtnCss=this.cmdCancelBtn.hasOwnProperty("css")?this.cmdCancelBtn.css:null,this.cmdUpdateBtnStyle=this.cmdUpdateBtn.hasOwnProperty("style")?this.cmdUpdateBtn.style:null,this.cmdInsertBtnStyle=this.cmdInsertBtn.hasOwnProperty("style")?this.cmdInsertBtn.style:null,this.cmdDeleteBtnStyle=this.cmdDeleteBtn.hasOwnProperty("style")?this.cmdDeleteBtn.style:null,this.cmdSubmitBtnStyle=this.cmdSubmitBtn.hasOwnProperty("style")?this.cmdSubmitBtn.style:null,this.cmdCancelBtnStyle=this.cmdCancelBtn.hasOwnProperty("style")?this.cmdCancelBtn.style:null,this.cmdInsertBtnScroll=this.cmdInsertBtn.hasOwnProperty("scrollIntoView")?this.cmdInsertBtn.scrollIntoView:!1,this.onEditableInit=this.IsFn(e.on_editable_initialized)?e.on_editable_initialized:null,this.onBeforeOpenEditor=this.IsFn(e.on_before_open_editor)?e.on_before_open_editor:null,this.onAfterOpenEditor=this.IsFn(e.on_after_open_editor)?e.on_after_open_editor:null,this.onBeforeCloseEditor=this.IsFn(e.on_before_close_editor)?e.on_before_close_editor:null,this.onAfterCloseEditor=this.IsFn(e.on_after_close_editor)?e.on_after_close_editor:null,this.setCustomEditorValue=this.IsFn(e.set_custom_editor_value)?e.set_custom_editor_value:null,this.getCustomEditorValue=this.IsFn(e.get_custom_editor_value)?e.get_custom_editor_value:null,this.setCellModifiedValue=this.IsFn(e.set_cell_modified_value)?e.set_cell_modified_value:null,this.validateModifiedValue=this.IsFn(e.validate_modified_value)?e.validate_modified_value:null,this.openCustomEditor=this.IsFn(e.open_custom_editor)?e.open_custom_editor:null,this.closeCustomEditor=this.IsFn(e.close_custom_editor)?e.close_custom_editor:null,this.onAddedDomRow=this.IsFn(e.on_added_dom_row)?e.on_added_dom_row:null,this.actions=this.IsObj(e.actions)?e.actions:{},this.updateConfig=void 0!==this.actions.update?this.actions.update:{},this.insertConfig=void 0!==this.actions.insert?this.actions.insert:{},this.deleteConfig=void 0!==this.actions["delete"]?this.actions["delete"]:{},this.updateURI=this.updateConfig.hasOwnProperty("uri")?this.updateConfig.uri:null,this.insertURI=this.insertConfig.hasOwnProperty("uri")?this.insertConfig.uri:null,this.deleteURI=this.deleteConfig.hasOwnProperty("uri")?this.deleteConfig.uri:null,this.updateFormMethod=this.updateConfig.hasOwnProperty("form_method")?this.updateConfig.form_method.LCase():"post",this.insertFormMethod=this.insertConfig.hasOwnProperty("form_method")?this.insertConfig.form_method.LCase():"post",this.deleteFormMethod=this.deleteConfig.hasOwnProperty("form_method")?this.deleteConfig.form_method.LCase():"post",this.updateSubmitMethod=this.updateConfig.hasOwnProperty("submit_method")?this.updateConfig.submit_method.LCase():this.ajax?"ajax":"form",this.insertSubmitMethod=this.insertConfig.hasOwnProperty("submit_method")?this.insertConfig.submit_method.LCase():this.ajax?"ajax":"form",this.deleteSubmitMethod=this.deleteConfig.hasOwnProperty("submit_method")?this.deleteConfig.submit_method.LCase():this.ajax?"ajax":"form",this.bulkDelete=this.deleteConfig.hasOwnProperty("bulk_delete")?this.deleteConfig.bulk_delete:!1,this.defaultRecord=this.insertConfig.hasOwnProperty("default_record")&&this.IsArray(this.insertConfig.default_record)?this.insertConfig.default_record:null,this.updateParams=this.updateConfig.hasOwnProperty("param_names")&&this.IsArray(this.updateConfig.param_names)?this.updateConfig.param_names:null,this.insertParams=this.insertConfig.hasOwnProperty("param_names")&&this.IsArray(this.insertConfig.param_names)?this.insertConfig.param_names:null,this.deleteParams=this.deleteConfig.hasOwnProperty("param_names")&&this.IsArray(this.deleteConfig.param_names)?this.deleteConfig.param_names:null,this.onUpdateSubmit=this.updateConfig.hasOwnProperty("on_update_submit")&&this.IsFn(this.updateConfig.on_update_submit)?this.updateConfig.on_update_submit:null,this.onInsertSubmit=this.insertConfig.hasOwnProperty("on_insert_submit")&&this.IsFn(this.insertConfig.on_insert_submit)?this.insertConfig.on_insert_submit:null,this.onDeleteSubmit=this.deleteConfig.hasOwnProperty("on_delete_submit")&&this.IsFn(this.deleteConfig.on_delete_submit)?this.deleteConfig.on_delete_submit:null,this.onBeforeUpdateSubmit=this.updateConfig.hasOwnProperty("on_before_submit")&&this.IsFn(this.updateConfig.on_before_submit)?this.updateConfig.on_before_submit:null,this.onBeforeInsertSubmit=this.insertConfig.hasOwnProperty("on_before_submit")&&this.IsFn(this.insertConfig.on_before_submit)?this.insertConfig.on_before_submit:null,this.onBeforeDeleteSubmit=this.deleteConfig.hasOwnProperty("on_before_submit")&&this.IsFn(this.deleteConfig.on_before_submit)?this.deleteConfig.on_before_submit:null,this.onAfterUpdateSubmit=this.updateConfig.hasOwnProperty("on_after_submit")&&this.IsFn(this.updateConfig.on_after_submit)?this.updateConfig.on_after_submit:null,this.onAfterInsertSubmit=this.insertConfig.hasOwnProperty("on_after_submit")&&this.IsFn(this.insertConfig.on_after_submit)?this.insertConfig.on_after_submit:null,this.onAfterDeleteSubmit=this.deleteConfig.hasOwnProperty("on_after_submit")&&this.IsFn(this.deleteConfig.on_after_submit)?this.deleteConfig.on_after_submit:null,this.onUpdateError=this.updateConfig.hasOwnProperty("on_submit_error")&&this.IsFn(this.updateConfig.on_submit_error)?this.updateConfig.on_submit_error:null,this.onInsertError=this.insertConfig.hasOwnProperty("on_submit_error")&&this.IsFn(this.insertConfig.on_submit_error)?this.insertConfig.on_submit_error:null,this.onDeleteError=this.deleteConfig.hasOwnProperty("on_submit_error")&&this.IsFn(this.deleteConfig.on_submit_error)?this.deleteConfig.on_submit_error:null,this.checkUpdateResponseSanity=this.updateConfig.hasOwnProperty("check_response_sanity")&&this.IsFn(this.updateConfig.check_response_sanity)?this.updateConfig.check_response_sanity:null,this.checkInsertResponseSanity=this.insertConfig.hasOwnProperty("check_response_sanity")&&this.IsFn(this.insertConfig.check_response_sanity)?this.insertConfig.check_response_sanity:null,this.checkDeleteResponseSanity=this.deleteConfig.hasOwnProperty("check_response_sanity")&&this.IsFn(this.deleteConfig.check_response_sanity)?this.deleteConfig.check_response_sanity:null,this.processUpdateResponse=this.updateConfig.hasOwnProperty("process_response")&&this.IsFn(this.updateConfig.process_response)?this.updateConfig.process_response:null,this.processInsertResponse=this.insertConfig.hasOwnProperty("process_response")&&this.IsFn(this.insertConfig.process_response)?this.insertConfig.process_response:null,this.processDeleteResponse=this.deleteConfig.hasOwnProperty("process_response")&&this.IsFn(this.deleteConfig.process_response)?this.deleteConfig.process_response:null,this.msgSubmitOK=void 0!==e.msg_submit_ok?e.msg_submit_ok:"Changes were successfully submitted to server!",this.msgConfirmDelSelectedRows=void 0!==e.msg_confirm_delete_selected_rows?e.msg_confirm_delete_selected_rows:"Do you want to delete the selected row(s)?",this.msgErrOccur=void 0!==e.msg_error_occured?e.msg_error_occured:"An error occured!",this.msgSaveUnsuccess=void 0!==e.msg_submit_unsuccessful?e.msg_submit_unsuccessful:"Changes could not be saved!",this.msgUndefinedSubmitUrl=void 0!==e.undefined_submit_url?e.undefined_submit_url:"Changes could not be saved! Endpoint URL is not defined",this.msgNewRowNoUploader=void 0!==e.msg_new_row_no_uploader?e.msg_new_row_no_uploader:"Please save the newly added rows before using the Uploader.",this.msgInvalidData=void 0!==e.msg_invalid_data?e.msg_invalid_data:"Returned data is invalid.",this.ifrmContainer={},this.valuesSeparator=", ",this.defaultRecordUndefinedValue="...",this.newRowClass="ezNewRow",this.recordKeyValue="new",this.attrValue="data-ez-slc-value",this.attrText="data-ez-slc-text",this.attrCont="data-ez-html",this.attrData="data-ez-data",this.attrUplname="data-ez-uplname",this.attrColIndex="data-ez-col-index",this.attrRowIndex="data-ez-row-index",this.savedRowsNb={insert:0,update:0,"delete":0},this.prfxEdt="edt_",this.prfxIFrm="iframe_",this.prfxFrm="form_",this.prfxScr="scr_",this.prfxParam="col_",this.prfxUplCont="upl_",this.prfxUplForm="upl_form_",this.prfxUplIframe="upl_ifrm_",this.prfxUplInfo="upl_info_",this.prfxUplOutput="upl_output_",this.prfxUplBtn="upl_btn_",this.prfxUplBtnClose="upl_btn_close_",this.prfxUplImgDisplay="upl_img_display_",this.prfxUplWinRef="et_upl_",this.uplFileInp="UPL_FILE",this.uplKeyInput="RECORD_KEY",this.uplFldPath="IMAGES_FOLDER_PATH",this.uplSqlFieldName="SQL_FIELD",this.uplFileSize="MAX_FILE_SIZE",this.uplValidExts="VALID_EXTENSIONS",this.uplJsCode="JS_CODE",this.Editable=new Editable(this),this.Selection=new Selection(this)}},Editable=function(a){this.o=a},Selection=function(a){this.o=a},Uploader=function(a,b){this.o=a,this.colIndex=b,window[this.o.prfxUplWinRef+b+this.o.id]=this};Uploader.prototype={divUpl:null,formUpl:null,fileUpl:null,hiddenFileSize:null,hiddenFolderPath:null,hiddenValidExt:null,hiddenKey:null,ifrmUpl:null,divUplInfo:null,divUplOutput:null,divUplBtnsCont:null,divUplBtn:null,divUplBtnClose:null,divUplDisplay:null,initialValue:null,isUploadSuccessful:!1,Init:function(){this.o.hasUploader&&this.SetUploader()},SetUploader:function(){this.divUpl=this.o.CreateElm("div",["id",this.o.prfxUplCont+this.colIndex+this.o.id],["style","display:none; z-index:10001;"],["class",this.o.uplCss[this.colIndex]]),this.formUpl=this.o.CreateElm("form",["id",this.o.prfxUplForm+this.colIndex+this.o.id],["name",this.o.prfxUplForm+this.colIndex+this.o.id],["method","POST"],["action",this.o.uplURI[this.colIndex]],["target",this.o.prfxUplIframe+this.colIndex+this.o.id],["enctype","multipart/form-data"]),this.fileUpl=this.o.CreateElm("input",["id",this.o.uplFileInp],["name",this.o.uplFileInp],["type","file"]),this.hiddenFileSize=this.o.CreateElm("input",["name",this.o.uplFileSize],["type","hidden"],["value",this.o.uplMaxFileSize[this.colIndex]]),this.hiddenFolderPath=this.o.CreateElm("input",["name",this.o.uplFldPath],["type","hidden"],["value",this.o.uplPath[this.colIndex]]),this.hiddenValidExt=this.o.CreateElm("input",["name",this.o.uplValidExts],["type","hidden"],["value",this.o.uplValidExt[this.colIndex]]),this.hiddenKey=this.o.CreateElm("input",["name",this.o.uplKeyInput],["type","hidden"],["value",this.o.recordKeyValue]),this.hiddenSqlField=this.o.CreateElm("input",["name",this.o.uplSqlFieldName],["type","hidden"],["value",this.o.uplSqlField[this.colIndex]]),this.hiddenUplWinRef=this.o.CreateElm("input",["name",this.o.uplJsCode],["type","hidden"],["value",this.o.uplJsSuccess[this.colIndex]]),this.ifrmUpl=this.o.CreateElm("iframe",["id",this.o.prfxUplIframe+this.colIndex+this.o.id],["name",this.o.prfxUplIframe+this.colIndex+this.o.id],["style","display:none; left:-10001;"]),this.divUplInfo=this.o.CreateElm("div",["id",this.o.prfxUplInfo+this.colIndex+this.o.id]),this.divUplOutput=this.o.CreateElm("div",["id",this.o.prfxUplOutput+this.colIndex+this.o.id],["class",this.o.uplOutputCss[this.colIndex]]),this.divUplBtnsCont=this.o.CreateElm("div",["style","text-align:right"]),this.divUplBtn=this.o.CreateElm("button",["id",this.o.prfxUplBtn+this.colIndex+this.o.id],["style","display:none;"]),this.divUplBtnClose=this.o.CreateElm("button",["id",this.o.prfxUplBtnClose+this.colIndex+this.o.id]),this.divUplDisplay=this.o.CreateElm("div",["id",this.o.prfxUplImgDisplay+this.colIndex+this.o.id],["class",this.o.uplDisplayCss[this.colIndex]]),this.o.Css.Has(this.divUpl,this.o.uplCss[this.colIndex])||(this.o.Css.Add(this.divUpl,this.o.uplCss[this.colIndex]),this.o.Css.Add(this.divUplOutput,this.o.uplOutputCss[this.colIndex]),this.o.Css.Add(this.divUplDisplay,this.o.uplDisplayCss[this.colIndex]),this.divUpl.style.cssText="display:none; z-index:10001;",this.divUplBtnsCont.style.cssText="text-align:right",this.divUplBtn.style.cssText="display:none;",this.formUpl=document.createElement('
'),this.ifrmUpl=document.createElement('')),this.divUplInfo.innerHTML=parseInt(this.o.uplMaxFileSize[this.colIndex]/1024,10)+"Kb max ("+this.o.uplValidExt[this.colIndex].toString()+")",this.divUplBtn.appendChild(this.o.CreateText("Upload")),this.divUplBtnClose.appendChild(this.o.CreateText("Close")),this.divUplBtnsCont.appendChild(this.divUplBtn),this.divUplBtnsCont.appendChild(this.divUplBtnClose),this.formUpl.appendChild(this.fileUpl),this.formUpl.appendChild(this.hiddenFileSize),this.formUpl.appendChild(this.hiddenFolderPath),this.formUpl.appendChild(this.hiddenUplWinRef),this.formUpl.appendChild(this.hiddenValidExt),this.formUpl.appendChild(this.hiddenKey),this.formUpl.appendChild(this.hiddenSqlField),this.divUpl.appendChild(this.formUpl),this.divUpl.appendChild(this.ifrmUpl),this.divUpl.appendChild(this.divUplInfo),this.divUpl.appendChild(this.divUplOutput),this.divUpl.appendChild(this.divUplBtnsCont),this.divUpl.appendChild(this.divUplDisplay),this.o.table.parentNode.insertBefore(this.divUpl,this.o.table);var a=this;this.ifrmUpl.onload=this.ifrmUpl.onreadystatechange=function(){if(!this.readyState||"loaded"==this.readyState||"complete"==this.readyState)try{var b=this.contentDocument||this.contentWindow.document;"about:blank"!=b.location.href&&(a.Output(b.body.innerHTML),a.iframe.src="about:blank",a.HideUploadButton())}catch(c){}},this.o.Event.Add(this.fileUpl,"click",function(){a.OnUplClick()}),this.o.Event.Add(this.divUplBtn,"click",function(){a.Upload()}),this.o.Event.Add(this.divUplBtnClose,"click",function(){a.Close(a.o.Selection.GetActiveRow().cells[a.colIndex])});var b=this.o.uplJsSuccess[this.colIndex].replace(/\{1\}/g,this.o.prfxUplWinRef+this.colIndex+this.o.id);this.hiddenUplWinRef.value=b},GetValue:function(){return this.fileUpl.value},HasValueChanged:function(){return this.initialValue!=this.GetValue()},OnUplClick:function(){this.ShowUploadButton()},Upload:function(){this.ShowLoader(),this.formUpl.submit()},SetRecordKey:function(a){this.hiddenKey.value=a},GetRecordKey:function(){return this.hiddenKey.value},ShowUploadButton:function(){this.divUplBtn.style.display="inline"},HideUploadButton:function(){this.divUplBtn.style.display="none"},ShowUploadContainer:function(){this.divUplDisplay.style.display="block"},HideUploadContainer:function(){this.divUplDisplay.style.display="none"},ShowUpload:function(){if(this.o.uplShowUpload[this.colIndex]){var a=this.o.Selection.GetActiveRow();if(this.o.showUpload[this.colIndex])return this.ShowUploadContainer(),void this.o.showUpload[this.colIndex].call(this,this.o,this.divUplDisplay,this.GetUploadName(),this.o.uplPath[this.colIndex]);if(a){var b=this.GetUploadName();b?(this.divUplDisplay.innerHTML=this.o.uplShowLink[this.colIndex]?this.GetUploadLinkHtml():''+b+'',this.ShowUploadContainer(),this.divUpl.scrollIntoView(!1)):this.ClearUpload()}}},ClearUpload:function(){this.divUplDisplay.innerHTML="",this.HideUploadContainer()},GetUploadName:function(){var a=this.o.Selection.GetActiveRow().cells[this.colIndex];return a?a.getAttribute(this.o.attrUplname):null},SetUploadName:function(a){var b=this.o.Selection.GetActiveRow().cells[this.colIndex];b&&b.setAttribute(this.o.attrUplname,a)},GetUploadLinkHtml:function(){var a=this.GetUploadName();return''+a.replace(this.GetRecordKey()+"_","")+""},Open:function(a){if(a){if(this.o.Css.Has(a.parentNode,this.o.newRowClass)||!a.parentNode.getAttribute("id"))return void alert(this.o.msgNewRowNoUploader);a.appendChild(this.divUpl),this.o.onBeforeOpenUploader[this.colIndex]&&this.o.onBeforeOpenUploader[this.colIndex].call(this,this.o,this.divUpl,a);var b=this.o.uplRecordIdColIndex[this.colIndex]?this.o.Selection.GetActiveRow()[this.o.uplRecordIdColIndex[this.colIndex]]:this.o.Selection.GetActiveRow().getAttribute("id").replace(this.o.newRowPrefix,"");""!==b&&(this.divUpl.style.display="",this.SetRecordKey(b),this.initialValue=this.GetValue(),this.SetUploadSuccess(!1),this.ShowUpload()),this.o.onAfterOpenUploader[this.colIndex]&&this.o.onAfterOpenUploader[this.colIndex].call(this,this.o,this.divUpl,a)}},Close:function(a){if("none"!=this.divUpl.style.display){if(this.o.onBeforeCloseUploader[this.colIndex]&&this.o.onBeforeCloseUploader[this.colIndex].call(this,this.o,this.divUpl,a),a&&this.IsUploadSuccessful())if(this.o.uplShowLink[this.colIndex]){var b=this.o.CreateElm("div");b.innerHTML=this.divUplDisplay.innerHTML,a.appendChild(b)}else{var c=this.o.Tag(a,"img")[0];c&&(c.src=this.o.uplOkImg[this.colIndex])}this.Output(""),this.SetRecordKey(""),this.ClearUpload(),this.HideUploadButton(),this.divUpl.style.display="none",this.o.StandardBody().appendChild(this.divUpl),this.o.onAfterCloseUploader[this.colIndex]&&this.o.onAfterCloseUploader[this.colIndex].call(this,this.o,this.divUpl,a)}},Output:function(a){this.divUplOutput.innerHTML=a},SetUploadSuccess:function(a){this.isUploadSuccessful=a},IsUploadSuccessful:function(){return this.isUploadSuccessful},ShowLoader:function(){this.Output('Please wait...')},HideLoader:function(){this.Output("")}},Editable.prototype={onEditAdded:!1,activeCellEditor:null,openCellEditor:null,activeRow:null,modifiedRows:[],newRows:[],addedRows:[],deletedRows:[],Init:function(){this.o.editable&&(this.SetEvents(),this.SetCellsEditor(),this.o.onEditableInit&&this.o.onEditableInit.call(null,this.o))},Set:function(){this.o.editable=!0,this.SetEvents()},Remove:function(){this.o.editable=!1,this.RemoveEvents()},SetEvents:function(){if(!this.onEditAdded){var a=this;this.o.Event.Bind(this.o.table,this.o.openEditorAction,function(b){a.Edit.call(a,b)}),this.onEditAdded=!0}},RemoveEvents:function(){if(this.onEditAdded){var a=this;this.o.Event.Unbind(this.o.table,this.o.openEditorAction,function(b){a.Edit.call(a,b)}),this.onEditAdded=!1}},SetCellsEditor:function(){for(var a=0;a0&&(m=this.o.Tag(d.cells[k],"input")[0].checked);var h=this.o.prfxParam+k;e.values.push(m),e.modified.push(a.cellIndex==k?!0:!1),e.urlParams+="&"+h+"="+encodeURIComponent(m)}this.modifiedRows.push([d.rowIndex,e])}}}},GetModifiedRow:function(a){if(void 0===a)return null;for(var b=0;b0?h=this.o.Tag(g,"input")[0].checked:this.o.IsEditorType(f,this.o.edtTypes.select)&&(h=g.getAttribute(this.o.attrValue));var i=this.o.prfxParam+f;e.values.push(h),e.modified.push("delete"==b?!1:!0),e.urlParams+="&"+i+"="+encodeURIComponent(h)}"delete"==b?this.deletedRows.push([d.rowIndex,e]):"insert"==b?this.addedRows.push([d.rowIndex,e]):this.modifiedRows.push([d.rowIndex,e])}}},GetDeletedRows:function(){return this.deletedRows},RemoveModifiedRow:function(a){if(void 0!==a)for(var b=0;b=-1&&(b=this.o.newRowPos);try{a=this.o.table.insertRow(b)}catch(c){a=this.o.table.insertRow(this.o.startRow),console.log(c)}a.setAttribute("id",this.o.CreateId()),this.o.Css.Add(a,this.o.newRowClass);for(var d=0;d=n.o.startRow?h-1:n.o.startRow),g&&(j=g.cellIndex),n.o.Selection.ClearSelections();for(var l=[],m=0;m0)alert(a.toUpperCase()+": "+this.o.msgUndefinedSubmitUrl),c=[],n.o.savedRowsNb[a]=0,b(!1);else{for(var o=0;oq)){var s=(r.values,r.urlParams),t=s.split("&"),u=this.o.table.rows[q].getAttribute("id");if(g&&this.o.IsArray(g)){for(var v=0;v')}catch(x){var y=this.o.CreateElm("iframe",["id",z],["name",z],["src","about:blank"],[this.o.attrRowIndex,q])}y.style.cssText="display:none; width:0; height:0;";for(var A=this.o.CreateElm("form",["id",this.o.prfxFrm+q+"_"+this.o.id+a],["method",f],["action",d],["target",z],["accept-charset","utf-8"]),v=1;v0&&this.o.ifrmContainer[a])for(var E=this.o.Tag(this.o.ifrmContainer[a],"iframe"),F=this.o.Tag(this.o.ifrmContainer[a],"form"),v=0;v0)this.SelectRow(b);else if(this.o.keySelection&&a.shiftKey&&this.selectedRows.length>0){if(!this.activeRow)return;var d=this.activeRow.rowIndex;this.SelectRow(b);var e=this.activeRow.rowIndex;if(e>d){for(var f=d+1;e>f;f++){var g=this.o.table.rows[f];g&&(this.IsRowSelected(g)?this.DeselectRow(g):this.SelectRow(g))}this.IsRowSelected(this.o.table.rows[d+1])||this.DeselectRow(this.o.table.rows[d])}else{for(var f=d-1;f>e;f--){var g=this.o.table.rows[f];g&&(this.IsRowSelected(g)?this.DeselectRow(g):this.SelectRow(g))}this.IsRowSelected(this.o.table.rows[d-1])||this.DeselectRow(this.o.table.rows[d])}this.SelectRow(b)}else this.SelectRow(b);else this.ClearSelections(),this.SelectRow(b);else this.selectedRows.length>0?this.IsRowSelected(b)?this.DeselectRow(b):this.SelectRow(b):this.SelectRow(b);this.DeselectCell(this.activeCell),this.IsRowSelected(b)&&this.SelectCell(c)}if(this.o.editable){if("cell"==this.o.editorModel){var h=this.o.Editable.activeCellEditor;!h&&c&&this.o.editors[c.cellIndex]&&this.o.IsEditorType(c.cellIndex,this.o.edtTypes.bool)&&"dblclick"===this.o.openEditorAction&&this.o.Editable.SetCheckBoxValue(a,c),h&&(this.o.IsEditorType(h.cellIndex,this.o.edtTypes.custom)||this.o.IsEditorType(h.cellIndex,this.o.edtTypes.uploader))&&(c&&c.cellIndex!=h.cellIndex||b.rowIndex!=h.parentNode.rowIndex)&&this.o.Editable.CloseCellEditor(h.cellIndex)}"row"==this.o.editorModel&&b!=this.o.Editable.activeRow&&this.o.Editable.CloseRowEditor()}}},OnKeyDown:function(a){function b(){j.o.editable&&l.activeCellEditor&&"cell"==j.o.editorModel&&l.CloseCellEditor(l.activeCellEditor.cellIndex),j.o.editable&&l.activeRow&&"row"==j.o.editorModel&&l.activeRow!=j.activeRow&&l.CloseRowEditor()}if(this.activeRow){var c=this.o.GetTableFromElement(this.activeRow);if(c&&"table"==c.nodeName.LCase()&&c.id==et_activeGrid){var d,e,f=this.o.Event.GetKey(a),g=this.o.table.rows.length-1,h=this.o.GetCellsNb()-1,i=this.activeRow.rowIndex,j=this,k=function(b){if(j.activeRow){var c=j.activeCell?j.activeCell.cellIndex:0;"single"==j.o.selectionModel||"multiple"==j.o.selectionModel&&!a.shiftKey||!j.o.keySelection?j.ClearSelections():"multiple"==j.o.selectionModel&&a.shiftKey&&j.DeselectCell(j.activeCell,a),e=c,"down"===b?d=g>i?i+1:g:"up"===b?d=i==j.o.startRow?j.o.startRow:i-1:"pgdown"===b?d=i+j.o.nbRowsPerPageh?0:c+1,c+1>h&&(d=g>i?i+1:g)):d=g>i?i+1:g:"left"===b&&("row"!=j.o.defaultSelection?(d=i,e=0>c-1?h:c-1,0>c-1&&(d=i==j.o.startRow?j.o.startRow:i-1)):d=i==j.o.startRow?j.o.startRow:i-1)}else d=j.o.startRow,e=0;var f=j.o.table.rows[d];if(j.o.keySelection&&a.shiftKey&&j.selectedRows.length>0&&("pgdown"==b||"pgup"==b||"home"==b||"end"==b)){if(!j.activeRow)return;if(d>i){for(var k=i+1;d>k;k++){var l=j.o.table.rows[k];l&&(j.IsRowSelected(l)?j.DeselectRow(l,a):j.SelectRow(l,a))}j.IsRowSelected(j.o.table.rows[i+1])||j.DeselectRow(j.o.table.rows[i],a)}else{for(var k=i-1;k>d;k--){var l=j.o.table.rows[k];l&&(j.IsRowSelected(l)?j.DeselectRow(l,a):j.SelectRow(l,a))}j.IsRowSelected(j.o.table.rows[i-1])||j.DeselectRow(j.o.table.rows[i],a)}j.SelectRow(f,a)}else j.o.keySelection&&a.shiftKey&&j.IsRowSelected(f)&&j.DeselectRow(j.o.table.rows[i],a),j.SelectRow(f,a);if("row"!=j.o.defaultSelection){var m=f.cells[e];j.SelectCell(m,a),j.o.scrollIntoView&&m.scrollIntoView(!1)}j.o.scrollIntoView&&"row"==j.o.defaultSelection&&f.scrollIntoView(!1),j.o.autoSave&&"row"===j.o.autoSaveModel&&d!==i&&j.o.Editable.AutoSubmit(),j.o.Event.Cancel(a)},l=this.o.Editable;switch(f){case 40:(!j.o.editable||j.o.editable&&!l.activeCellEditor&&!l.activeRow)&&k("down");break;case 38:(!j.o.editable||j.o.editable&&!l.activeCellEditor&&!l.activeRow)&&k("up");break;case 37:(!j.o.editable||j.o.editable&&!l.activeCellEditor&&!l.activeRow)&&k("left");break;case 39:(!j.o.editable||j.o.editable&&!l.activeCellEditor&&!l.activeRow)&&k("right");break;case 34:k("pgdown"),b();break;case 33:k("pgup"),b();break;case 36:k("home"),b();break;case 35:k("end"),b();break;case 9:k(a.shiftKey?"left":"right"),"row"==j.o.editorModel?(j.activeCell&&"row"!=j.selectionModel&&l.SetEditorFocus(j.activeCell.cellIndex),j.activeRow&&l.activeRow&&j.activeRow.rowIndex!=l.activeRow.rowIndex&&b()):b();break;case 13:j.o.editable?l.activeCellEditor?j.o.IsEditorType(l.activeCellEditor.cellIndex,j.o.edtTypes.input)&&b():(l.Edit.call(l,a),j.o.Event.Cancel(a)):j.o.onValidateRow||j.o.onValidateCell?(j.o.onValidateRow&&"cell"!=j.o.defaultSelection&&j.o.onValidateRow.call(null,j.o,j.activeRow),j.o.onValidateCell&&"row"!=j.o.defaultSelection&&j.o.onValidateCell.call(null,j.o,j.activeCell)):k("down");break;case 113:case 32:j.o.editable&&!l.activeCellEditor&&(l.Edit.call(l,a),j.o.Event.Cancel(a));break;case 45:j.o.editable&&!l.activeCellEditor&&(l.AddNewRow(),l.SetCommandEditor(j.o.editorCmdColIndex),j.o.Event.Cancel(a));break;case 46:j.o.editable&&!l.activeCellEditor&&(l.SubmitDeletedRows(),j.o.Event.Cancel(a));break;case 27:j.o.editable&&"cell"==j.o.editorModel&&l.activeCellEditor&&b(),j.o.editable&&"row"==j.o.editorModel&&b();break;default:j.o.editable&&j.o.editableOnKeystroke&&"cell"==j.o.editorModel&&"single"==j.o.selectionModel&&!l.activeCellEditor&&!l.activeRow&&(l.Edit.call(l,a),j.o.Event.Cancel(a)) -}j.o.editable&&"click"==j.o.openEditorAction&&l.Edit.call(l,a)}}}},EditTable.prototype={Init:function(){this.Css.Add(this.table,this.tableCss+" "+this.unselectableCss),this.Selection.Init(),this.Editable.Init()},GetCellsNb:function(a){var b=void 0===a?this.table.rows[this.startRow]:this.table.rows[a];return b.cells.length},GetRowsNb:function(){return this.table.rows.length},GetRow:function(a){return this.GetElement(a,"tr")},GetRowByIndex:function(a){return this.table.rows[a]},GetCell:function(a){return this.GetElement(a,"td")||this.GetElement(a,"th")},GetTableFromElement:function(a){if(!a)return null;for(;a.parentNode;){if("TABLE"===a.nodeName.UCase())return a;a=a.parentNode}return null},GetElement:function(a,b){for(var c,d=this.Event.GetElement(a);d.parentNode;){if(d.nodeName.UCase()===b.UCase()&&this.IsParentValid(d)){c=d;break}d=d.parentNode}return c},IsParentValid:function(a){for(;a.parentNode;){if("TABLE"===a.nodeName.UCase())return a.id==this.id?!0:!1;a=a.parentNode}return!1},IsSelectable:function(){return this.selection},IsEditable:function(){return this.editable},ClearSelections:function(){this.Selection.ClearSelections()},IsEditorType:function(a,b){return this.editorTypes[a]===b},IsObj:function(a){return a&&a.constructor==Object},IsFn:function(a){return a&&a.constructor==Function},IsArray:function(a){return a&&a.constructor==Array},Get:function(a){return document.getElementById(a)},Tag:function(a,b){return a?a.getElementsByTagName(b):null},GetText:function(a){if(!a)return"";var b=a.textContent||a.innerText||a.innerHTML.replace(/\<[^<>]+>/g,"");return b.replace(/^\s+/,"").replace(/\s+$/,"").Trim()},CreateElm:function(a){if(void 0!==a&&null!==a&&""!==a){var b=document.createElement(a);if(arguments.length>1)for(var c=0;cc?-1:c>d?1:0}}},"undefined"==typeof String.prototype.LCase&&(String.prototype.LCase=function(){return this.toLowerCase()}),"undefined"==typeof String.prototype.UCase&&(String.prototype.UCase=function(){return this.toUpperCase()}),"undefined"==typeof String.prototype.Trim&&(String.prototype.Trim=function(){return this.replace(/(^[\s\xA0]*)|([\s\xA0]*$)/g,"")}),"undefined"==typeof String.prototype.RegexpEscape&&(String.prototype.RegexpEscape=function(){function b(b){a=new RegExp("\\"+b,"g"),c=c.replace(a,"\\"+b)}var c=this;chars=new Array("\\","[","^","$",".","|","?","*","+","(",")","�");for(var d=0;dc;c++)if(this[c]===a)return c;return-1}); \ No newline at end of file diff --git a/libs/ezEditTable/themes/bg_mod_cell.png b/libs/ezEditTable/themes/bg_mod_cell.png deleted file mode 100644 index 6ab2c15fcb42d9aa420da8079443e359d293f0dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^tRT$93?x4=o+|@V%*9TgAsieWw;%dH0CIT(d_r9R z|Nn11lL3O*S8`VX#aT*%{DK+I-2HE~DK-(v=PdAuEM{Qf76M_$OLy!300qTLTq8=H zi&7IyGV}8kLNaqx84OJI4b1fo4Nhntv+Q|j42xu7BaPR3Mn~MJWyz8U}WKvuxLVPkM-ButH#9I< F0{~gSY2E+; diff --git a/libs/ezEditTable/themes/icn_add.gif b/libs/ezEditTable/themes/icn_add.gif deleted file mode 100644 index 77f6dcd425f52153439de6f23cf27ab1736b2569..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 398 zcmV;90df9ENk%w1VGsZi0M!5h|NsB}|NZ;^`uG3#@ci!c`||Gk?(p>T>GA2~@#E$0 z=i2Vt-|OJg>(bWc*xKXW*5cR8+0MSyzQ51IvB$Hl!n35srJ%W~mAIB`#ANDDlreB2Nblpc!oh zph{68!O#RMpNw$&Oddky3dRA9crC+a_GuEoyT++I zn$b9r%cFfhHe2K68PkBu*@^<$y+7xQ$wJ~;c5aBx$R=xq*41Wo zhwQus_VOgm0hughj}MhOvs#{>Vg09Y8WxjWUJY5YW zJ?&8eG!59Cz=|E%Ns@013KLWOLV)CObIIj_5{>{#k%TEAMs_GbdDV`x-iYsGH z#=Z{USAQA>NY(}X7=3{K8#zt08!*rEJmgVy&Y5^okTyr0PUxu5+_tIy*$hUYat4{I6T78~EIV0c!@ z@F9=+VLrqARL1L>3{T^YUnel$OJcYX&u}1#;Y>8clVFBBAqOeC|MxQ7+?ugt`>y|+7`ATN@qgyb z%d2BgFI{nR$+FX{qgSt9dveLNT`TI&E{*y>li|pGznL>L7U;PFa0Bc$|- zPfJu-Eih#;%??%<5t5Xf7ObJJE-xj@zR}5%!5RQXpKC|} diff --git a/libs/ezEditTable/themes/icn_save.gif b/libs/ezEditTable/themes/icn_save.gif deleted file mode 100644 index 44dcc1df9f866f5c3b1a7c9f2547919655e7f1d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 375 zcmV--0f_!bNk%w1VGjTg0M!5h{QdsT%+=@T>eSciM0(ru_5X{DxI>@+KV;Q$!~dAj z{`LI-{`&6I(%QP#_&SOGP+z?5^8Z+v_+zR3smJUzZ{R>~(m9v^X1f1XXv0vH_>7w4 zSBBeZoAL4U^~THOQFzgGv+*-q$gRuo>hJ$vm+mEG)#vX2veERl!RNZZ*i?e@^ZNH& zea;;~=5dVIAye~gc`Dv$psm;e9& z|NsC0A^8LW002J#EC2ui01p5U000J*z@KnPEdDa0jB=@jh#*2ljO7C?t^l8BXA)Xu zI$y33Aw>!TTKD($h{>lDNf4@dWp2PY5~thQcs^Bob9G({4h|@bBO??P6MrBH6B3pZ z8X7nk2LwWs9RmV00|PTD51pSF9ReF43_1)04;P+4Agm288#*%rAGNoWB{c!Z0Sz?= VJ+}}XEe6ul1{?%XM%h9^06SH8y|(}W diff --git a/libs/ezEditTable/themes/icn_tick.png b/libs/ezEditTable/themes/icn_tick.png deleted file mode 100644 index a9925a06ab02db30c1e7ead9c701c15bc63145cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 537 zcmV+!0_OdRP)Hs{AQG2a)rMyf zFQK~pm1x3+7!nu%-M`k}``c>^00{o_1pjWJUTfl8mg=3qGEl8H@}^@w`VUx0_$uy4 z2FhRqKX}xI*?Tv1DJd8z#F#0c%*~rM30HE1@2o5m~}ZyoWhqv>ql{V z1ZGE0lgcoK^lx+eqc*rAX1Ky;Xx3U%u#zG!m-;eD1Qsn@kf3|F9qz~|95=&g3(7!X zB}JAT>RU;a%vaNOGnJ%e1=K6eAh43c(QN8RQ6~GP%O}Jju$~Ld*%`mO1p*}t0i%SbLv(Fo(*ODSht1{LUkSqtR)>sFlI%{G5+8D_QDgx~`GRLofMiNu21{DE+@l z1Wo_Kr?&U@Po(CTFB%^{j@_JjdiunvV^_~jUzoeUwC~mI;=Ps@>CIcIVR^Zy=lK42 z{ryvW-X9(u?C5yZ+B!0lNQ{myjE!BoGdX#yv$L&jV&dYFSnT|jYlqH0Ij}Y~G(O(f z_u%^Q@ZB@<_$)g9Y8_$~D+r7PetIgrA=<-hPZu}6RpN>m&e*tT0 B8SMZ7 diff --git a/src/extensions/advancedGrid/adapterEzEditTable.js b/src/extensions/advancedGrid/adapterEzEditTable.js index e1e5c793..54173d1c 100644 --- a/src/extensions/advancedGrid/adapterEzEditTable.js +++ b/src/extensions/advancedGrid/adapterEzEditTable.js @@ -65,10 +65,7 @@ export default class AdapterEzEditTable { } cfg.base_path = cfg.base_path || tf.basePath + 'ezEditTable/'; - // var editable = tf.editable; var editable = cfg.editable; - // cfg.editable = editable; - // var selectable = tf.selectable; var selectable = cfg.selectable; cfg.selection = selectable; diff --git a/static/style/tablefilter.css b/static/style/tablefilter.css index 7ea0de72..a079891c 100644 --- a/static/style/tablefilter.css +++ b/static/style/tablefilter.css @@ -283,7 +283,7 @@ div.grd_Cont .odd{ background-color:#DFE8F6; }/*row bg alternating color*/ /* Selection */ .ezActiveRow{ background-color:#2852A8 !important; color:#fff; } -.ezSelectedRow{ background-color:#316AC5; color:#fff; } +.ezSelectedRow{ background-color:#316AC5 !important; color:#fff; } .ezActiveCell{ background-color:#D9E8FB !important; color:#000 !important; font-weight:bold; diff --git a/static/templates/advanced-grid.html b/static/templates/advanced-grid.html new file mode 100644 index 00000000..82a85a90 --- /dev/null +++ b/static/templates/advanced-grid.html @@ -0,0 +1,94 @@ + + + + {NAME} v{VERSION} - Selection Grid Demo + + + +

{NAME} v{VERSION}

+

Selection grid demo

+ +

+ To make the grid rows selectable, you need to import the + {EZEDITTABLE_LINK} plugin, enable the selectable property + and configure the advancedGrid with the {EZEDITTABLE_LINK} + options. +

+ +

+ Instructions: Double-click on a row on or press enter key to + perform action. Enable multiple rows selection by checking the Multiple + selection checkbox. Keep Ctrl/Cmd or Shift key + pressed to select multiple rows. +

+ + +
+ + +
+ +
+ + + +
+ + + + + +