diff options
author | Yusaku Sako <yusaku@apache.org> | 2012-12-09 14:00:34 +0000 |
---|---|---|
committer | Yusaku Sako <yusaku@apache.org> | 2012-12-09 14:00:34 +0000 |
commit | 00ba841494a44f60b1888377fa8fc8972eb1ce2b (patch) | |
tree | a3cf3103dc1718ebeb52f7736c6f8368a4713c89 /ambari-web | |
parent | 46eb1a01782ee64c2d7cb7f1a1fe54f04ba1df50 (diff) |
AMBARI-1059. Refactor cluster management. (yusaku)
git-svn-id: https://svn.apache.org/repos/asf/incubator/ambari/branches/AMBARI-666@1418960 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'ambari-web')
47 files changed, 4257 insertions, 18362 deletions
diff --git a/ambari-web/app/assets/data/apps/jobs/taskview.json b/ambari-web/app/assets/data/apps/jobs/taskview.json index 0e1e0489b6..f00765e8ff 100644 --- a/ambari-web/app/assets/data/apps/jobs/taskview.json +++ b/ambari-web/app/assets/data/apps/jobs/taskview.json @@ -1,12017 +1,556 @@ -{"jobName":"", "items":[ - [ - { - "x":1348174676895, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174676971, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677047, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677123, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677199, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677275, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677351, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677427, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677503, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677579, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677655, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677731, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677807, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677883, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677959, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678035, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678111, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678187, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678263, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678339, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678415, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678491, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678567, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678643, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678719, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678795, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678871, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678947, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679023, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679099, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679175, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679251, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679327, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679403, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679479, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679555, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679631, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679707, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679783, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679859, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679935, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680011, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680087, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680163, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680239, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680315, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680391, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680467, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680543, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680619, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680695, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680771, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680847, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680923, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680999, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681075, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681151, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681227, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681303, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681379, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681455, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681531, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681607, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681683, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681759, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681835, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681911, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681987, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682063, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682139, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682215, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682291, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682367, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682443, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682519, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682595, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682671, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682747, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682823, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682899, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682975, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683051, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683127, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683203, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683279, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683355, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683431, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683507, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683583, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683659, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683735, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683811, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683887, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683963, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684039, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684115, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684191, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684267, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684343, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684419, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684495, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684571, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684647, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684723, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684799, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684875, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684951, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685027, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685103, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685179, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685255, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685331, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685407, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685483, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685559, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685635, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685711, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685787, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685863, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685939, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686015, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686091, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686167, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686243, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686319, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686395, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686471, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686547, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686623, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686699, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686775, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686851, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686927, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687003, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687079, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687155, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687231, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687307, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687383, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687459, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687535, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687611, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687687, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687763, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687839, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687915, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687991, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688067, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688143, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688219, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688295, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688371, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688447, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688523, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688599, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688675, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688751, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688827, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688903, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688979, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689055, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689131, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689207, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689283, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689359, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689435, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689511, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689587, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689663, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689739, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689815, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689891, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689967, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690043, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690119, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690195, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690271, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690347, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690423, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690499, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690575, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690651, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690727, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690803, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690879, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690955, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691031, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691107, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691183, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691259, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691335, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691411, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691487, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691563, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691639, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691715, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691791, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691867, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691943, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692019, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692095, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692171, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692247, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692323, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692399, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692475, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692551, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692627, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692703, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692779, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692855, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692931, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693007, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693083, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693159, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693235, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693311, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693387, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693463, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693539, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693615, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693691, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693767, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693843, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693919, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693995, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694071, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694147, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694223, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694299, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694375, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694451, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694527, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694603, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694679, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694755, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694831, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694907, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694983, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695059, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695135, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695211, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695287, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695363, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695439, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695515, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695591, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695667, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695743, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695819, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695895, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695971, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696047, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696123, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696199, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696275, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696351, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696427, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696503, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696579, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696655, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696731, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696807, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696883, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696959, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697035, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697111, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697187, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697263, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697339, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697415, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697491, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697567, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697643, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697719, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697795, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697871, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697947, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698023, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698099, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698175, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698251, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698327, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698403, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698479, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698555, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698631, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698707, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698783, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698859, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698935, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699011, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699087, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699163, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699239, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699315, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699391, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699467, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699543, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699619, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699695, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699771, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699847, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699923, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699999, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700075, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700151, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700227, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700303, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700379, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700455, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700531, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700607, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700683, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700759, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700835, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700911, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700987, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701063, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701139, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701215, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701291, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701367, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701443, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701519, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701595, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701671, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701747, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701823, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701899, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701975, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702051, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702127, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702203, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702279, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702355, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702431, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702507, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702583, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702659, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702735, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702811, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702887, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702963, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703039, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703115, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703191, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703267, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703343, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703419, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703495, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703571, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703647, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703723, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703799, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703875, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703951, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704027, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704103, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704179, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704255, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704331, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704407, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704483, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704559, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704635, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704711, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704787, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704863, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704939, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705015, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705091, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705167, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705243, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705319, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705395, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705471, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705547, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705623, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705699, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705775, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705851, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705927, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706003, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706079, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706155, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706231, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706307, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706383, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706459, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706535, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706611, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706687, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706763, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706839, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706915, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706991, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707067, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707143, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707219, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707295, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707371, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707447, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707523, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707599, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707675, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707751, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707827, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707903, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707979, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708055, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708131, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708207, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708283, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708359, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708435, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708511, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708587, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708663, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708739, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708815, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708891, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708967, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709043, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709119, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709195, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709271, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709347, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709423, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709499, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709575, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709651, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709727, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709803, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709879, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709955, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710031, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710107, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710183, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710259, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710335, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710411, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710487, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710563, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710639, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710715, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710791, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710867, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710943, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711019, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711095, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711171, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711247, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711323, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711399, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711475, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711551, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711627, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711703, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711779, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711855, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711931, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712007, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712083, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712159, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712235, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712311, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712387, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712463, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712539, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712615, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712691, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712767, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712843, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712919, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712995, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713071, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713147, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713223, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713299, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713375, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713451, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713527, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713603, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713679, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713755, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713831, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713907, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713983, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714059, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714135, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714211, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714287, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714363, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714439, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714515, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714591, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714667, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714743, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714819, - "y":0, - "r":0, - "label":null - } - ], - [ - { - "x":1348174676895, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174676971, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677047, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677123, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677199, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677275, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677351, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677427, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677503, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677579, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677655, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677731, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677807, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677883, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677959, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678035, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678111, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678187, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678263, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678339, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678415, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678491, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678567, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678643, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678719, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678795, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678871, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678947, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679023, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679099, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679175, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679251, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679327, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679403, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679479, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679555, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679631, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679707, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679783, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679859, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679935, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680011, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680087, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680163, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680239, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680315, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680391, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680467, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680543, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680619, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680695, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680771, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680847, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680923, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680999, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681075, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681151, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681227, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681303, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681379, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681455, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681531, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681607, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681683, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681759, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681835, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681911, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681987, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682063, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682139, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682215, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682291, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682367, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682443, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682519, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682595, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682671, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682747, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682823, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682899, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682975, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683051, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683127, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683203, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683279, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683355, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683431, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683507, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683583, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683659, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683735, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683811, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683887, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683963, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684039, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684115, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684191, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684267, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684343, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684419, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684495, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684571, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684647, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684723, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684799, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684875, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684951, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685027, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685103, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685179, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685255, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685331, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685407, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685483, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685559, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685635, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685711, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685787, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685863, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685939, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686015, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686091, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686167, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686243, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686319, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686395, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686471, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686547, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686623, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686699, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686775, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686851, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686927, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687003, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687079, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687155, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687231, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687307, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687383, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687459, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687535, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687611, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687687, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687763, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687839, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687915, - "y":0, - "r":0, - "label":null - }, - { - "x":"1348174687606", - "y":6995, - "r":6, - "label":"attempt_201209201356_0002_m_000000_0" - }, - { - "x":"1348174687607", - "y":6993, - "r":4, - "label":"attempt_201209201356_0002_m_000001_0" - }, - { - "x":1348174688143, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688219, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688295, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688371, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688447, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688523, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688599, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688675, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688751, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688827, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688903, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688979, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689055, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689131, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689207, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689283, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689359, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689435, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689511, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689587, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689663, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689739, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689815, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689891, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689967, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690043, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690119, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690195, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690271, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690347, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690423, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690499, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690575, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690651, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690727, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690803, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690879, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690955, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691031, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691107, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691183, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691259, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691335, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691411, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691487, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691563, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691639, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691715, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691791, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691867, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691943, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692019, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692095, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692171, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692247, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692323, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692399, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692475, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692551, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692627, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692703, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692779, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692855, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692931, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693007, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693083, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693159, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693235, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693311, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693387, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693463, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693539, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693615, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693691, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693767, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693843, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693919, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693995, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694071, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694147, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694223, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694299, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694375, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694451, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694527, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694603, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694679, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694755, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694831, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694907, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694983, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695059, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695135, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695211, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695287, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695363, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695439, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695515, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695591, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695667, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695743, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695819, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695895, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695971, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696047, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696123, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696199, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696275, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696351, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696427, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696503, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696579, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696655, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696731, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696807, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696883, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696959, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697035, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697111, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697187, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697263, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697339, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697415, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697491, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697567, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697643, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697719, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697795, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697871, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697947, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698023, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698099, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698175, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698251, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698327, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698403, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698479, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698555, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698631, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698707, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698783, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698859, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698935, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699011, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699087, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699163, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699239, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699315, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699391, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699467, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699543, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699619, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699695, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699771, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699847, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699923, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699999, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700075, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700151, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700227, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700303, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700379, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700455, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700531, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700607, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700683, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700759, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700835, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700911, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700987, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701063, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701139, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701215, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701291, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701367, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701443, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701519, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701595, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701671, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701747, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701823, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701899, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701975, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702051, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702127, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702203, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702279, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702355, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702431, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702507, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702583, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702659, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702735, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702811, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702887, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702963, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703039, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703115, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703191, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703267, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703343, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703419, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703495, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703571, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703647, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703723, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703799, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703875, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703951, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704027, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704103, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704179, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704255, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704331, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704407, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704483, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704559, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704635, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704711, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704787, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704863, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704939, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705015, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705091, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705167, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705243, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705319, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705395, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705471, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705547, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705623, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705699, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705775, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705851, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705927, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706003, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706079, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706155, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706231, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706307, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706383, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706459, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706535, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706611, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706687, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706763, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706839, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706915, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706991, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707067, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707143, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707219, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707295, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707371, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707447, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707523, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707599, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707675, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707751, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707827, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707903, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707979, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708055, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708131, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708207, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708283, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708359, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708435, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708511, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708587, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708663, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708739, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708815, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708891, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708967, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709043, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709119, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709195, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709271, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709347, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709423, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709499, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709575, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709651, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709727, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709803, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709879, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709955, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710031, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710107, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710183, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710259, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710335, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710411, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710487, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710563, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710639, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710715, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710791, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710867, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710943, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711019, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711095, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711171, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711247, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711323, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711399, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711475, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711551, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711627, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711703, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711779, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711855, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711931, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712007, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712083, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712159, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712235, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712311, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712387, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712463, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712539, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712615, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712691, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712767, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712843, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712919, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712995, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713071, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713147, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713223, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713299, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713375, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713451, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713527, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713603, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713679, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713755, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713831, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713907, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713983, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714059, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714135, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714211, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714287, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714363, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714439, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714515, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714591, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714667, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714743, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714819, - "y":0, - "r":0, - "label":null - } - ], - [ - { - "x":1348174676895, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174676971, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677047, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677123, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677199, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677275, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677351, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677427, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677503, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677579, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677655, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677731, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677807, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677883, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677959, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678035, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678111, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678187, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678263, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678339, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678415, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678491, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678567, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678643, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678719, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678795, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678871, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678947, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679023, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679099, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679175, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679251, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679327, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679403, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679479, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679555, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679631, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679707, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679783, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679859, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679935, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680011, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680087, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680163, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680239, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680315, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680391, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680467, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680543, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680619, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680695, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680771, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680847, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680923, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680999, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681075, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681151, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681227, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681303, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681379, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681455, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681531, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681607, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681683, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681759, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681835, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681911, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681987, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682063, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682139, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682215, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682291, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682367, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682443, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682519, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682595, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682671, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682747, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682823, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682899, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682975, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683051, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683127, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683203, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683279, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683355, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683431, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683507, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683583, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683659, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683735, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683811, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683887, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683963, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684039, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684115, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684191, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684267, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684343, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684419, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684495, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684571, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684647, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684723, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684799, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684875, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684951, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685027, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685103, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685179, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685255, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685331, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685407, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685483, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685559, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685635, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685711, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685787, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685863, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685939, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686015, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686091, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686167, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686243, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686319, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686395, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686471, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686547, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686623, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686699, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686775, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686851, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686927, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687003, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687079, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687155, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687231, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687307, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687383, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687459, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687535, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687611, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687687, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687763, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687839, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687915, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687991, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688067, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688143, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688219, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688295, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688371, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688447, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688523, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688599, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688675, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688751, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688827, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688903, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688979, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689055, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689131, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689207, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689283, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689359, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689435, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689511, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689587, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689663, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689739, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689815, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689891, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689967, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690043, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690119, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690195, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690271, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690347, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690423, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690499, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690575, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690651, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690727, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690803, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690879, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690955, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691031, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691107, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691183, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691259, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691335, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691411, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691487, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691563, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691639, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691715, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691791, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691867, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691943, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692019, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692095, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692171, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692247, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692323, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692399, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692475, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692551, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692627, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692703, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692779, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692855, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692931, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693007, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693083, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693159, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693235, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693311, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693387, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693463, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693539, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693615, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693691, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693767, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693843, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693919, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693995, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694071, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694147, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694223, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694299, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694375, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694451, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694527, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694603, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694679, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694755, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694831, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694907, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694983, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695059, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695135, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695211, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695287, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695363, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695439, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695515, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695591, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695667, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695743, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695819, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695895, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695971, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696047, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696123, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696199, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696275, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696351, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696427, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696503, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696579, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696655, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696731, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696807, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696883, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696959, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697035, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697111, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697187, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697263, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697339, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697415, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697491, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697567, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697643, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697719, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697795, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697871, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697947, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698023, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698099, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698175, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698251, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698327, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698403, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698479, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698555, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698631, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698707, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698783, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698859, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698935, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699011, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699087, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699163, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699239, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699315, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699391, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699467, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699543, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699619, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699695, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699771, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699847, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699923, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699999, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700075, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700151, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700227, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700303, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700379, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700455, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700531, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700607, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700683, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700759, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700835, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700911, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700987, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701063, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701139, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701215, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701291, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701367, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701443, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701519, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701595, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701671, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701747, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701823, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701899, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701975, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702051, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702127, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702203, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702279, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702355, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702431, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702507, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702583, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702659, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702735, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702811, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702887, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702963, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703039, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703115, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703191, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703267, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703343, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703419, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703495, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703571, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703647, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703723, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703799, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703875, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703951, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704027, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704103, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704179, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704255, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704331, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704407, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704483, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704559, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704635, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704711, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704787, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704863, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704939, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705015, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705091, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705167, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705243, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705319, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705395, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705471, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705547, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705623, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705699, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705775, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705851, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705927, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706003, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706079, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706155, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706231, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706307, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706383, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706459, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706535, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706611, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706687, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706763, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706839, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706915, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706991, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707067, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707143, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707219, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707295, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707371, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707447, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707523, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707599, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707675, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707751, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707827, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707903, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707979, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708055, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708131, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708207, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708283, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708359, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708435, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708511, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708587, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708663, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708739, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708815, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708891, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708967, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709043, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709119, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709195, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709271, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709347, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709423, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709499, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709575, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709651, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709727, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709803, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709879, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709955, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710031, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710107, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710183, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710259, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710335, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710411, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710487, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710563, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710639, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710715, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710791, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710867, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710943, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711019, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711095, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711171, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711247, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711323, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711399, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711475, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711551, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711627, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711703, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711779, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711855, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711931, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712007, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712083, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712159, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712235, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712311, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712387, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712463, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712539, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712615, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712691, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712767, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712843, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712919, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712995, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713071, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713147, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713223, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713299, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713375, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713451, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713527, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713603, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713679, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713755, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713831, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713907, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713983, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714059, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714135, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714211, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714287, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714363, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714439, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714515, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714591, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714667, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714743, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714819, - "y":0, - "r":0, - "label":null - } - ], - [ - { - "x":1348174676895, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174676971, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677047, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677123, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677199, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677275, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677351, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677427, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677503, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677579, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677655, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677731, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677807, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677883, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174677959, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678035, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678111, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678187, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678263, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678339, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678415, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678491, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678567, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678643, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678719, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678795, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678871, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174678947, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679023, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679099, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679175, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679251, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679327, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679403, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679479, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679555, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679631, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679707, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679783, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679859, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174679935, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680011, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680087, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680163, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680239, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680315, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680391, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680467, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680543, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680619, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680695, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680771, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680847, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680923, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174680999, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681075, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681151, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681227, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681303, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681379, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681455, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681531, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681607, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681683, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681759, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681835, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681911, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174681987, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682063, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682139, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682215, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682291, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682367, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682443, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682519, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682595, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682671, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682747, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682823, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682899, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174682975, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683051, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683127, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683203, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683279, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683355, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683431, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683507, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683583, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683659, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683735, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683811, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683887, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174683963, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684039, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684115, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684191, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684267, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684343, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684419, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684495, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684571, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684647, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684723, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684799, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684875, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174684951, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685027, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685103, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685179, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685255, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685331, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685407, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685483, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685559, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685635, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685711, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685787, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685863, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174685939, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686015, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686091, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686167, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686243, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686319, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686395, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686471, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686547, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686623, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686699, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686775, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686851, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174686927, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687003, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687079, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687155, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687231, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687307, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687383, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687459, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687535, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687611, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687687, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687763, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687839, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687915, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174687991, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688067, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688143, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688219, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688295, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688371, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688447, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688523, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688599, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688675, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688751, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688827, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688903, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174688979, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689055, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689131, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689207, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689283, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689359, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689435, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689511, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689587, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689663, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689739, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689815, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689891, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174689967, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690043, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690119, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690195, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690271, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690347, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690423, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690499, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690575, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690651, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690727, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690803, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690879, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174690955, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691031, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691107, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691183, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691259, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691335, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691411, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691487, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691563, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691639, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691715, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691791, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691867, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174691943, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692019, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692095, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692171, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692247, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692323, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692399, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692475, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692551, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692627, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692703, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692779, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692855, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174692931, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693007, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693083, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693159, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693235, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693311, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693387, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693463, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693539, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693615, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693691, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693767, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693843, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693919, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174693995, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694071, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694147, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694223, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694299, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694375, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694451, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694527, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694603, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694679, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694755, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694831, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694907, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174694983, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695059, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695135, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695211, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695287, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695363, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695439, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695515, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695591, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695667, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695743, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695819, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695895, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174695971, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696047, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696123, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696199, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696275, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696351, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696427, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696503, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696579, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696655, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696731, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696807, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696883, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174696959, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697035, - "y":0, - "r":0, - "label":null - }, - { - "x":"1348174696690", - "y":11548, - "r":9, - "label":"attempt_201209201356_0002_r_000000_0" - }, - { - "x":1348174697187, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697263, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697339, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697415, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697491, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697567, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697643, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697719, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697795, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697871, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174697947, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698023, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698099, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698175, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698251, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698327, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698403, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698479, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698555, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698631, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698707, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698783, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698859, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174698935, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699011, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699087, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699163, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699239, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699315, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699391, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699467, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699543, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699619, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699695, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699771, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699847, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699923, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174699999, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700075, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700151, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700227, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700303, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700379, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700455, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700531, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700607, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700683, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700759, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700835, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700911, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174700987, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701063, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701139, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701215, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701291, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701367, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701443, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701519, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701595, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701671, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701747, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701823, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701899, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174701975, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702051, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702127, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702203, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702279, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702355, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702431, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702507, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702583, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702659, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702735, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702811, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702887, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174702963, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703039, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703115, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703191, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703267, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703343, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703419, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703495, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703571, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703647, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703723, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703799, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703875, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174703951, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704027, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704103, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704179, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704255, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704331, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704407, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704483, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704559, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704635, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704711, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704787, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704863, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174704939, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705015, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705091, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705167, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705243, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705319, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705395, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705471, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705547, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705623, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705699, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705775, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705851, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174705927, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706003, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706079, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706155, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706231, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706307, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706383, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706459, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706535, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706611, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706687, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706763, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706839, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706915, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174706991, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707067, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707143, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707219, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707295, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707371, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707447, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707523, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707599, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707675, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707751, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707827, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707903, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174707979, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708055, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708131, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708207, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708283, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708359, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708435, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708511, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708587, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708663, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708739, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708815, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708891, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174708967, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709043, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709119, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709195, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709271, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709347, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709423, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709499, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709575, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709651, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709727, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709803, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709879, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174709955, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710031, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710107, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710183, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710259, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710335, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710411, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710487, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710563, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710639, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710715, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710791, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710867, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174710943, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711019, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711095, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711171, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711247, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711323, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711399, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711475, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711551, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711627, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711703, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711779, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711855, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174711931, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712007, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712083, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712159, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712235, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712311, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712387, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712463, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712539, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712615, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712691, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712767, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712843, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712919, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174712995, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713071, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713147, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713223, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713299, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713375, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713451, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713527, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713603, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713679, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713755, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713831, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713907, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174713983, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714059, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714135, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714211, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714287, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714363, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714439, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714515, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714591, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714667, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714743, - "y":0, - "r":0, - "label":null - }, - { - "x":1348174714819, - "y":0, - "r":0, - "label":null - } - ], - { - "submitTime":"1348174676895", - "0":"1348174676895", - "finishTime":"1348174714773", - "1":"1348174714773" - } -] -}
\ No newline at end of file +{ + "mapNodeLocal": [ + { + "r": 0, + "x": 1349195920, + "y": 0 + }, + { + "label": "attempt_201210011000_0012_m_000000_0", + "r": 6, + "x": 1349196028, + "y": 5219 + }, + { + "label": "attempt_201210011000_0012_m_000000_1", + "r": 6, + "x": 1349196029, + "y": 104219 + }, + { + "r": 0, + "x": 1349196030, + "y": 0 + }, + { + "label": "attempt_201210011000_0012_m_000000_2", + "r": 6, + "x": 1349196031, + "y": 102219 + }, + { + "r": 0, + "x": 1349196034, + "y": 0 + }, + { + "r": 0, + "x": 1349196037, + "y": 0 + }, + { + "r": 0, + "x": 1349196043, + "y": 0 + }, + { + "r": 0, + "x": 1349196046, + "y": 0 + }, + { + "r": 0, + "x": 1349196055, + "y": 0 + }, + { + "r": 0, + "x": 1349196058, + "y": 0 + }, + { + "r": 0, + "x": 1349196067, + "y": 0 + }, + { + "r": 0, + "x": 1349196070, + "y": 0 + }, + { + "r": 0, + "x": 1349196079, + "y": 0 + }, + { + "r": 0, + "x": 1349196085, + "y": 0 + }, + { + "r": 0, + "x": 1349196091, + "y": 0 + }, + { + "r": 0, + "x": 1349196097, + "y": 0 + }, + { + "r": 0, + "x": 1349196103, + "y": 0 + }, + { + "r": 0, + "x": 1349196106, + "y": 0 + }, + { + "r": 0, + "x": 1349196115, + "y": 0 + }, + { + "r": 0, + "x": 1349196118, + "y": 0 + }, + { + "r": 0, + "x": 1349196124, + "y": 0 + }, + { + "r": 0, + "x": 1349196127, + "y": 0 + }, + { + "r": 0, + "x": 1349196136, + "y": 0 + }, + { + "r": 0, + "x": 1349196139, + "y": 0 + }, + { + "r": 0, + "x": 1349196160, + "y": 0 + } + ], + "mapRackLocal": [ + { + "r": 0, + "x": 1349195920, + "y": 0 + }, + { + "r": 0, + "x": 1349196028, + "y": 0 + }, + { + "r": 0, + "x": 1349196029, + "y": 0 + }, + { + "r": 0, + "x": 1349196030, + "y": 0 + }, + { + "r": 0, + "x": 1349196031, + "y": 0 + }, + { + "r": 0, + "x": 1349196034, + "y": 0 + }, + { + "r": 0, + "x": 1349196037, + "y": 0 + }, + { + "r": 0, + "x": 1349196043, + "y": 0 + }, + { + "r": 0, + "x": 1349196046, + "y": 0 + }, + { + "r": 0, + "x": 1349196055, + "y": 0 + }, + { + "r": 0, + "x": 1349196058, + "y": 0 + }, + { + "r": 0, + "x": 1349196067, + "y": 0 + }, + { + "r": 0, + "x": 1349196070, + "y": 0 + }, + { + "r": 0, + "x": 1349196079, + "y": 0 + }, + { + "r": 0, + "x": 1349196085, + "y": 0 + }, + { + "r": 0, + "x": 1349196091, + "y": 0 + }, + { + "r": 0, + "x": 1349196097, + "y": 0 + }, + { + "r": 0, + "x": 1349196103, + "y": 0 + }, + { + "r": 0, + "x": 1349196106, + "y": 0 + }, + { + "r": 0, + "x": 1349196115, + "y": 0 + }, + { + "r": 0, + "x": 1349196118, + "y": 0 + }, + { + "r": 0, + "x": 1349196124, + "y": 0 + }, + { + "r": 0, + "x": 1349196127, + "y": 0 + }, + { + "r": 0, + "x": 1349196136, + "y": 0 + }, + { + "r": 0, + "x": 1349196139, + "y": 0 + }, + { + "r": 0, + "x": 1349196160, + "y": 0 + } + ], + "mapOffSwitch": [ + { + "r": 0, + "x": 1349195920, + "y": 0 + }, + { + "r": 0, + "x": 1349196028, + "y": 0 + }, + { + "r": 0, + "x": 1349196029, + "y": 0 + }, + { + "r": 0, + "x": 1349196030, + "y": 0 + }, + { + "r": 0, + "x": 1349196031, + "y": 0 + }, + { + "r": 0, + "x": 1349196034, + "y": 0 + }, + { + "r": 0, + "x": 1349196037, + "y": 0 + }, + { + "r": 0, + "x": 1349196043, + "y": 0 + }, + { + "r": 0, + "x": 1349196046, + "y": 0 + }, + { + "r": 0, + "x": 1349196055, + "y": 0 + }, + { + "r": 0, + "x": 1349196058, + "y": 0 + }, + { + "r": 0, + "x": 1349196067, + "y": 0 + }, + { + "r": 0, + "x": 1349196070, + "y": 0 + }, + { + "r": 0, + "x": 1349196079, + "y": 0 + }, + { + "r": 0, + "x": 1349196085, + "y": 0 + }, + { + "r": 0, + "x": 1349196091, + "y": 0 + }, + { + "r": 0, + "x": 1349196097, + "y": 0 + }, + { + "r": 0, + "x": 1349196103, + "y": 0 + }, + { + "r": 0, + "x": 1349196106, + "y": 0 + }, + { + "r": 0, + "x": 1349196115, + "y": 0 + }, + { + "r": 0, + "x": 1349196118, + "y": 0 + }, + { + "r": 0, + "x": 1349196124, + "y": 0 + }, + { + "r": 0, + "x": 1349196127, + "y": 0 + }, + { + "r": 0, + "x": 1349196136, + "y": 0 + }, + { + "r": 0, + "x": 1349196139, + "y": 0 + }, + { + "r": 0, + "x": 1349196160, + "y": 0 + } + ], + "reduceOffSwitch": [ + { + "r": 0, + "x": 1349195920, + "y": 0 + }, + { + "r": 0, + "x": 1349196028, + "y": 0 + }, + { + "r": 0, + "x": 1349196029, + "y": 0 + }, + { + "label": "attempt_201210011000_0012_r_000000_1", + "r": 6, + "x": 1349196030, + "y": 103219 + }, + { + "r": 0, + "x": 1349196031, + "y": 0 + }, + { + "label": "attempt_201210011000_0012_r_000000_0", + "r": 6, + "x": 1349196034, + "y": 10484 + }, + { + "label": "attempt_201210011000_0012_r_000001_0", + "r": 6, + "x": 1349196037, + "y": 10645 + }, + { + "label": "attempt_201210011000_0012_r_000002_0", + "r": 6, + "x": 1349196043, + "y": 14970 + }, + { + "label": "attempt_201210011000_0012_r_000003_0", + "r": 6, + "x": 1349196046, + "y": 14872 + }, + { + "label": "attempt_201210011000_0012_r_000004_0", + "r": 6, + "x": 1349196055, + "y": 13521 + }, + { + "label": "attempt_201210011000_0012_r_000005_0", + "r": 6, + "x": 1349196058, + "y": 16319 + }, + { + "label": "attempt_201210011000_0012_r_000006_0", + "r": 6, + "x": 1349196067, + "y": 15078 + }, + { + "label": "attempt_201210011000_0012_r_000007_0", + "r": 6, + "x": 1349196070, + "y": 17741 + }, + { + "label": "attempt_201210011000_0012_r_000008_0", + "r": 6, + "x": 1349196079, + "y": 13609 + }, + { + "label": "attempt_201210011000_0012_r_000009_0", + "r": 6, + "x": 1349196085, + "y": 13184 + }, + { + "label": "attempt_201210011000_0012_r_000010_0", + "r": 6, + "x": 1349196091, + "y": 14919 + }, + { + "label": "attempt_201210011000_0012_r_000011_0", + "r": 6, + "x": 1349196097, + "y": 11590 + }, + { + "label": "attempt_201210011000_0012_r_000012_0", + "r": 6, + "x": 1349196103, + "y": 13223 + }, + { + "label": "attempt_201210011000_0012_r_000013_0", + "r": 6, + "x": 1349196106, + "y": 12841 + }, + { + "label": "attempt_201210011000_0012_r_000014_0", + "r": 6, + "x": 1349196115, + "y": 11585 + }, + { + "label": "attempt_201210011000_0012_r_000015_0", + "r": 6, + "x": 1349196118, + "y": 11085 + }, + { + "label": "attempt_201210011000_0012_r_000016_0", + "r": 6, + "x": 1349196124, + "y": 12886 + }, + { + "label": "attempt_201210011000_0012_r_000017_0", + "r": 6, + "x": 1349196127, + "y": 15345 + }, + { + "label": "attempt_201210011000_0012_r_000018_0", + "r": 6, + "x": 1349196136, + "y": 11112 + }, + { + "label": "attempt_201210011000_0012_r_000019_0", + "r": 6, + "x": 1349196139, + "y": 13773 + }, + { + "r": 0, + "x": 1349196160, + "y": 0 + } + ], + "submitTime": 1349195920, + "finishTime": 1349196160 +} diff --git a/ambari-web/app/assets/data/apps/jobs/timeline.json b/ambari-web/app/assets/data/apps/jobs/timeline.json index 8e2e89c730..54ee3bc1e1 100644 --- a/ambari-web/app/assets/data/apps/jobs/timeline.json +++ b/ambari-web/app/assets/data/apps/jobs/timeline.json @@ -1,6008 +1,740 @@ -{"jobName":"", "items":[ - [ - { - "x":0, - "y":0 - }, - { - "x":1, - "y":0 - }, - { - "x":2, - "y":0 - }, - { - "x":3, - "y":0 - }, - { - "x":4, - "y":0 - }, - { - "x":5, - "y":0 - }, - { - "x":6, - "y":0 - }, - { - "x":7, - "y":0 - }, - { - "x":8, - "y":0 - }, - { - "x":9, - "y":0 - }, - { - "x":10, - "y":0 - }, - { - "x":11, - "y":0 - }, - { - "x":12, - "y":0 - }, - { - "x":13, - "y":0 - }, - { - "x":14, - "y":0 - }, - { - "x":15, - "y":0 - }, - { - "x":16, - "y":0 - }, - { - "x":17, - "y":0 - }, - { - "x":18, - "y":0 - }, - { - "x":19, - "y":0 - }, - { - "x":20, - "y":0 - }, - { - "x":21, - "y":0 - }, - { - "x":22, - "y":0 - }, - { - "x":23, - "y":0 - }, - { - "x":24, - "y":0 - }, - { - "x":25, - "y":0 - }, - { - "x":26, - "y":0 - }, - { - "x":27, - "y":0 - }, - { - "x":28, - "y":0 - }, - { - "x":29, - "y":0 - }, - { - "x":30, - "y":0 - }, - { - "x":31, - "y":0 - }, - { - "x":32, - "y":0 - }, - { - "x":33, - "y":0 - }, - { - "x":34, - "y":0 - }, - { - "x":35, - "y":0 - }, - { - "x":36, - "y":0 - }, - { - "x":37, - "y":0 - }, - { - "x":38, - "y":0 - }, - { - "x":39, - "y":0 - }, - { - "x":40, - "y":0 - }, - { - "x":41, - "y":0 - }, - { - "x":42, - "y":0 - }, - { - "x":43, - "y":0 - }, - { - "x":44, - "y":0 - }, - { - "x":45, - "y":0 - }, - { - "x":46, - "y":0 - }, - { - "x":47, - "y":0 - }, - { - "x":48, - "y":0 - }, - { - "x":49, - "y":0 - }, - { - "x":50, - "y":0 - }, - { - "x":51, - "y":0 - }, - { - "x":52, - "y":0 - }, - { - "x":53, - "y":0 - }, - { - "x":54, - "y":0 - }, - { - "x":55, - "y":0 - }, - { - "x":56, - "y":0 - }, - { - "x":57, - "y":0 - }, - { - "x":58, - "y":0 - }, - { - "x":59, - "y":0 - }, - { - "x":60, - "y":0 - }, - { - "x":61, - "y":0 - }, - { - "x":62, - "y":0 - }, - { - "x":63, - "y":0 - }, - { - "x":64, - "y":0 - }, - { - "x":65, - "y":0 - }, - { - "x":66, - "y":0 - }, - { - "x":67, - "y":0 - }, - { - "x":68, - "y":0 - }, - { - "x":69, - "y":0 - }, - { - "x":70, - "y":0 - }, - { - "x":71, - "y":0 - }, - { - "x":72, - "y":0 - }, - { - "x":73, - "y":0 - }, - { - "x":74, - "y":0 - }, - { - "x":75, - "y":0 - }, - { - "x":76, - "y":0 - }, - { - "x":77, - "y":0 - }, - { - "x":78, - "y":0 - }, - { - "x":79, - "y":0 - }, - { - "x":80, - "y":0 - }, - { - "x":81, - "y":0 - }, - { - "x":82, - "y":0 - }, - { - "x":83, - "y":0 - }, - { - "x":84, - "y":0 - }, - { - "x":85, - "y":0 - }, - { - "x":86, - "y":0 - }, - { - "x":87, - "y":0 - }, - { - "x":88, - "y":0 - }, - { - "x":89, - "y":0 - }, - { - "x":90, - "y":0 - }, - { - "x":91, - "y":0 - }, - { - "x":92, - "y":0 - }, - { - "x":93, - "y":0 - }, - { - "x":94, - "y":0 - }, - { - "x":95, - "y":0 - }, - { - "x":96, - "y":0 - }, - { - "x":97, - "y":0 - }, - { - "x":98, - "y":0 - }, - { - "x":99, - "y":0 - }, - { - "x":100, - "y":0 - }, - { - "x":101, - "y":0 - }, - { - "x":102, - "y":0 - }, - { - "x":103, - "y":0 - }, - { - "x":104, - "y":0 - }, - { - "x":105, - "y":0 - }, - { - "x":106, - "y":0 - }, - { - "x":107, - "y":0 - }, - { - "x":108, - "y":0 - }, - { - "x":109, - "y":0 - }, - { - "x":110, - "y":0 - }, - { - "x":111, - "y":0 - }, - { - "x":112, - "y":0 - }, - { - "x":113, - "y":0 - }, - { - "x":114, - "y":0 - }, - { - "x":115, - "y":0 - }, - { - "x":116, - "y":0 - }, - { - "x":117, - "y":0 - }, - { - "x":118, - "y":0 - }, - { - "x":119, - "y":0 - }, - { - "x":120, - "y":0 - }, - { - "x":121, - "y":0 - }, - { - "x":122, - "y":0 - }, - { - "x":123, - "y":0 - }, - { - "x":124, - "y":0 - }, - { - "x":125, - "y":0 - }, - { - "x":126, - "y":0 - }, - { - "x":127, - "y":0 - }, - { - "x":128, - "y":0 - }, - { - "x":129, - "y":0 - }, - { - "x":130, - "y":0 - }, - { - "x":131, - "y":0 - }, - { - "x":132, - "y":0 - }, - { - "x":133, - "y":0 - }, - { - "x":134, - "y":0 - }, - { - "x":135, - "y":0 - }, - { - "x":136, - "y":0 - }, - { - "x":137, - "y":0 - }, - { - "x":138, - "y":0 - }, - { - "x":139, - "y":0 - }, - { - "x":140, - "y":0 - }, - { - "x":141, - "y":0 - }, - { - "x":142, - "y":2 - }, - { - "x":143, - "y":2 - }, - { - "x":144, - "y":2 - }, - { - "x":145, - "y":2 - }, - { - "x":146, - "y":2 - }, - { - "x":147, - "y":2 - }, - { - "x":148, - "y":2 - }, - { - "x":149, - "y":2 - }, - { - "x":150, - "y":2 - }, - { - "x":151, - "y":2 - }, - { - "x":152, - "y":2 - }, - { - "x":153, - "y":2 - }, - { - "x":154, - "y":2 - }, - { - "x":155, - "y":2 - }, - { - "x":156, - "y":2 - }, - { - "x":157, - "y":2 - }, - { - "x":158, - "y":2 - }, - { - "x":159, - "y":2 - }, - { - "x":160, - "y":2 - }, - { - "x":161, - "y":2 - }, - { - "x":162, - "y":2 - }, - { - "x":163, - "y":2 - }, - { - "x":164, - "y":2 - }, - { - "x":165, - "y":2 - }, - { - "x":166, - "y":2 - }, - { - "x":167, - "y":2 - }, - { - "x":168, - "y":2 - }, - { - "x":169, - "y":2 - }, - { - "x":170, - "y":2 - }, - { - "x":171, - "y":2 - }, - { - "x":172, - "y":2 - }, - { - "x":173, - "y":2 - }, - { - "x":174, - "y":2 - }, - { - "x":175, - "y":2 - }, - { - "x":176, - "y":2 - }, - { - "x":177, - "y":2 - }, - { - "x":178, - "y":2 - }, - { - "x":179, - "y":2 - }, - { - "x":180, - "y":2 - }, - { - "x":181, - "y":2 - }, - { - "x":182, - "y":2 - }, - { - "x":183, - "y":2 - }, - { - "x":184, - "y":2 - }, - { - "x":185, - "y":2 - }, - { - "x":186, - "y":2 - }, - { - "x":187, - "y":2 - }, - { - "x":188, - "y":2 - }, - { - "x":189, - "y":2 - }, - { - "x":190, - "y":2 - }, - { - "x":191, - "y":2 - }, - { - "x":192, - "y":2 - }, - { - "x":193, - "y":2 - }, - { - "x":194, - "y":2 - }, - { - "x":195, - "y":2 - }, - { - "x":196, - "y":2 - }, - { - "x":197, - "y":2 - }, - { - "x":198, - "y":2 - }, - { - "x":199, - "y":2 - }, - { - "x":200, - "y":2 - }, - { - "x":201, - "y":2 - }, - { - "x":202, - "y":2 - }, - { - "x":203, - "y":2 - }, - { - "x":204, - "y":2 - }, - { - "x":205, - "y":2 - }, - { - "x":206, - "y":2 - }, - { - "x":207, - "y":2 - }, - { - "x":208, - "y":2 - }, - { - "x":209, - "y":2 - }, - { - "x":210, - "y":2 - }, - { - "x":211, - "y":2 - }, - { - "x":212, - "y":2 - }, - { - "x":213, - "y":2 - }, - { - "x":214, - "y":2 - }, - { - "x":215, - "y":2 - }, - { - "x":216, - "y":2 - }, - { - "x":217, - "y":2 - }, - { - "x":218, - "y":2 - }, - { - "x":219, - "y":2 - }, - { - "x":220, - "y":2 - }, - { - "x":221, - "y":2 - }, - { - "x":222, - "y":2 - }, - { - "x":223, - "y":2 - }, - { - "x":224, - "y":2 - }, - { - "x":225, - "y":2 - }, - { - "x":226, - "y":2 - }, - { - "x":227, - "y":2 - }, - { - "x":228, - "y":2 - }, - { - "x":229, - "y":2 - }, - { - "x":230, - "y":2 - }, - { - "x":231, - "y":2 - }, - { - "x":232, - "y":2 - }, - { - "x":233, - "y":2 - }, - { - "x":234, - "y":0 - }, - { - "x":235, - "y":0 - }, - { - "x":236, - "y":0 - }, - { - "x":237, - "y":0 - }, - { - "x":238, - "y":0 - }, - { - "x":239, - "y":0 - }, - { - "x":240, - "y":0 - }, - { - "x":241, - "y":0 - }, - { - "x":242, - "y":0 - }, - { - "x":243, - "y":0 - }, - { - "x":244, - "y":0 - }, - { - "x":245, - "y":0 - }, - { - "x":246, - "y":0 - }, - { - "x":247, - "y":0 - }, - { - "x":248, - "y":0 - }, - { - "x":249, - "y":0 - }, - { - "x":250, - "y":0 - }, - { - "x":251, - "y":0 - }, - { - "x":252, - "y":0 - }, - { - "x":253, - "y":0 - }, - { - "x":254, - "y":0 - }, - { - "x":255, - "y":0 - }, - { - "x":256, - "y":0 - }, - { - "x":257, - "y":0 - }, - { - "x":258, - "y":0 - }, - { - "x":259, - "y":0 - }, - { - "x":260, - "y":0 - }, - { - "x":261, - "y":0 - }, - { - "x":262, - "y":0 - }, - { - "x":263, - "y":0 - }, - { - "x":264, - "y":0 - }, - { - "x":265, - "y":0 - }, - { - "x":266, - "y":0 - }, - { - "x":267, - "y":0 - }, - { - "x":268, - "y":0 - }, - { - "x":269, - "y":0 - }, - { - "x":270, - "y":0 - }, - { - "x":271, - "y":0 - }, - { - "x":272, - "y":0 - }, - { - "x":273, - "y":0 - }, - { - "x":274, - "y":0 - }, - { - "x":275, - "y":0 - }, - { - "x":276, - "y":0 - }, - { - "x":277, - "y":0 - }, - { - "x":278, - "y":0 - }, - { - "x":279, - "y":0 - }, - { - "x":280, - "y":0 - }, - { - "x":281, - "y":0 - }, - { - "x":282, - "y":0 - }, - { - "x":283, - "y":0 - }, - { - "x":284, - "y":0 - }, - { - "x":285, - "y":0 - }, - { - "x":286, - "y":0 - }, - { - "x":287, - "y":0 - }, - { - "x":288, - "y":0 - }, - { - "x":289, - "y":0 - }, - { - "x":290, - "y":0 - }, - { - "x":291, - "y":0 - }, - { - "x":292, - "y":0 - }, - { - "x":293, - "y":0 - }, - { - "x":294, - "y":0 - }, - { - "x":295, - "y":0 - }, - { - "x":296, - "y":0 - }, - { - "x":297, - "y":0 - }, - { - "x":298, - "y":0 - }, - { - "x":299, - "y":0 - }, - { - "x":300, - "y":0 - }, - { - "x":301, - "y":0 - }, - { - "x":302, - "y":0 - }, - { - "x":303, - "y":0 - }, - { - "x":304, - "y":0 - }, - { - "x":305, - "y":0 - }, - { - "x":306, - "y":0 - }, - { - "x":307, - "y":0 - }, - { - "x":308, - "y":0 - }, - { - "x":309, - "y":0 - }, - { - "x":310, - "y":0 - }, - { - "x":311, - "y":0 - }, - { - "x":312, - "y":0 - }, - { - "x":313, - "y":0 - }, - { - "x":314, - "y":0 - }, - { - "x":315, - "y":0 - }, - { - "x":316, - "y":0 - }, - { - "x":317, - "y":0 - }, - { - "x":318, - "y":0 - }, - { - "x":319, - "y":0 - }, - { - "x":320, - "y":0 - }, - { - "x":321, - "y":0 - }, - { - "x":322, - "y":0 - }, - { - "x":323, - "y":0 - }, - { - "x":324, - "y":0 - }, - { - "x":325, - "y":0 - }, - { - "x":326, - "y":0 - }, - { - "x":327, - "y":0 - }, - { - "x":328, - "y":0 - }, - { - "x":329, - "y":0 - }, - { - "x":330, - "y":0 - }, - { - "x":331, - "y":0 - }, - { - "x":332, - "y":0 - }, - { - "x":333, - "y":0 - }, - { - "x":334, - "y":0 - }, - { - "x":335, - "y":0 - }, - { - "x":336, - "y":0 - }, - { - "x":337, - "y":0 - }, - { - "x":338, - "y":0 - }, - { - "x":339, - "y":0 - }, - { - "x":340, - "y":0 - }, - { - "x":341, - "y":0 - }, - { - "x":342, - "y":0 - }, - { - "x":343, - "y":0 - }, - { - "x":344, - "y":0 - }, - { - "x":345, - "y":0 - }, - { - "x":346, - "y":0 - }, - { - "x":347, - "y":0 - }, - { - "x":348, - "y":0 - }, - { - "x":349, - "y":0 - }, - { - "x":350, - "y":0 - }, - { - "x":351, - "y":0 - }, - { - "x":352, - "y":0 - }, - { - "x":353, - "y":0 - }, - { - "x":354, - "y":0 - }, - { - "x":355, - "y":0 - }, - { - "x":356, - "y":0 - }, - { - "x":357, - "y":0 - }, - { - "x":358, - "y":0 - }, - { - "x":359, - "y":0 - }, - { - "x":360, - "y":0 - }, - { - "x":361, - "y":0 - }, - { - "x":362, - "y":0 - }, - { - "x":363, - "y":0 - }, - { - "x":364, - "y":0 - }, - { - "x":365, - "y":0 - }, - { - "x":366, - "y":0 - }, - { - "x":367, - "y":0 - }, - { - "x":368, - "y":0 - }, - { - "x":369, - "y":0 - }, - { - "x":370, - "y":0 - }, - { - "x":371, - "y":0 - }, - { - "x":372, - "y":0 - }, - { - "x":373, - "y":0 - }, - { - "x":374, - "y":0 - }, - { - "x":375, - "y":0 - }, - { - "x":376, - "y":0 - }, - { - "x":377, - "y":0 - }, - { - "x":378, - "y":0 - }, - { - "x":379, - "y":0 - }, - { - "x":380, - "y":0 - }, - { - "x":381, - "y":0 - }, - { - "x":382, - "y":0 - }, - { - "x":383, - "y":0 - }, - { - "x":384, - "y":0 - }, - { - "x":385, - "y":0 - }, - { - "x":386, - "y":0 - }, - { - "x":387, - "y":0 - }, - { - "x":388, - "y":0 - }, - { - "x":389, - "y":0 - }, - { - "x":390, - "y":0 - }, - { - "x":391, - "y":0 - }, - { - "x":392, - "y":0 - }, - { - "x":393, - "y":0 - }, - { - "x":394, - "y":0 - }, - { - "x":395, - "y":0 - }, - { - "x":396, - "y":0 - }, - { - "x":397, - "y":0 - }, - { - "x":398, - "y":0 - }, - { - "x":399, - "y":0 - }, - { - "x":400, - "y":0 - }, - { - "x":401, - "y":0 - }, - { - "x":402, - "y":0 - }, - { - "x":403, - "y":0 - }, - { - "x":404, - "y":0 - }, - { - "x":405, - "y":0 - }, - { - "x":406, - "y":0 - }, - { - "x":407, - "y":0 - }, - { - "x":408, - "y":0 - }, - { - "x":409, - "y":0 - }, - { - "x":410, - "y":0 - }, - { - "x":411, - "y":0 - }, - { - "x":412, - "y":0 - }, - { - "x":413, - "y":0 - }, - { - "x":414, - "y":0 - }, - { - "x":415, - "y":0 - }, - { - "x":416, - "y":0 - }, - { - "x":417, - "y":0 - }, - { - "x":418, - "y":0 - }, - { - "x":419, - "y":0 - }, - { - "x":420, - "y":0 - }, - { - "x":421, - "y":0 - }, - { - "x":422, - "y":0 - }, - { - "x":423, - "y":0 - }, - { - "x":424, - "y":0 - }, - { - "x":425, - "y":0 - }, - { - "x":426, - "y":0 - }, - { - "x":427, - "y":0 - }, - { - "x":428, - "y":0 - }, - { - "x":429, - "y":0 - }, - { - "x":430, - "y":0 - }, - { - "x":431, - "y":0 - }, - { - "x":432, - "y":0 - }, - { - "x":433, - "y":0 - }, - { - "x":434, - "y":0 - }, - { - "x":435, - "y":0 - }, - { - "x":436, - "y":0 - }, - { - "x":437, - "y":0 - }, - { - "x":438, - "y":0 - }, - { - "x":439, - "y":0 - }, - { - "x":440, - "y":0 - }, - { - "x":441, - "y":0 - }, - { - "x":442, - "y":0 - }, - { - "x":443, - "y":0 - }, - { - "x":444, - "y":0 - }, - { - "x":445, - "y":0 - }, - { - "x":446, - "y":0 - }, - { - "x":447, - "y":0 - }, - { - "x":448, - "y":0 - }, - { - "x":449, - "y":0 - }, - { - "x":450, - "y":0 - }, - { - "x":451, - "y":0 - }, - { - "x":452, - "y":0 - }, - { - "x":453, - "y":0 - }, - { - "x":454, - "y":0 - }, - { - "x":455, - "y":0 - }, - { - "x":456, - "y":0 - }, - { - "x":457, - "y":0 - }, - { - "x":458, - "y":0 - }, - { - "x":459, - "y":0 - }, - { - "x":460, - "y":0 - }, - { - "x":461, - "y":0 - }, - { - "x":462, - "y":0 - }, - { - "x":463, - "y":0 - }, - { - "x":464, - "y":0 - }, - { - "x":465, - "y":0 - }, - { - "x":466, - "y":0 - }, - { - "x":467, - "y":0 - }, - { - "x":468, - "y":0 - }, - { - "x":469, - "y":0 - }, - { - "x":470, - "y":0 - }, - { - "x":471, - "y":0 - }, - { - "x":472, - "y":0 - }, - { - "x":473, - "y":0 - }, - { - "x":474, - "y":0 - }, - { - "x":475, - "y":0 - }, - { - "x":476, - "y":0 - }, - { - "x":477, - "y":0 - }, - { - "x":478, - "y":0 - }, - { - "x":479, - "y":0 - }, - { - "x":480, - "y":0 - }, - { - "x":481, - "y":0 - }, - { - "x":482, - "y":0 - }, - { - "x":483, - "y":0 - }, - { - "x":484, - "y":0 - }, - { - "x":485, - "y":0 - }, - { - "x":486, - "y":0 - }, - { - "x":487, - "y":0 - }, - { - "x":488, - "y":0 - }, - { - "x":489, - "y":0 - }, - { - "x":490, - "y":0 - }, - { - "x":491, - "y":0 - }, - { - "x":492, - "y":0 - }, - { - "x":493, - "y":0 - }, - { - "x":494, - "y":0 - }, - { - "x":495, - "y":0 - }, - { - "x":496, - "y":0 - }, - { - "x":497, - "y":0 - }, - { - "x":498, - "y":0 - }, - { - "x":499, - "y":0 - } - ], - [ - { - "x":0, - "y":0 - }, - { - "x":1, - "y":0 - }, - { - "x":2, - "y":0 - }, - { - "x":3, - "y":0 - }, - { - "x":4, - "y":0 - }, - { - "x":5, - "y":0 - }, - { - "x":6, - "y":0 - }, - { - "x":7, - "y":0 - }, - { - "x":8, - "y":0 - }, - { - "x":9, - "y":0 - }, - { - "x":10, - "y":0 - }, - { - "x":11, - "y":0 - }, - { - "x":12, - "y":0 - }, - { - "x":13, - "y":0 - }, - { - "x":14, - "y":0 - }, - { - "x":15, - "y":0 - }, - { - "x":16, - "y":0 - }, - { - "x":17, - "y":0 - }, - { - "x":18, - "y":0 - }, - { - "x":19, - "y":0 - }, - { - "x":20, - "y":0 - }, - { - "x":21, - "y":0 - }, - { - "x":22, - "y":0 - }, - { - "x":23, - "y":0 - }, - { - "x":24, - "y":0 - }, - { - "x":25, - "y":0 - }, - { - "x":26, - "y":0 - }, - { - "x":27, - "y":0 - }, - { - "x":28, - "y":0 - }, - { - "x":29, - "y":0 - }, - { - "x":30, - "y":0 - }, - { - "x":31, - "y":0 - }, - { - "x":32, - "y":0 - }, - { - "x":33, - "y":0 - }, - { - "x":34, - "y":0 - }, - { - "x":35, - "y":0 - }, - { - "x":36, - "y":0 - }, - { - "x":37, - "y":0 - }, - { - "x":38, - "y":0 - }, - { - "x":39, - "y":0 - }, - { - "x":40, - "y":0 - }, - { - "x":41, - "y":0 - }, - { - "x":42, - "y":0 - }, - { - "x":43, - "y":0 - }, - { - "x":44, - "y":0 - }, - { - "x":45, - "y":0 - }, - { - "x":46, - "y":0 - }, - { - "x":47, - "y":0 - }, - { - "x":48, - "y":0 - }, - { - "x":49, - "y":0 - }, - { - "x":50, - "y":0 - }, - { - "x":51, - "y":0 - }, - { - "x":52, - "y":0 - }, - { - "x":53, - "y":0 - }, - { - "x":54, - "y":0 - }, - { - "x":55, - "y":0 - }, - { - "x":56, - "y":0 - }, - { - "x":57, - "y":0 - }, - { - "x":58, - "y":0 - }, - { - "x":59, - "y":0 - }, - { - "x":60, - "y":0 - }, - { - "x":61, - "y":0 - }, - { - "x":62, - "y":0 - }, - { - "x":63, - "y":0 - }, - { - "x":64, - "y":0 - }, - { - "x":65, - "y":0 - }, - { - "x":66, - "y":0 - }, - { - "x":67, - "y":0 - }, - { - "x":68, - "y":0 - }, - { - "x":69, - "y":0 - }, - { - "x":70, - "y":0 - }, - { - "x":71, - "y":0 - }, - { - "x":72, - "y":0 - }, - { - "x":73, - "y":0 - }, - { - "x":74, - "y":0 - }, - { - "x":75, - "y":0 - }, - { - "x":76, - "y":0 - }, - { - "x":77, - "y":0 - }, - { - "x":78, - "y":0 - }, - { - "x":79, - "y":0 - }, - { - "x":80, - "y":0 - }, - { - "x":81, - "y":0 - }, - { - "x":82, - "y":0 - }, - { - "x":83, - "y":0 - }, - { - "x":84, - "y":0 - }, - { - "x":85, - "y":0 - }, - { - "x":86, - "y":0 - }, - { - "x":87, - "y":0 - }, - { - "x":88, - "y":0 - }, - { - "x":89, - "y":0 - }, - { - "x":90, - "y":0 - }, - { - "x":91, - "y":0 - }, - { - "x":92, - "y":0 - }, - { - "x":93, - "y":0 - }, - { - "x":94, - "y":0 - }, - { - "x":95, - "y":0 - }, - { - "x":96, - "y":0 - }, - { - "x":97, - "y":0 - }, - { - "x":98, - "y":0 - }, - { - "x":99, - "y":0 - }, - { - "x":100, - "y":0 - }, - { - "x":101, - "y":0 - }, - { - "x":102, - "y":0 - }, - { - "x":103, - "y":0 - }, - { - "x":104, - "y":0 - }, - { - "x":105, - "y":0 - }, - { - "x":106, - "y":0 - }, - { - "x":107, - "y":0 - }, - { - "x":108, - "y":0 - }, - { - "x":109, - "y":0 - }, - { - "x":110, - "y":0 - }, - { - "x":111, - "y":0 - }, - { - "x":112, - "y":0 - }, - { - "x":113, - "y":0 - }, - { - "x":114, - "y":0 - }, - { - "x":115, - "y":0 - }, - { - "x":116, - "y":0 - }, - { - "x":117, - "y":0 - }, - { - "x":118, - "y":0 - }, - { - "x":119, - "y":0 - }, - { - "x":120, - "y":0 - }, - { - "x":121, - "y":0 - }, - { - "x":122, - "y":0 - }, - { - "x":123, - "y":0 - }, - { - "x":124, - "y":0 - }, - { - "x":125, - "y":0 - }, - { - "x":126, - "y":0 - }, - { - "x":127, - "y":0 - }, - { - "x":128, - "y":0 - }, - { - "x":129, - "y":0 - }, - { - "x":130, - "y":0 - }, - { - "x":131, - "y":0 - }, - { - "x":132, - "y":0 - }, - { - "x":133, - "y":0 - }, - { - "x":134, - "y":0 - }, - { - "x":135, - "y":0 - }, - { - "x":136, - "y":0 - }, - { - "x":137, - "y":0 - }, - { - "x":138, - "y":0 - }, - { - "x":139, - "y":0 - }, - { - "x":140, - "y":0 - }, - { - "x":141, - "y":0 - }, - { - "x":142, - "y":0 - }, - { - "x":143, - "y":0 - }, - { - "x":144, - "y":0 - }, - { - "x":145, - "y":0 - }, - { - "x":146, - "y":0 - }, - { - "x":147, - "y":0 - }, - { - "x":148, - "y":0 - }, - { - "x":149, - "y":0 - }, - { - "x":150, - "y":0 - }, - { - "x":151, - "y":0 - }, - { - "x":152, - "y":0 - }, - { - "x":153, - "y":0 - }, - { - "x":154, - "y":0 - }, - { - "x":155, - "y":0 - }, - { - "x":156, - "y":0 - }, - { - "x":157, - "y":0 - }, - { - "x":158, - "y":0 - }, - { - "x":159, - "y":0 - }, - { - "x":160, - "y":0 - }, - { - "x":161, - "y":0 - }, - { - "x":162, - "y":0 - }, - { - "x":163, - "y":0 - }, - { - "x":164, - "y":0 - }, - { - "x":165, - "y":0 - }, - { - "x":166, - "y":0 - }, - { - "x":167, - "y":0 - }, - { - "x":168, - "y":0 - }, - { - "x":169, - "y":0 - }, - { - "x":170, - "y":0 - }, - { - "x":171, - "y":0 - }, - { - "x":172, - "y":0 - }, - { - "x":173, - "y":0 - }, - { - "x":174, - "y":0 - }, - { - "x":175, - "y":0 - }, - { - "x":176, - "y":0 - }, - { - "x":177, - "y":0 - }, - { - "x":178, - "y":0 - }, - { - "x":179, - "y":0 - }, - { - "x":180, - "y":0 - }, - { - "x":181, - "y":0 - }, - { - "x":182, - "y":0 - }, - { - "x":183, - "y":0 - }, - { - "x":184, - "y":0 - }, - { - "x":185, - "y":0 - }, - { - "x":186, - "y":0 - }, - { - "x":187, - "y":0 - }, - { - "x":188, - "y":0 - }, - { - "x":189, - "y":0 - }, - { - "x":190, - "y":0 - }, - { - "x":191, - "y":0 - }, - { - "x":192, - "y":0 - }, - { - "x":193, - "y":0 - }, - { - "x":194, - "y":0 - }, - { - "x":195, - "y":0 - }, - { - "x":196, - "y":0 - }, - { - "x":197, - "y":0 - }, - { - "x":198, - "y":0 - }, - { - "x":199, - "y":0 - }, - { - "x":200, - "y":0 - }, - { - "x":201, - "y":0 - }, - { - "x":202, - "y":0 - }, - { - "x":203, - "y":0 - }, - { - "x":204, - "y":0 - }, - { - "x":205, - "y":0 - }, - { - "x":206, - "y":0 - }, - { - "x":207, - "y":0 - }, - { - "x":208, - "y":0 - }, - { - "x":209, - "y":0 - }, - { - "x":210, - "y":0 - }, - { - "x":211, - "y":0 - }, - { - "x":212, - "y":0 - }, - { - "x":213, - "y":0 - }, - { - "x":214, - "y":0 - }, - { - "x":215, - "y":0 - }, - { - "x":216, - "y":0 - }, - { - "x":217, - "y":0 - }, - { - "x":218, - "y":0 - }, - { - "x":219, - "y":0 - }, - { - "x":220, - "y":0 - }, - { - "x":221, - "y":0 - }, - { - "x":222, - "y":0 - }, - { - "x":223, - "y":0 - }, - { - "x":224, - "y":0 - }, - { - "x":225, - "y":0 - }, - { - "x":226, - "y":0 - }, - { - "x":227, - "y":0 - }, - { - "x":228, - "y":0 - }, - { - "x":229, - "y":0 - }, - { - "x":230, - "y":0 - }, - { - "x":231, - "y":0 - }, - { - "x":232, - "y":0 - }, - { - "x":233, - "y":0 - }, - { - "x":234, - "y":0 - }, - { - "x":235, - "y":0 - }, - { - "x":236, - "y":0 - }, - { - "x":237, - "y":0 - }, - { - "x":238, - "y":0 - }, - { - "x":239, - "y":0 - }, - { - "x":240, - "y":0 - }, - { - "x":241, - "y":0 - }, - { - "x":242, - "y":0 - }, - { - "x":243, - "y":0 - }, - { - "x":244, - "y":0 - }, - { - "x":245, - "y":0 - }, - { - "x":246, - "y":0 - }, - { - "x":247, - "y":0 - }, - { - "x":248, - "y":0 - }, - { - "x":249, - "y":0 - }, - { - "x":250, - "y":0 - }, - { - "x":251, - "y":0 - }, - { - "x":252, - "y":0 - }, - { - "x":253, - "y":0 - }, - { - "x":254, - "y":0 - }, - { - "x":255, - "y":0 - }, - { - "x":256, - "y":0 - }, - { - "x":257, - "y":0 - }, - { - "x":258, - "y":0 - }, - { - "x":259, - "y":0 - }, - { - "x":260, - "y":0 - }, - { - "x":261, - "y":0 - }, - { - "x":262, - "y":1 - }, - { - "x":263, - "y":1 - }, - { - "x":264, - "y":1 - }, - { - "x":265, - "y":1 - }, - { - "x":266, - "y":1 - }, - { - "x":267, - "y":1 - }, - { - "x":268, - "y":1 - }, - { - "x":269, - "y":1 - }, - { - "x":270, - "y":1 - }, - { - "x":271, - "y":1 - }, - { - "x":272, - "y":1 - }, - { - "x":273, - "y":1 - }, - { - "x":274, - "y":1 - }, - { - "x":275, - "y":1 - }, - { - "x":276, - "y":1 - }, - { - "x":277, - "y":1 - }, - { - "x":278, - "y":1 - }, - { - "x":279, - "y":1 - }, - { - "x":280, - "y":1 - }, - { - "x":281, - "y":1 - }, - { - "x":282, - "y":1 - }, - { - "x":283, - "y":1 - }, - { - "x":284, - "y":1 - }, - { - "x":285, - "y":1 - }, - { - "x":286, - "y":1 - }, - { - "x":287, - "y":1 - }, - { - "x":288, - "y":1 - }, - { - "x":289, - "y":1 - }, - { - "x":290, - "y":1 - }, - { - "x":291, - "y":1 - }, - { - "x":292, - "y":1 - }, - { - "x":293, - "y":1 - }, - { - "x":294, - "y":1 - }, - { - "x":295, - "y":1 - }, - { - "x":296, - "y":1 - }, - { - "x":297, - "y":1 - }, - { - "x":298, - "y":1 - }, - { - "x":299, - "y":1 - }, - { - "x":300, - "y":1 - }, - { - "x":301, - "y":1 - }, - { - "x":302, - "y":1 - }, - { - "x":303, - "y":1 - }, - { - "x":304, - "y":1 - }, - { - "x":305, - "y":1 - }, - { - "x":306, - "y":1 - }, - { - "x":307, - "y":1 - }, - { - "x":308, - "y":1 - }, - { - "x":309, - "y":1 - }, - { - "x":310, - "y":1 - }, - { - "x":311, - "y":1 - }, - { - "x":312, - "y":1 - }, - { - "x":313, - "y":1 - }, - { - "x":314, - "y":1 - }, - { - "x":315, - "y":1 - }, - { - "x":316, - "y":1 - }, - { - "x":317, - "y":1 - }, - { - "x":318, - "y":1 - }, - { - "x":319, - "y":1 - }, - { - "x":320, - "y":1 - }, - { - "x":321, - "y":1 - }, - { - "x":322, - "y":1 - }, - { - "x":323, - "y":1 - }, - { - "x":324, - "y":1 - }, - { - "x":325, - "y":1 - }, - { - "x":326, - "y":1 - }, - { - "x":327, - "y":1 - }, - { - "x":328, - "y":1 - }, - { - "x":329, - "y":1 - }, - { - "x":330, - "y":1 - }, - { - "x":331, - "y":1 - }, - { - "x":332, - "y":1 - }, - { - "x":333, - "y":1 - }, - { - "x":334, - "y":1 - }, - { - "x":335, - "y":1 - }, - { - "x":336, - "y":1 - }, - { - "x":337, - "y":1 - }, - { - "x":338, - "y":1 - }, - { - "x":339, - "y":1 - }, - { - "x":340, - "y":1 - }, - { - "x":341, - "y":1 - }, - { - "x":342, - "y":1 - }, - { - "x":343, - "y":1 - }, - { - "x":344, - "y":1 - }, - { - "x":345, - "y":1 - }, - { - "x":346, - "y":1 - }, - { - "x":347, - "y":1 - }, - { - "x":348, - "y":1 - }, - { - "x":349, - "y":1 - }, - { - "x":350, - "y":1 - }, - { - "x":351, - "y":1 - }, - { - "x":352, - "y":1 - }, - { - "x":353, - "y":1 - }, - { - "x":354, - "y":1 - }, - { - "x":355, - "y":1 - }, - { - "x":356, - "y":1 - }, - { - "x":357, - "y":1 - }, - { - "x":358, - "y":1 - }, - { - "x":359, - "y":1 - }, - { - "x":360, - "y":1 - }, - { - "x":361, - "y":1 - }, - { - "x":362, - "y":1 - }, - { - "x":363, - "y":1 - }, - { - "x":364, - "y":1 - }, - { - "x":365, - "y":1 - }, - { - "x":366, - "y":1 - }, - { - "x":367, - "y":1 - }, - { - "x":368, - "y":1 - }, - { - "x":369, - "y":1 - }, - { - "x":370, - "y":1 - }, - { - "x":371, - "y":1 - }, - { - "x":372, - "y":1 - }, - { - "x":373, - "y":1 - }, - { - "x":374, - "y":1 - }, - { - "x":375, - "y":0 - }, - { - "x":376, - "y":0 - }, - { - "x":377, - "y":0 - }, - { - "x":378, - "y":0 - }, - { - "x":379, - "y":0 - }, - { - "x":380, - "y":0 - }, - { - "x":381, - "y":0 - }, - { - "x":382, - "y":0 - }, - { - "x":383, - "y":0 - }, - { - "x":384, - "y":0 - }, - { - "x":385, - "y":0 - }, - { - "x":386, - "y":0 - }, - { - "x":387, - "y":0 - }, - { - "x":388, - "y":0 - }, - { - "x":389, - "y":0 - }, - { - "x":390, - "y":0 - }, - { - "x":391, - "y":0 - }, - { - "x":392, - "y":0 - }, - { - "x":393, - "y":0 - }, - { - "x":394, - "y":0 - }, - { - "x":395, - "y":0 - }, - { - "x":396, - "y":0 - }, - { - "x":397, - "y":0 - }, - { - "x":398, - "y":0 - }, - { - "x":399, - "y":0 - }, - { - "x":400, - "y":0 - }, - { - "x":401, - "y":0 - }, - { - "x":402, - "y":0 - }, - { - "x":403, - "y":0 - }, - { - "x":404, - "y":0 - }, - { - "x":405, - "y":0 - }, - { - "x":406, - "y":0 - }, - { - "x":407, - "y":0 - }, - { - "x":408, - "y":0 - }, - { - "x":409, - "y":0 - }, - { - "x":410, - "y":0 - }, - { - "x":411, - "y":0 - }, - { - "x":412, - "y":0 - }, - { - "x":413, - "y":0 - }, - { - "x":414, - "y":0 - }, - { - "x":415, - "y":0 - }, - { - "x":416, - "y":0 - }, - { - "x":417, - "y":0 - }, - { - "x":418, - "y":0 - }, - { - "x":419, - "y":0 - }, - { - "x":420, - "y":0 - }, - { - "x":421, - "y":0 - }, - { - "x":422, - "y":0 - }, - { - "x":423, - "y":0 - }, - { - "x":424, - "y":0 - }, - { - "x":425, - "y":0 - }, - { - "x":426, - "y":0 - }, - { - "x":427, - "y":0 - }, - { - "x":428, - "y":0 - }, - { - "x":429, - "y":0 - }, - { - "x":430, - "y":0 - }, - { - "x":431, - "y":0 - }, - { - "x":432, - "y":0 - }, - { - "x":433, - "y":0 - }, - { - "x":434, - "y":0 - }, - { - "x":435, - "y":0 - }, - { - "x":436, - "y":0 - }, - { - "x":437, - "y":0 - }, - { - "x":438, - "y":0 - }, - { - "x":439, - "y":0 - }, - { - "x":440, - "y":0 - }, - { - "x":441, - "y":0 - }, - { - "x":442, - "y":0 - }, - { - "x":443, - "y":0 - }, - { - "x":444, - "y":0 - }, - { - "x":445, - "y":0 - }, - { - "x":446, - "y":0 - }, - { - "x":447, - "y":0 - }, - { - "x":448, - "y":0 - }, - { - "x":449, - "y":0 - }, - { - "x":450, - "y":0 - }, - { - "x":451, - "y":0 - }, - { - "x":452, - "y":0 - }, - { - "x":453, - "y":0 - }, - { - "x":454, - "y":0 - }, - { - "x":455, - "y":0 - }, - { - "x":456, - "y":0 - }, - { - "x":457, - "y":0 - }, - { - "x":458, - "y":0 - }, - { - "x":459, - "y":0 - }, - { - "x":460, - "y":0 - }, - { - "x":461, - "y":0 - }, - { - "x":462, - "y":0 - }, - { - "x":463, - "y":0 - }, - { - "x":464, - "y":0 - }, - { - "x":465, - "y":0 - }, - { - "x":466, - "y":0 - }, - { - "x":467, - "y":0 - }, - { - "x":468, - "y":0 - }, - { - "x":469, - "y":0 - }, - { - "x":470, - "y":0 - }, - { - "x":471, - "y":0 - }, - { - "x":472, - "y":0 - }, - { - "x":473, - "y":0 - }, - { - "x":474, - "y":0 - }, - { - "x":475, - "y":0 - }, - { - "x":476, - "y":0 - }, - { - "x":477, - "y":0 - }, - { - "x":478, - "y":0 - }, - { - "x":479, - "y":0 - }, - { - "x":480, - "y":0 - }, - { - "x":481, - "y":0 - }, - { - "x":482, - "y":0 - }, - { - "x":483, - "y":0 - }, - { - "x":484, - "y":0 - }, - { - "x":485, - "y":0 - }, - { - "x":486, - "y":0 - }, - { - "x":487, - "y":0 - }, - { - "x":488, - "y":0 - }, - { - "x":489, - "y":0 - }, - { - "x":490, - "y":0 - }, - { - "x":491, - "y":0 - }, - { - "x":492, - "y":0 - }, - { - "x":493, - "y":0 - }, - { - "x":494, - "y":0 - }, - { - "x":495, - "y":0 - }, - { - "x":496, - "y":0 - }, - { - "x":497, - "y":0 - }, - { - "x":498, - "y":0 - }, - { - "x":499, - "y":0 - } - ], - [ - { - "x":0, - "y":0 - }, - { - "x":1, - "y":0 - }, - { - "x":2, - "y":0 - }, - { - "x":3, - "y":0 - }, - { - "x":4, - "y":0 - }, - { - "x":5, - "y":0 - }, - { - "x":6, - "y":0 - }, - { - "x":7, - "y":0 - }, - { - "x":8, - "y":0 - }, - { - "x":9, - "y":0 - }, - { - "x":10, - "y":0 - }, - { - "x":11, - "y":0 - }, - { - "x":12, - "y":0 - }, - { - "x":13, - "y":0 - }, - { - "x":14, - "y":0 - }, - { - "x":15, - "y":0 - }, - { - "x":16, - "y":0 - }, - { - "x":17, - "y":0 - }, - { - "x":18, - "y":0 - }, - { - "x":19, - "y":0 - }, - { - "x":20, - "y":0 - }, - { - "x":21, - "y":0 - }, - { - "x":22, - "y":0 - }, - { - "x":23, - "y":0 - }, - { - "x":24, - "y":0 - }, - { - "x":25, - "y":0 - }, - { - "x":26, - "y":0 - }, - { - "x":27, - "y":0 - }, - { - "x":28, - "y":0 - }, - { - "x":29, - "y":0 - }, - { - "x":30, - "y":0 - }, - { - "x":31, - "y":0 - }, - { - "x":32, - "y":0 - }, - { - "x":33, - "y":0 - }, - { - "x":34, - "y":0 - }, - { - "x":35, - "y":0 - }, - { - "x":36, - "y":0 - }, - { - "x":37, - "y":0 - }, - { - "x":38, - "y":0 - }, - { - "x":39, - "y":0 - }, - { - "x":40, - "y":0 - }, - { - "x":41, - "y":0 - }, - { - "x":42, - "y":0 - }, - { - "x":43, - "y":0 - }, - { - "x":44, - "y":0 - }, - { - "x":45, - "y":0 - }, - { - "x":46, - "y":0 - }, - { - "x":47, - "y":0 - }, - { - "x":48, - "y":0 - }, - { - "x":49, - "y":0 - }, - { - "x":50, - "y":0 - }, - { - "x":51, - "y":0 - }, - { - "x":52, - "y":0 - }, - { - "x":53, - "y":0 - }, - { - "x":54, - "y":0 - }, - { - "x":55, - "y":0 - }, - { - "x":56, - "y":0 - }, - { - "x":57, - "y":0 - }, - { - "x":58, - "y":0 - }, - { - "x":59, - "y":0 - }, - { - "x":60, - "y":0 - }, - { - "x":61, - "y":0 - }, - { - "x":62, - "y":0 - }, - { - "x":63, - "y":0 - }, - { - "x":64, - "y":0 - }, - { - "x":65, - "y":0 - }, - { - "x":66, - "y":0 - }, - { - "x":67, - "y":0 - }, - { - "x":68, - "y":0 - }, - { - "x":69, - "y":0 - }, - { - "x":70, - "y":0 - }, - { - "x":71, - "y":0 - }, - { - "x":72, - "y":0 - }, - { - "x":73, - "y":0 - }, - { - "x":74, - "y":0 - }, - { - "x":75, - "y":0 - }, - { - "x":76, - "y":0 - }, - { - "x":77, - "y":0 - }, - { - "x":78, - "y":0 - }, - { - "x":79, - "y":0 - }, - { - "x":80, - "y":0 - }, - { - "x":81, - "y":0 - }, - { - "x":82, - "y":0 - }, - { - "x":83, - "y":0 - }, - { - "x":84, - "y":0 - }, - { - "x":85, - "y":0 - }, - { - "x":86, - "y":0 - }, - { - "x":87, - "y":0 - }, - { - "x":88, - "y":0 - }, - { - "x":89, - "y":0 - }, - { - "x":90, - "y":0 - }, - { - "x":91, - "y":0 - }, - { - "x":92, - "y":0 - }, - { - "x":93, - "y":0 - }, - { - "x":94, - "y":0 - }, - { - "x":95, - "y":0 - }, - { - "x":96, - "y":0 - }, - { - "x":97, - "y":0 - }, - { - "x":98, - "y":0 - }, - { - "x":99, - "y":0 - }, - { - "x":100, - "y":0 - }, - { - "x":101, - "y":0 - }, - { - "x":102, - "y":0 - }, - { - "x":103, - "y":0 - }, - { - "x":104, - "y":0 - }, - { - "x":105, - "y":0 - }, - { - "x":106, - "y":0 - }, - { - "x":107, - "y":0 - }, - { - "x":108, - "y":0 - }, - { - "x":109, - "y":0 - }, - { - "x":110, - "y":0 - }, - { - "x":111, - "y":0 - }, - { - "x":112, - "y":0 - }, - { - "x":113, - "y":0 - }, - { - "x":114, - "y":0 - }, - { - "x":115, - "y":0 - }, - { - "x":116, - "y":0 - }, - { - "x":117, - "y":0 - }, - { - "x":118, - "y":0 - }, - { - "x":119, - "y":0 - }, - { - "x":120, - "y":0 - }, - { - "x":121, - "y":0 - }, - { - "x":122, - "y":0 - }, - { - "x":123, - "y":0 - }, - { - "x":124, - "y":0 - }, - { - "x":125, - "y":0 - }, - { - "x":126, - "y":0 - }, - { - "x":127, - "y":0 - }, - { - "x":128, - "y":0 - }, - { - "x":129, - "y":0 - }, - { - "x":130, - "y":0 - }, - { - "x":131, - "y":0 - }, - { - "x":132, - "y":0 - }, - { - "x":133, - "y":0 - }, - { - "x":134, - "y":0 - }, - { - "x":135, - "y":0 - }, - { - "x":136, - "y":0 - }, - { - "x":137, - "y":0 - }, - { - "x":138, - "y":0 - }, - { - "x":139, - "y":0 - }, - { - "x":140, - "y":0 - }, - { - "x":141, - "y":0 - }, - { - "x":142, - "y":0 - }, - { - "x":143, - "y":0 - }, - { - "x":144, - "y":0 - }, - { - "x":145, - "y":0 - }, - { - "x":146, - "y":0 - }, - { - "x":147, - "y":0 - }, - { - "x":148, - "y":0 - }, - { - "x":149, - "y":0 - }, - { - "x":150, - "y":0 - }, - { - "x":151, - "y":0 - }, - { - "x":152, - "y":0 - }, - { - "x":153, - "y":0 - }, - { - "x":154, - "y":0 - }, - { - "x":155, - "y":0 - }, - { - "x":156, - "y":0 - }, - { - "x":157, - "y":0 - }, - { - "x":158, - "y":0 - }, - { - "x":159, - "y":0 - }, - { - "x":160, - "y":0 - }, - { - "x":161, - "y":0 - }, - { - "x":162, - "y":0 - }, - { - "x":163, - "y":0 - }, - { - "x":164, - "y":0 - }, - { - "x":165, - "y":0 - }, - { - "x":166, - "y":0 - }, - { - "x":167, - "y":0 - }, - { - "x":168, - "y":0 - }, - { - "x":169, - "y":0 - }, - { - "x":170, - "y":0 - }, - { - "x":171, - "y":0 - }, - { - "x":172, - "y":0 - }, - { - "x":173, - "y":0 - }, - { - "x":174, - "y":0 - }, - { - "x":175, - "y":0 - }, - { - "x":176, - "y":0 - }, - { - "x":177, - "y":0 - }, - { - "x":178, - "y":0 - }, - { - "x":179, - "y":0 - }, - { - "x":180, - "y":0 - }, - { - "x":181, - "y":0 - }, - { - "x":182, - "y":0 - }, - { - "x":183, - "y":0 - }, - { - "x":184, - "y":0 - }, - { - "x":185, - "y":0 - }, - { - "x":186, - "y":0 - }, - { - "x":187, - "y":0 - }, - { - "x":188, - "y":0 - }, - { - "x":189, - "y":0 - }, - { - "x":190, - "y":0 - }, - { - "x":191, - "y":0 - }, - { - "x":192, - "y":0 - }, - { - "x":193, - "y":0 - }, - { - "x":194, - "y":0 - }, - { - "x":195, - "y":0 - }, - { - "x":196, - "y":0 - }, - { - "x":197, - "y":0 - }, - { - "x":198, - "y":0 - }, - { - "x":199, - "y":0 - }, - { - "x":200, - "y":0 - }, - { - "x":201, - "y":0 - }, - { - "x":202, - "y":0 - }, - { - "x":203, - "y":0 - }, - { - "x":204, - "y":0 - }, - { - "x":205, - "y":0 - }, - { - "x":206, - "y":0 - }, - { - "x":207, - "y":0 - }, - { - "x":208, - "y":0 - }, - { - "x":209, - "y":0 - }, - { - "x":210, - "y":0 - }, - { - "x":211, - "y":0 - }, - { - "x":212, - "y":0 - }, - { - "x":213, - "y":0 - }, - { - "x":214, - "y":0 - }, - { - "x":215, - "y":0 - }, - { - "x":216, - "y":0 - }, - { - "x":217, - "y":0 - }, - { - "x":218, - "y":0 - }, - { - "x":219, - "y":0 - }, - { - "x":220, - "y":0 - }, - { - "x":221, - "y":0 - }, - { - "x":222, - "y":0 - }, - { - "x":223, - "y":0 - }, - { - "x":224, - "y":0 - }, - { - "x":225, - "y":0 - }, - { - "x":226, - "y":0 - }, - { - "x":227, - "y":0 - }, - { - "x":228, - "y":0 - }, - { - "x":229, - "y":0 - }, - { - "x":230, - "y":0 - }, - { - "x":231, - "y":0 - }, - { - "x":232, - "y":0 - }, - { - "x":233, - "y":0 - }, - { - "x":234, - "y":0 - }, - { - "x":235, - "y":0 - }, - { - "x":236, - "y":0 - }, - { - "x":237, - "y":0 - }, - { - "x":238, - "y":0 - }, - { - "x":239, - "y":0 - }, - { - "x":240, - "y":0 - }, - { - "x":241, - "y":0 - }, - { - "x":242, - "y":0 - }, - { - "x":243, - "y":0 - }, - { - "x":244, - "y":0 - }, - { - "x":245, - "y":0 - }, - { - "x":246, - "y":0 - }, - { - "x":247, - "y":0 - }, - { - "x":248, - "y":0 - }, - { - "x":249, - "y":0 - }, - { - "x":250, - "y":0 - }, - { - "x":251, - "y":0 - }, - { - "x":252, - "y":0 - }, - { - "x":253, - "y":0 - }, - { - "x":254, - "y":0 - }, - { - "x":255, - "y":0 - }, - { - "x":256, - "y":0 - }, - { - "x":257, - "y":0 - }, - { - "x":258, - "y":0 - }, - { - "x":259, - "y":0 - }, - { - "x":260, - "y":0 - }, - { - "x":261, - "y":0 - }, - { - "x":262, - "y":0 - }, - { - "x":263, - "y":0 - }, - { - "x":264, - "y":0 - }, - { - "x":265, - "y":0 - }, - { - "x":266, - "y":0 - }, - { - "x":267, - "y":0 - }, - { - "x":268, - "y":0 - }, - { - "x":269, - "y":0 - }, - { - "x":270, - "y":0 - }, - { - "x":271, - "y":0 - }, - { - "x":272, - "y":0 - }, - { - "x":273, - "y":0 - }, - { - "x":274, - "y":0 - }, - { - "x":275, - "y":0 - }, - { - "x":276, - "y":0 - }, - { - "x":277, - "y":0 - }, - { - "x":278, - "y":0 - }, - { - "x":279, - "y":0 - }, - { - "x":280, - "y":0 - }, - { - "x":281, - "y":0 - }, - { - "x":282, - "y":0 - }, - { - "x":283, - "y":0 - }, - { - "x":284, - "y":0 - }, - { - "x":285, - "y":0 - }, - { - "x":286, - "y":0 - }, - { - "x":287, - "y":0 - }, - { - "x":288, - "y":0 - }, - { - "x":289, - "y":0 - }, - { - "x":290, - "y":0 - }, - { - "x":291, - "y":0 - }, - { - "x":292, - "y":0 - }, - { - "x":293, - "y":0 - }, - { - "x":294, - "y":0 - }, - { - "x":295, - "y":0 - }, - { - "x":296, - "y":0 - }, - { - "x":297, - "y":0 - }, - { - "x":298, - "y":0 - }, - { - "x":299, - "y":0 - }, - { - "x":300, - "y":0 - }, - { - "x":301, - "y":0 - }, - { - "x":302, - "y":0 - }, - { - "x":303, - "y":0 - }, - { - "x":304, - "y":0 - }, - { - "x":305, - "y":0 - }, - { - "x":306, - "y":0 - }, - { - "x":307, - "y":0 - }, - { - "x":308, - "y":0 - }, - { - "x":309, - "y":0 - }, - { - "x":310, - "y":0 - }, - { - "x":311, - "y":0 - }, - { - "x":312, - "y":0 - }, - { - "x":313, - "y":0 - }, - { - "x":314, - "y":0 - }, - { - "x":315, - "y":0 - }, - { - "x":316, - "y":0 - }, - { - "x":317, - "y":0 - }, - { - "x":318, - "y":0 - }, - { - "x":319, - "y":0 - }, - { - "x":320, - "y":0 - }, - { - "x":321, - "y":0 - }, - { - "x":322, - "y":0 - }, - { - "x":323, - "y":0 - }, - { - "x":324, - "y":0 - }, - { - "x":325, - "y":0 - }, - { - "x":326, - "y":0 - }, - { - "x":327, - "y":0 - }, - { - "x":328, - "y":0 - }, - { - "x":329, - "y":0 - }, - { - "x":330, - "y":0 - }, - { - "x":331, - "y":0 - }, - { - "x":332, - "y":0 - }, - { - "x":333, - "y":0 - }, - { - "x":334, - "y":0 - }, - { - "x":335, - "y":0 - }, - { - "x":336, - "y":0 - }, - { - "x":337, - "y":0 - }, - { - "x":338, - "y":0 - }, - { - "x":339, - "y":0 - }, - { - "x":340, - "y":0 - }, - { - "x":341, - "y":0 - }, - { - "x":342, - "y":0 - }, - { - "x":343, - "y":0 - }, - { - "x":344, - "y":0 - }, - { - "x":345, - "y":0 - }, - { - "x":346, - "y":0 - }, - { - "x":347, - "y":0 - }, - { - "x":348, - "y":0 - }, - { - "x":349, - "y":0 - }, - { - "x":350, - "y":0 - }, - { - "x":351, - "y":0 - }, - { - "x":352, - "y":0 - }, - { - "x":353, - "y":0 - }, - { - "x":354, - "y":0 - }, - { - "x":355, - "y":0 - }, - { - "x":356, - "y":0 - }, - { - "x":357, - "y":0 - }, - { - "x":358, - "y":0 - }, - { - "x":359, - "y":0 - }, - { - "x":360, - "y":0 - }, - { - "x":361, - "y":0 - }, - { - "x":362, - "y":0 - }, - { - "x":363, - "y":0 - }, - { - "x":364, - "y":0 - }, - { - "x":365, - "y":0 - }, - { - "x":366, - "y":0 - }, - { - "x":367, - "y":0 - }, - { - "x":368, - "y":0 - }, - { - "x":369, - "y":0 - }, - { - "x":370, - "y":0 - }, - { - "x":371, - "y":0 - }, - { - "x":372, - "y":0 - }, - { - "x":373, - "y":0 - }, - { - "x":374, - "y":0 - }, - { - "x":375, - "y":1 - }, - { - "x":376, - "y":1 - }, - { - "x":377, - "y":1 - }, - { - "x":378, - "y":1 - }, - { - "x":379, - "y":1 - }, - { - "x":380, - "y":1 - }, - { - "x":381, - "y":1 - }, - { - "x":382, - "y":1 - }, - { - "x":383, - "y":1 - }, - { - "x":384, - "y":1 - }, - { - "x":385, - "y":1 - }, - { - "x":386, - "y":1 - }, - { - "x":387, - "y":1 - }, - { - "x":388, - "y":1 - }, - { - "x":389, - "y":1 - }, - { - "x":390, - "y":1 - }, - { - "x":391, - "y":1 - }, - { - "x":392, - "y":1 - }, - { - "x":393, - "y":1 - }, - { - "x":394, - "y":1 - }, - { - "x":395, - "y":1 - }, - { - "x":396, - "y":1 - }, - { - "x":397, - "y":1 - }, - { - "x":398, - "y":1 - }, - { - "x":399, - "y":1 - }, - { - "x":400, - "y":1 - }, - { - "x":401, - "y":1 - }, - { - "x":402, - "y":1 - }, - { - "x":403, - "y":1 - }, - { - "x":404, - "y":1 - }, - { - "x":405, - "y":1 - }, - { - "x":406, - "y":1 - }, - { - "x":407, - "y":1 - }, - { - "x":408, - "y":1 - }, - { - "x":409, - "y":1 - }, - { - "x":410, - "y":1 - }, - { - "x":411, - "y":1 - }, - { - "x":412, - "y":1 - }, - { - "x":413, - "y":1 - }, - { - "x":414, - "y":0 - }, - { - "x":415, - "y":0 - }, - { - "x":416, - "y":0 - }, - { - "x":417, - "y":0 - }, - { - "x":418, - "y":0 - }, - { - "x":419, - "y":0 - }, - { - "x":420, - "y":0 - }, - { - "x":421, - "y":0 - }, - { - "x":422, - "y":0 - }, - { - "x":423, - "y":0 - }, - { - "x":424, - "y":0 - }, - { - "x":425, - "y":0 - }, - { - "x":426, - "y":0 - }, - { - "x":427, - "y":0 - }, - { - "x":428, - "y":0 - }, - { - "x":429, - "y":0 - }, - { - "x":430, - "y":0 - }, - { - "x":431, - "y":0 - }, - { - "x":432, - "y":0 - }, - { - "x":433, - "y":0 - }, - { - "x":434, - "y":0 - }, - { - "x":435, - "y":0 - }, - { - "x":436, - "y":0 - }, - { - "x":437, - "y":0 - }, - { - "x":438, - "y":0 - }, - { - "x":439, - "y":0 - }, - { - "x":440, - "y":0 - }, - { - "x":441, - "y":0 - }, - { - "x":442, - "y":0 - }, - { - "x":443, - "y":0 - }, - { - "x":444, - "y":0 - }, - { - "x":445, - "y":0 - }, - { - "x":446, - "y":0 - }, - { - "x":447, - "y":0 - }, - { - "x":448, - "y":0 - }, - { - "x":449, - "y":0 - }, - { - "x":450, - "y":0 - }, - { - "x":451, - "y":0 - }, - { - "x":452, - "y":0 - }, - { - "x":453, - "y":0 - }, - { - "x":454, - "y":0 - }, - { - "x":455, - "y":0 - }, - { - "x":456, - "y":0 - }, - { - "x":457, - "y":0 - }, - { - "x":458, - "y":0 - }, - { - "x":459, - "y":0 - }, - { - "x":460, - "y":0 - }, - { - "x":461, - "y":0 - }, - { - "x":462, - "y":0 - }, - { - "x":463, - "y":0 - }, - { - "x":464, - "y":0 - }, - { - "x":465, - "y":0 - }, - { - "x":466, - "y":0 - }, - { - "x":467, - "y":0 - }, - { - "x":468, - "y":0 - }, - { - "x":469, - "y":0 - }, - { - "x":470, - "y":0 - }, - { - "x":471, - "y":0 - }, - { - "x":472, - "y":0 - }, - { - "x":473, - "y":0 - }, - { - "x":474, - "y":0 - }, - { - "x":475, - "y":0 - }, - { - "x":476, - "y":0 - }, - { - "x":477, - "y":0 - }, - { - "x":478, - "y":0 - }, - { - "x":479, - "y":0 - }, - { - "x":480, - "y":0 - }, - { - "x":481, - "y":0 - }, - { - "x":482, - "y":0 - }, - { - "x":483, - "y":0 - }, - { - "x":484, - "y":0 - }, - { - "x":485, - "y":0 - }, - { - "x":486, - "y":0 - }, - { - "x":487, - "y":0 - }, - { - "x":488, - "y":0 - }, - { - "x":489, - "y":0 - }, - { - "x":490, - "y":0 - }, - { - "x":491, - "y":0 - }, - { - "x":492, - "y":0 - }, - { - "x":493, - "y":0 - }, - { - "x":494, - "y":0 - }, - { - "x":495, - "y":0 - }, - { - "x":496, - "y":0 - }, - { - "x":497, - "y":0 - }, - { - "x":498, - "y":0 - }, - { - "x":499, - "y":0 - } - ] -]}
\ No newline at end of file +{ + "map": [ + { + "x": 1349195920, + "y": 0 + }, + { + "x": 1349195924, + "y": 0 + }, + { + "x": 1349195928, + "y": 0 + }, + { + "x": 1349195932, + "y": 0 + }, + { + "x": 1349195936, + "y": 0 + }, + { + "x": 1349195940, + "y": 0 + }, + { + "x": 1349195944, + "y": 0 + }, + { + "x": 1349195948, + "y": 0 + }, + { + "x": 1349195952, + "y": 0 + }, + { + "x": 1349195956, + "y": 0 + }, + { + "x": 1349195960, + "y": 0 + }, + { + "x": 1349195964, + "y": 0 + }, + { + "x": 1349195968, + "y": 0 + }, + { + "x": 1349195972, + "y": 0 + }, + { + "x": 1349195976, + "y": 0 + }, + { + "x": 1349195980, + "y": 0 + }, + { + "x": 1349195984, + "y": 0 + }, + { + "x": 1349195988, + "y": 0 + }, + { + "x": 1349195992, + "y": 0 + }, + { + "x": 1349195996, + "y": 0 + }, + { + "x": 1349196000, + "y": 0 + }, + { + "x": 1349196004, + "y": 0 + }, + { + "x": 1349196008, + "y": 0 + }, + { + "x": 1349196012, + "y": 0 + }, + { + "x": 1349196016, + "y": 0 + }, + { + "x": 1349196020, + "y": 0 + }, + { + "x": 1349196024, + "y": 1 + }, + { + "x": 1349196028, + "y": 1 + }, + { + "x": 1349196032, + "y": 1 + }, + { + "x": 1349196036, + "y": 0 + }, + { + "x": 1349196040, + "y": 0 + }, + { + "x": 1349196044, + "y": 0 + }, + { + "x": 1349196048, + "y": 0 + }, + { + "x": 1349196052, + "y": 0 + }, + { + "x": 1349196056, + "y": 0 + }, + { + "x": 1349196060, + "y": 0 + }, + { + "x": 1349196064, + "y": 0 + }, + { + "x": 1349196068, + "y": 0 + }, + { + "x": 1349196072, + "y": 0 + }, + { + "x": 1349196076, + "y": 0 + }, + { + "x": 1349196080, + "y": 0 + }, + { + "x": 1349196084, + "y": 0 + }, + { + "x": 1349196088, + "y": 0 + }, + { + "x": 1349196092, + "y": 0 + }, + { + "x": 1349196096, + "y": 0 + }, + { + "x": 1349196100, + "y": 0 + }, + { + "x": 1349196104, + "y": 0 + }, + { + "x": 1349196108, + "y": 0 + }, + { + "x": 1349196112, + "y": 0 + }, + { + "x": 1349196116, + "y": 0 + }, + { + "x": 1349196120, + "y": 0 + }, + { + "x": 1349196124, + "y": 0 + }, + { + "x": 1349196128, + "y": 0 + }, + { + "x": 1349196132, + "y": 0 + }, + { + "x": 1349196136, + "y": 0 + }, + { + "x": 1349196140, + "y": 0 + }, + { + "x": 1349196144, + "y": 0 + }, + { + "x": 1349196148, + "y": 0 + }, + { + "x": 1349196152, + "y": 0 + }, + { + "x": 1349196156, + "y": 0 + }, + { + "x": 1349196160, + "y": 0 + } + ], + "shuffle": [ + { + "x": 1349195920, + "y": 0 + }, + { + "x": 1349195924, + "y": 0 + }, + { + "x": 1349195928, + "y": 0 + }, + { + "x": 1349195932, + "y": 0 + }, + { + "x": 1349195936, + "y": 0 + }, + { + "x": 1349195940, + "y": 0 + }, + { + "x": 1349195944, + "y": 0 + }, + { + "x": 1349195948, + "y": 0 + }, + { + "x": 1349195952, + "y": 0 + }, + { + "x": 1349195956, + "y": 0 + }, + { + "x": 1349195960, + "y": 0 + }, + { + "x": 1349195964, + "y": 0 + }, + { + "x": 1349195968, + "y": 0 + }, + { + "x": 1349195972, + "y": 0 + }, + { + "x": 1349195976, + "y": 0 + }, + { + "x": 1349195980, + "y": 0 + }, + { + "x": 1349195984, + "y": 0 + }, + { + "x": 1349195988, + "y": 0 + }, + { + "x": 1349195992, + "y": 0 + }, + { + "x": 1349195996, + "y": 0 + }, + { + "x": 1349196000, + "y": 0 + }, + { + "x": 1349196004, + "y": 0 + }, + { + "x": 1349196008, + "y": 0 + }, + { + "x": 1349196012, + "y": 0 + }, + { + "x": 1349196016, + "y": 0 + }, + { + "x": 1349196020, + "y": 0 + }, + { + "x": 1349196024, + "y": 0 + }, + { + "x": 1349196028, + "y": 0 + }, + { + "x": 1349196032, + "y": 1 + }, + { + "x": 1349196036, + "y": 2 + }, + { + "x": 1349196040, + "y": 3 + }, + { + "x": 1349196044, + "y": 3 + }, + { + "x": 1349196048, + "y": 2 + }, + { + "x": 1349196052, + "y": 2 + }, + { + "x": 1349196056, + "y": 2 + }, + { + "x": 1349196060, + "y": 2 + }, + { + "x": 1349196064, + "y": 3 + }, + { + "x": 1349196068, + "y": 3 + }, + { + "x": 1349196072, + "y": 2 + }, + { + "x": 1349196076, + "y": 2 + }, + { + "x": 1349196080, + "y": 2 + }, + { + "x": 1349196084, + "y": 2 + }, + { + "x": 1349196088, + "y": 3 + }, + { + "x": 1349196092, + "y": 2 + }, + { + "x": 1349196096, + "y": 2 + }, + { + "x": 1349196100, + "y": 2 + }, + { + "x": 1349196104, + "y": 3 + }, + { + "x": 1349196108, + "y": 2 + }, + { + "x": 1349196112, + "y": 3 + }, + { + "x": 1349196116, + "y": 2 + }, + { + "x": 1349196120, + "y": 3 + }, + { + "x": 1349196124, + "y": 3 + }, + { + "x": 1349196128, + "y": 2 + }, + { + "x": 1349196132, + "y": 3 + }, + { + "x": 1349196136, + "y": 2 + }, + { + "x": 1349196140, + "y": 2 + }, + { + "x": 1349196144, + "y": 1 + }, + { + "x": 1349196148, + "y": 1 + }, + { + "x": 1349196152, + "y": 0 + }, + { + "x": 1349196156, + "y": 0 + }, + { + "x": 1349196160, + "y": 0 + } + ], + "reduce": [ + { + "x": 1349195920, + "y": 0 + }, + { + "x": 1349195924, + "y": 0 + }, + { + "x": 1349195928, + "y": 0 + }, + { + "x": 1349195932, + "y": 0 + }, + { + "x": 1349195936, + "y": 0 + }, + { + "x": 1349195940, + "y": 0 + }, + { + "x": 1349195944, + "y": 0 + }, + { + "x": 1349195948, + "y": 0 + }, + { + "x": 1349195952, + "y": 0 + }, + { + "x": 1349195956, + "y": 0 + }, + { + "x": 1349195960, + "y": 0 + }, + { + "x": 1349195964, + "y": 0 + }, + { + "x": 1349195968, + "y": 0 + }, + { + "x": 1349195972, + "y": 0 + }, + { + "x": 1349195976, + "y": 0 + }, + { + "x": 1349195980, + "y": 0 + }, + { + "x": 1349195984, + "y": 0 + }, + { + "x": 1349195988, + "y": 0 + }, + { + "x": 1349195992, + "y": 0 + }, + { + "x": 1349195996, + "y": 0 + }, + { + "x": 1349196000, + "y": 0 + }, + { + "x": 1349196004, + "y": 0 + }, + { + "x": 1349196008, + "y": 0 + }, + { + "x": 1349196012, + "y": 0 + }, + { + "x": 1349196016, + "y": 0 + }, + { + "x": 1349196020, + "y": 0 + }, + { + "x": 1349196024, + "y": 0 + }, + { + "x": 1349196028, + "y": 0 + }, + { + "x": 1349196032, + "y": 0 + }, + { + "x": 1349196036, + "y": 0 + }, + { + "x": 1349196040, + "y": 1 + }, + { + "x": 1349196044, + "y": 2 + }, + { + "x": 1349196048, + "y": 1 + }, + { + "x": 1349196052, + "y": 2 + }, + { + "x": 1349196056, + "y": 2 + }, + { + "x": 1349196060, + "y": 1 + }, + { + "x": 1349196064, + "y": 1 + }, + { + "x": 1349196068, + "y": 2 + }, + { + "x": 1349196072, + "y": 2 + }, + { + "x": 1349196076, + "y": 1 + }, + { + "x": 1349196080, + "y": 2 + }, + { + "x": 1349196084, + "y": 1 + }, + { + "x": 1349196088, + "y": 1 + }, + { + "x": 1349196092, + "y": 2 + }, + { + "x": 1349196096, + "y": 2 + }, + { + "x": 1349196100, + "y": 1 + }, + { + "x": 1349196104, + "y": 2 + }, + { + "x": 1349196108, + "y": 1 + }, + { + "x": 1349196112, + "y": 2 + }, + { + "x": 1349196116, + "y": 1 + }, + { + "x": 1349196120, + "y": 1 + }, + { + "x": 1349196124, + "y": 2 + }, + { + "x": 1349196128, + "y": 1 + }, + { + "x": 1349196132, + "y": 2 + }, + { + "x": 1349196136, + "y": 2 + }, + { + "x": 1349196140, + "y": 2 + }, + { + "x": 1349196144, + "y": 1 + }, + { + "x": 1349196148, + "y": 1 + }, + { + "x": 1349196152, + "y": 1 + }, + { + "x": 1349196156, + "y": 0 + }, + { + "x": 1349196160, + "y": 0 + } + ] +} diff --git a/ambari-web/app/assets/data/dashboard/mapreduce/mapreduce_start.json b/ambari-web/app/assets/data/dashboard/mapreduce/mapreduce_start.json new file mode 100644 index 0000000000..ac9fd199d0 --- /dev/null +++ b/ambari-web/app/assets/data/dashboard/mapreduce/mapreduce_start.json @@ -0,0 +1,370 @@ +{ + "href" : "http://localhost:8080/api/clusters/mycluster/services?ServiceInfo/service_name=MAPREDUCE&fields=components/host_components/*", + "items" : [ + { + "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE", + "ServiceInfo" : { + "cluster_name" : "mycluster", + "service_name" : "MAPREDUCE" + }, + "components" : [ + { + "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE/components/MAPREDUCE_CLIENT", + "ServiceComponentInfo" : { + "cluster_name" : "mycluster", + "component_name" : "MAPREDUCE_CLIENT", + "service_name" : "MAPREDUCE" + }, + "host_components" : [ + { + "href" : "http://localhost:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/MAPREDUCE_CLIENT", + "HostRoles" : { + "configs" : "{}", + "cluster_name" : "mycluster", + "desired_configs" : "{}", + "desired_state" : "STARTED", + "state" : "STARTED", + "component_name" : "MAPREDUCE_CLIENT", + "host_name" : "dev.hortonworks.com" + }, + "component" : [ + { + "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE/components/MAPREDUCE_CLIENT", + "ServiceComponentInfo" : { + "cluster_name" : "mycluster", + "component_name" : "MAPREDUCE_CLIENT", + "service_name" : "MAPREDUCE" + } + } + ] + } + ] + }, + { + "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE/components/JOBTRACKER", + "ServiceComponentInfo" : { + "cluster_name" : "mycluster", + "component_name" : "JOBTRACKER", + "service_name" : "MAPREDUCE" + }, + "host_components" : [ + { + "href" : "http://localhost:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/JOBTRACKER", + "HostRoles" : { + "configs" : "{\"mapred-site\":\"version1\",\"global\":\"version1\",\"core-site\":\"version1\"}", + "cluster_name" : "mycluster", + "desired_configs" : "{}", + "desired_state" : "STARTED", + "state" : "STARTED", + "component_name" : "JOBTRACKER", + "host_name" : "dev.hortonworks.com" + }, + "metrics" : { + "boottime" : 1.353113263E9, + "process" : { + "proc_total" : 542.4, + "proc_run" : 1.04722222222 + }, + "rpc" : { + "rpcAuthorizationSuccesses" : 0.0, + "SentBytes" : 355.647619048, + "rpcAuthorizationFailures" : 0.0, + "ReceivedBytes" : 1040.35238095, + "NumOpenConnections" : 0.0, + "callQueueLen" : 0.0, + "rpcAuthenticationSuccesses" : 0.0, + "RpcQueueTime_num_ops" : 3.32380952381, + "RpcProcessingTime_num_ops" : 3.32380952381, + "RpcProcessingTime_avg_time" : 0.142915649166, + "rpcAuthenticationFailures" : 0.0, + "RpcQueueTime_avg_time" : 0.0767488298738 + }, + "ugi" : { + "loginSuccess_num_ops" : 0.0, + "loginFailure_num_ops" : 0.0, + "loginSuccess_avg_time" : 0.0, + "loginFailure_avg_time" : 0.0 + }, + "mapred" : { + "Queue" : { + "maps_killed" : 0.0, + "reduces_killed" : 0.0, + "jobs_failed" : 0.0, + "reduces_completed" : 0.0, + "running_0" : 0.0, + "reduces_failed" : 0.0, + "reserved_map_slots" : 0.0, + "jobs_completed" : 0.0, + "waiting_maps" : 0.0, + "running_1440" : 0.0, + "maps_completed" : 0.0, + "jobs_preparing" : 0.0, + "jobs_submitted" : 0.0, + "reserved_reduce_slots" : 0.0, + "jobs_running" : 0.0, + "running_300" : 0.0, + "maps_launched" : 0.0, + "reduces_launched" : 0.0, + "running_60" : 0.0, + "waiting_reduces" : 0.0, + "maps_failed" : 0.0, + "jobs_killed" : 0.0 + }, + "jobtracker" : { + "blacklisted_maps" : 0.0, + "running_maps" : 0.0, + "jobs_failed" : 0.0, + "waiting_maps" : 0.0, + "maps_completed" : 0.0, + "trackers" : 1.0, + "jobs_submitted" : 0.0, + "map_slots" : 4.0, + "reserved_reduce_slots" : 0.0, + "trackers_graylisted" : 0.0, + "heartbeats" : 3.32380952381, + "jobs_running" : 0.0, + "blacklisted_reduces" : 0.0, + "maps_launched" : 0.0, + "occupied_map_slots" : 0.0, + "reduces_launched" : 0.0, + "jobs_killed" : 0.0, + "maps_failed" : 0.0, + "maps_killed" : 0.0, + "reduce_slots" : 2.0, + "reduces_killed" : 0.0, + "reduces_completed" : 0.0, + "jobs_completed" : 0.0, + "reserved_map_slots" : 0.0, + "trackers_decommissioned" : 0.0, + "reduces_failed" : 0.0, + "trackers_blacklisted" : 0.0, + "jobs_preparing" : 0.0, + "running_reduces" : 0.0, + "occupied_reduce_slots" : 0.0, + "waiting_reduces" : 0.0 + } + }, + "disk" : { + "disk_total" : 101.515, + "disk_free" : 93.4107777778, + "part_max_used" : 12.8 + }, + "cpu" : { + "cpu_speed" : 1986.0, + "cpu_wio" : 0.510555555556, + "cpu_num" : 1.0, + "cpu_idle" : 45.9291666667, + "cpu_nice" : 0.0, + "cpu_aidle" : 0.0, + "cpu_system" : 6.88277777778, + "cpu_user" : 46.6838888889 + }, + "rpcdetailed" : { + "getJobProfile_num_ops" : 0.0, + "getStagingAreaDir_num_ops" : 0.0, + "getProtocolVersion_avg_time" : 0.0, + "getBuildVersion_avg_time" : 0.0, + "getBuildVersion_num_ops" : 0.0, + "getNewJobId_avg_time" : 0.0, + "getQueueAdmins_num_ops" : 0.0, + "getSystemDir_num_ops" : 0.0, + "getTaskCompletionEvents_num_ops" : 0.0, + "getJobProfile_avg_time" : 0.0, + "submitJob_num_ops" : 0.0, + "getStagingAreaDir_avg_time" : 2.0, + "getNewJobId_num_ops" : 0.0, + "getJobCounters_num_ops" : 0.0, + "getTaskCompletionEvents_avg_time" : 0.111111111111, + "getProtocolVersion_num_ops" : 0.0, + "submitJob_avg_time" : 312.0, + "getSystemDir_avg_time" : 0.0, + "getJobStatus_num_ops" : 0.0, + "getJobCounters_avg_time" : 0.0, + "getQueueAdmins_avg_time" : 0.0, + "heartbeat_num_ops" : 3.32380952381, + "heartbeat_avg_time" : 0.142915649166, + "getJobStatus_avg_time" : 0.0 + }, + "load" : { + "load_fifteen" : 0.8845, + "load_one" : 0.516833333333, + "load_five" : 0.740888888889 + }, + "jvm" : { + "memHeapCommittedM" : 185.1875, + "logFatal" : 0.0, + "threadsBlocked" : 0.0, + "threadsWaiting" : 19.0, + "gcCount" : 0.00277777777778, + "logWarn" : 0.0, + "logError" : 0.0, + "memNonHeapCommittedM" : 23.75, + "gcTimeMillis" : 0.641666666667, + "memNonHeapUsedM" : 23.1303326472, + "logInfo" : 0.0, + "threadsNew" : 0.0, + "memHeapUsedM" : 101.890453742, + "threadsTerminated" : 0.0, + "threadsTimedWaiting" : 10.0, + "threadsRunnable" : 6.0 + }, + "network" : { + "pkts_out" : 0.455111111111, + "bytes_in" : 50.645, + "bytes_out" : 119.762888889, + "pkts_in" : 0.411222222222 + }, + "memory" : { + "mem_total" : 2054932.0, + "swap_free" : 4074713.26667, + "mem_buffers" : 13563.6333333, + "mem_shared" : 0.0, + "mem_cached" : 175195.088889, + "mem_free" : 117578.155556, + "swap_total" : 4128760.0 + } + }, + "component" : [ + { + "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE/components/JOBTRACKER", + "ServiceComponentInfo" : { + "cluster_name" : "mycluster", + "component_name" : "JOBTRACKER", + "service_name" : "MAPREDUCE" + } + } + ] + } + ] + }, + { + "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE/components/TASKTRACKER", + "ServiceComponentInfo" : { + "cluster_name" : "mycluster", + "component_name" : "TASKTRACKER", + "service_name" : "MAPREDUCE" + }, + "host_components" : [ + { + "href" : "http://localhost:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/TASKTRACKER", + "HostRoles" : { + "configs" : "{\"mapred-site\":\"version1\",\"global\":\"version1\",\"core-site\":\"version1\"}", + "cluster_name" : "mycluster", + "desired_configs" : "{}", + "desired_state" : "STARTED", + "state" : "STARTED", + "component_name" : "TASKTRACKER", + "host_name" : "dev.hortonworks.com" + }, + "metrics" : { + "boottime" : 1.353113263E9, + "process" : { + "proc_total" : 542.625, + "proc_run" : 1.81944444444 + }, + "rpc" : { + "rpcAuthorizationSuccesses" : 7.15827882667E7, + "SentBytes" : 7.15827882667E7, + "rpcAuthorizationFailures" : 0.0, + "ReceivedBytes" : 7.15827882667E7, + "NumOpenConnections" : 0.0, + "callQueueLen" : 0.0, + "rpcAuthenticationSuccesses" : 0.0, + "RpcQueueTime_num_ops" : 7.15827882667E7, + "RpcProcessingTime_num_ops" : 7.15827882667E7, + "RpcProcessingTime_avg_time" : 0.151111111111, + "rpcAuthenticationFailures" : 0.0, + "RpcQueueTime_avg_time" : 0.151111111111 + }, + "ugi" : { + "loginSuccess_num_ops" : 0.0, + "loginFailure_num_ops" : 0.0, + "loginSuccess_avg_time" : 0.0, + "loginFailure_avg_time" : 0.0 + }, + "mapred" : { + "shuffleOutput" : { + "shuffle_handler_busy_percent" : 0.0 + }, + "tasktracker" : { + "reduces_running" : 0.0, + "maps_running" : 0.0, + "reduceTaskSlots" : 2.0, + "mapTaskSlots" : 4.0 + } + }, + "disk" : { + "disk_total" : 101.515, + "disk_free" : 93.4107777778, + "part_max_used" : 12.8 + }, + "cpu" : { + "cpu_speed" : 1986.0, + "cpu_wio" : 0.519444444444, + "cpu_num" : 1.0, + "cpu_idle" : 46.9705555556, + "cpu_nice" : 0.0, + "cpu_aidle" : 0.0, + "cpu_system" : 6.75972222222, + "cpu_user" : 45.7563888889 + }, + "rpcdetailed" : { + "getProtocolVersion_avg_time" : 0.0, + "getProtocolVersion_num_ops" : 4 + }, + "load" : { + "load_fifteen" : 0.882305555556, + "load_one" : 0.523944444444, + "load_five" : 0.739694444444 + }, + "jvm" : { + "memHeapCommittedM" : 30.375, + "logFatal" : 0.0, + "threadsBlocked" : 0.0, + "threadsWaiting" : 14.5333333333, + "gcCount" : 7.15827883321E7, + "logWarn" : 0.0, + "logError" : 0.0, + "memNonHeapCommittedM" : 23.1875, + "gcTimeMillis" : 7.15827883254E7, + "memNonHeapUsedM" : 21.7573377917, + "logInfo" : 0.0, + "threadsNew" : 0.0, + "memHeapUsedM" : 7.07001514861, + "threadsTerminated" : 0.0, + "threadsTimedWaiting" : 8.71666666667, + "threadsRunnable" : 6.26666666667 + }, + "network" : { + "pkts_out" : 0.453888888889, + "bytes_in" : 50.5375, + "bytes_out" : 119.456111111, + "pkts_in" : 0.410277777778 + }, + "memory" : { + "mem_total" : 2054932.0, + "swap_free" : 4074707.96667, + "mem_buffers" : 13563.6555556, + "mem_shared" : 0.0, + "mem_cached" : 175260.0, + "mem_free" : 115051.811111, + "swap_total" : 4128760.0 + } + }, + "component" : [ + { + "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE/components/TASKTRACKER", + "ServiceComponentInfo" : { + "cluster_name" : "mycluster", + "component_name" : "TASKTRACKER", + "service_name" : "MAPREDUCE" + } + } + ] + } + ] + } + ] + } + ] +}
\ No newline at end of file diff --git a/ambari-web/app/assets/data/dashboard/mapreduce/mapreduce_stop.json b/ambari-web/app/assets/data/dashboard/mapreduce/mapreduce_stop.json new file mode 100644 index 0000000000..6d55a3c283 --- /dev/null +++ b/ambari-web/app/assets/data/dashboard/mapreduce/mapreduce_stop.json @@ -0,0 +1,370 @@ +{ + "href" : "http://localhost:8080/api/clusters/mycluster/services?ServiceInfo/service_name=MAPREDUCE&fields=components/host_components/*", + "items" : [ + { + "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE", + "ServiceInfo" : { + "cluster_name" : "mycluster", + "service_name" : "MAPREDUCE" + }, + "components" : [ + { + "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE/components/MAPREDUCE_CLIENT", + "ServiceComponentInfo" : { + "cluster_name" : "mycluster", + "component_name" : "MAPREDUCE_CLIENT", + "service_name" : "MAPREDUCE" + }, + "host_components" : [ + { + "href" : "http://localhost:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/MAPREDUCE_CLIENT", + "HostRoles" : { + "configs" : "{}", + "cluster_name" : "mycluster", + "desired_configs" : "{}", + "desired_state" : "INSTALLED", + "state" : "INSTALLED", + "component_name" : "MAPREDUCE_CLIENT", + "host_name" : "dev.hortonworks.com" + }, + "component" : [ + { + "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE/components/MAPREDUCE_CLIENT", + "ServiceComponentInfo" : { + "cluster_name" : "mycluster", + "component_name" : "MAPREDUCE_CLIENT", + "service_name" : "MAPREDUCE" + } + } + ] + } + ] + }, + { + "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE/components/JOBTRACKER", + "ServiceComponentInfo" : { + "cluster_name" : "mycluster", + "component_name" : "JOBTRACKER", + "service_name" : "MAPREDUCE" + }, + "host_components" : [ + { + "href" : "http://localhost:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/JOBTRACKER", + "HostRoles" : { + "configs" : "{\"mapred-site\":\"version1\",\"global\":\"version1\",\"core-site\":\"version1\"}", + "cluster_name" : "mycluster", + "desired_configs" : "{}", + "desired_state" : "INSTALLED", + "state" : "INSTALLED", + "component_name" : "JOBTRACKER", + "host_name" : "dev.hortonworks.com" + }, + "metrics" : { + "boottime" : 1.353113263E9, + "process" : { + "proc_total" : 542.4, + "proc_run" : 1.04722222222 + }, + "rpc" : { + "rpcAuthorizationSuccesses" : 0.0, + "SentBytes" : 355.647619048, + "rpcAuthorizationFailures" : 0.0, + "ReceivedBytes" : 1040.35238095, + "NumOpenConnections" : 0.0, + "callQueueLen" : 0.0, + "rpcAuthenticationSuccesses" : 0.0, + "RpcQueueTime_num_ops" : 3.32380952381, + "RpcProcessingTime_num_ops" : 3.32380952381, + "RpcProcessingTime_avg_time" : 0.142915649166, + "rpcAuthenticationFailures" : 0.0, + "RpcQueueTime_avg_time" : 0.0767488298738 + }, + "ugi" : { + "loginSuccess_num_ops" : 0.0, + "loginFailure_num_ops" : 0.0, + "loginSuccess_avg_time" : 0.0, + "loginFailure_avg_time" : 0.0 + }, + "mapred" : { + "Queue" : { + "maps_killed" : 0.0, + "reduces_killed" : 0.0, + "jobs_failed" : 0.0, + "reduces_completed" : 0.0, + "running_0" : 0.0, + "reduces_failed" : 0.0, + "reserved_map_slots" : 0.0, + "jobs_completed" : 0.0, + "waiting_maps" : 0.0, + "running_1440" : 0.0, + "maps_completed" : 0.0, + "jobs_preparing" : 0.0, + "jobs_submitted" : 0.0, + "reserved_reduce_slots" : 0.0, + "jobs_running" : 0.0, + "running_300" : 0.0, + "maps_launched" : 0.0, + "reduces_launched" : 0.0, + "running_60" : 0.0, + "waiting_reduces" : 0.0, + "maps_failed" : 0.0, + "jobs_killed" : 0.0 + }, + "jobtracker" : { + "blacklisted_maps" : 0.0, + "running_maps" : 0.0, + "jobs_failed" : 0.0, + "waiting_maps" : 0.0, + "maps_completed" : 0.0, + "trackers" : 1.0, + "jobs_submitted" : 0.0, + "map_slots" : 4.0, + "reserved_reduce_slots" : 0.0, + "trackers_graylisted" : 0.0, + "heartbeats" : 3.32380952381, + "jobs_running" : 0.0, + "blacklisted_reduces" : 0.0, + "maps_launched" : 0.0, + "occupied_map_slots" : 0.0, + "reduces_launched" : 0.0, + "jobs_killed" : 0.0, + "maps_failed" : 0.0, + "maps_killed" : 0.0, + "reduce_slots" : 2.0, + "reduces_killed" : 0.0, + "reduces_completed" : 0.0, + "jobs_completed" : 0.0, + "reserved_map_slots" : 0.0, + "trackers_decommissioned" : 0.0, + "reduces_failed" : 0.0, + "trackers_blacklisted" : 0.0, + "jobs_preparing" : 0.0, + "running_reduces" : 0.0, + "occupied_reduce_slots" : 0.0, + "waiting_reduces" : 0.0 + } + }, + "disk" : { + "disk_total" : 101.515, + "disk_free" : 93.4107777778, + "part_max_used" : 12.8 + }, + "cpu" : { + "cpu_speed" : 1986.0, + "cpu_wio" : 0.510555555556, + "cpu_num" : 1.0, + "cpu_idle" : 45.9291666667, + "cpu_nice" : 0.0, + "cpu_aidle" : 0.0, + "cpu_system" : 6.88277777778, + "cpu_user" : 46.6838888889 + }, + "rpcdetailed" : { + "getJobProfile_num_ops" : 0.0, + "getStagingAreaDir_num_ops" : 0.0, + "getProtocolVersion_avg_time" : 0.0, + "getBuildVersion_avg_time" : 0.0, + "getBuildVersion_num_ops" : 0.0, + "getNewJobId_avg_time" : 0.0, + "getQueueAdmins_num_ops" : 0.0, + "getSystemDir_num_ops" : 0.0, + "getTaskCompletionEvents_num_ops" : 0.0, + "getJobProfile_avg_time" : 0.0, + "submitJob_num_ops" : 0.0, + "getStagingAreaDir_avg_time" : 2.0, + "getNewJobId_num_ops" : 0.0, + "getJobCounters_num_ops" : 0.0, + "getTaskCompletionEvents_avg_time" : 0.111111111111, + "getProtocolVersion_num_ops" : 0.0, + "submitJob_avg_time" : 312.0, + "getSystemDir_avg_time" : 0.0, + "getJobStatus_num_ops" : 0.0, + "getJobCounters_avg_time" : 0.0, + "getQueueAdmins_avg_time" : 0.0, + "heartbeat_num_ops" : 3.32380952381, + "heartbeat_avg_time" : 0.142915649166, + "getJobStatus_avg_time" : 0.0 + }, + "load" : { + "load_fifteen" : 0.8845, + "load_one" : 0.516833333333, + "load_five" : 0.740888888889 + }, + "jvm" : { + "memHeapCommittedM" : 185.1875, + "logFatal" : 0.0, + "threadsBlocked" : 0.0, + "threadsWaiting" : 19.0, + "gcCount" : 0.00277777777778, + "logWarn" : 0.0, + "logError" : 0.0, + "memNonHeapCommittedM" : 23.75, + "gcTimeMillis" : 0.641666666667, + "memNonHeapUsedM" : 23.1303326472, + "logInfo" : 0.0, + "threadsNew" : 0.0, + "memHeapUsedM" : 101.890453742, + "threadsTerminated" : 0.0, + "threadsTimedWaiting" : 10.0, + "threadsRunnable" : 6.0 + }, + "network" : { + "pkts_out" : 0.455111111111, + "bytes_in" : 50.645, + "bytes_out" : 119.762888889, + "pkts_in" : 0.411222222222 + }, + "memory" : { + "mem_total" : 2054932.0, + "swap_free" : 4074713.26667, + "mem_buffers" : 13563.6333333, + "mem_shared" : 0.0, + "mem_cached" : 175195.088889, + "mem_free" : 117578.155556, + "swap_total" : 4128760.0 + } + }, + "component" : [ + { + "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE/components/JOBTRACKER", + "ServiceComponentInfo" : { + "cluster_name" : "mycluster", + "component_name" : "JOBTRACKER", + "service_name" : "MAPREDUCE" + } + } + ] + } + ] + }, + { + "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE/components/TASKTRACKER", + "ServiceComponentInfo" : { + "cluster_name" : "mycluster", + "component_name" : "TASKTRACKER", + "service_name" : "MAPREDUCE" + }, + "host_components" : [ + { + "href" : "http://localhost:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/TASKTRACKER", + "HostRoles" : { + "configs" : "{\"mapred-site\":\"version1\",\"global\":\"version1\",\"core-site\":\"version1\"}", + "cluster_name" : "mycluster", + "desired_configs" : "{}", + "desired_state" : "INSTALLED", + "state" : "INSTALLED", + "component_name" : "TASKTRACKER", + "host_name" : "dev.hortonworks.com" + }, + "metrics" : { + "boottime" : 1.353113263E9, + "process" : { + "proc_total" : 542.625, + "proc_run" : 1.81944444444 + }, + "rpc" : { + "rpcAuthorizationSuccesses" : 7.15827882667E7, + "SentBytes" : 7.15827882667E7, + "rpcAuthorizationFailures" : 0.0, + "ReceivedBytes" : 7.15827882667E7, + "NumOpenConnections" : 0.0, + "callQueueLen" : 0.0, + "rpcAuthenticationSuccesses" : 0.0, + "RpcQueueTime_num_ops" : 7.15827882667E7, + "RpcProcessingTime_num_ops" : 7.15827882667E7, + "RpcProcessingTime_avg_time" : 0.151111111111, + "rpcAuthenticationFailures" : 0.0, + "RpcQueueTime_avg_time" : 0.151111111111 + }, + "ugi" : { + "loginSuccess_num_ops" : 0.0, + "loginFailure_num_ops" : 0.0, + "loginSuccess_avg_time" : 0.0, + "loginFailure_avg_time" : 0.0 + }, + "mapred" : { + "shuffleOutput" : { + "shuffle_handler_busy_percent" : 0.0 + }, + "tasktracker" : { + "reduces_running" : 0.0, + "maps_running" : 0.0, + "reduceTaskSlots" : 2.0, + "mapTaskSlots" : 4.0 + } + }, + "disk" : { + "disk_total" : 101.515, + "disk_free" : 93.4107777778, + "part_max_used" : 12.8 + }, + "cpu" : { + "cpu_speed" : 1986.0, + "cpu_wio" : 0.519444444444, + "cpu_num" : 1.0, + "cpu_idle" : 46.9705555556, + "cpu_nice" : 0.0, + "cpu_aidle" : 0.0, + "cpu_system" : 6.75972222222, + "cpu_user" : 45.7563888889 + }, + "rpcdetailed" : { + "getProtocolVersion_avg_time" : 0.0, + "getProtocolVersion_num_ops" : 4 + }, + "load" : { + "load_fifteen" : 0.882305555556, + "load_one" : 0.523944444444, + "load_five" : 0.739694444444 + }, + "jvm" : { + "memHeapCommittedM" : 30.375, + "logFatal" : 0.0, + "threadsBlocked" : 0.0, + "threadsWaiting" : 14.5333333333, + "gcCount" : 7.15827883321E7, + "logWarn" : 0.0, + "logError" : 0.0, + "memNonHeapCommittedM" : 23.1875, + "gcTimeMillis" : 7.15827883254E7, + "memNonHeapUsedM" : 21.7573377917, + "logInfo" : 0.0, + "threadsNew" : 0.0, + "memHeapUsedM" : 7.07001514861, + "threadsTerminated" : 0.0, + "threadsTimedWaiting" : 8.71666666667, + "threadsRunnable" : 6.26666666667 + }, + "network" : { + "pkts_out" : 0.453888888889, + "bytes_in" : 50.5375, + "bytes_out" : 119.456111111, + "pkts_in" : 0.410277777778 + }, + "memory" : { + "mem_total" : 2054932.0, + "swap_free" : 4074707.96667, + "mem_buffers" : 13563.6555556, + "mem_shared" : 0.0, + "mem_cached" : 175260.0, + "mem_free" : 115051.811111, + "swap_total" : 4128760.0 + } + }, + "component" : [ + { + "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE/components/TASKTRACKER", + "ServiceComponentInfo" : { + "cluster_name" : "mycluster", + "component_name" : "TASKTRACKER", + "service_name" : "MAPREDUCE" + } + } + ] + } + ] + } + ] + } + ] +}
\ No newline at end of file diff --git a/ambari-web/app/assets/data/hosts/hosts.json b/ambari-web/app/assets/data/hosts/hosts.json index ef93276997..eede59c1be 100644 --- a/ambari-web/app/assets/data/hosts/hosts.json +++ b/ambari-web/app/assets/data/hosts/hosts.json @@ -7,7 +7,7 @@ "cpu_count" : 1, "cluster_name" : "mycluster", "last_registration_time" : 1352386560520, - "rack_info" : "/default-rack", + "rack_info" : "/default-rack2", "total_mem" : 3082813, "os_arch" : "x86_64", "host_name" : "dev1.hortonworks.com", @@ -83,7 +83,7 @@ "cluster_name" : "mycluster", "last_registration_time" : 1352386560520, "rack_info" : "/default-rack", - "total_mem" : 3082813, + "total_mem" : 3086813, "os_arch" : "x86_64", "host_name" : "dev2.hortonworks.com", "disk_info" : "[{\"available\":\"47295056\",\"mountpoint\":\"/\",\"used\":\"3786948\",\"percent\":\"8%\",\"size\":\"51606140\",\"type\":\"ext4\"},{\"available\":\"1542800\",\"mountpoint\":\"/dev/shm\",\"used\":\"248\",\"percent\":\"1%\",\"size\":\"1543048\",\"type\":\"tmpfs\"},{\"available\":\"432210\",\"mountpoint\":\"/boot\",\"used\":\"38034\",\"percent\":\"9%\",\"size\":\"495844\",\"type\":\"ext4\"},{\"available\":\"44459872\",\"mountpoint\":\"/home\",\"used\":\"184220\",\"percent\":\"1%\",\"size\":\"47033288\",\"type\":\"ext4\"},{\"available\":\"902105496\",\"mountpoint\":\"/media/sf_ambari\",\"used\":\"74551908\",\"percent\":\"8%\",\"size\":\"976657404\",\"type\":\"vboxsf\"}]", @@ -154,10 +154,10 @@ "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev3.hortonworks.com", "Hosts" : { - "cpu_count" : 1, + "cpu_count" : 16, "cluster_name" : "mycluster", "last_registration_time" : 1352386560520, - "rack_info" : "/default-rack", + "rack_info" : "/default-rack3", "total_mem" : 3082813, "os_arch" : "x86_64", "host_name" : "dev3.hortonworks.com", @@ -224,6 +224,666 @@ } } ] + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com", + "Hosts" : { + "cpu_count" : 5, + "cluster_name" : "mycluster", + "last_registration_time" : 1352386560520, + "rack_info" : "/default-rack8", + "total_mem" : 3082813, + "os_arch" : "x86_64", + "host_name" : "dev.hortonworks.com2", + "disk_info" : "[{\"available\":\"47295056\",\"mountpoint\":\"/\",\"used\":\"3786948\",\"percent\":\"8%\",\"size\":\"51606140\",\"type\":\"ext4\"},{\"available\":\"1542800\",\"mountpoint\":\"/dev/shm\",\"used\":\"248\",\"percent\":\"1%\",\"size\":\"1543048\",\"type\":\"tmpfs\"},{\"available\":\"432210\",\"mountpoint\":\"/boot\",\"used\":\"38034\",\"percent\":\"9%\",\"size\":\"495844\",\"type\":\"ext4\"},{\"available\":\"44459872\",\"mountpoint\":\"/home\",\"used\":\"184220\",\"percent\":\"1%\",\"size\":\"47033288\",\"type\":\"ext4\"},{\"available\":\"902105496\",\"mountpoint\":\"/media/sf_ambari\",\"used\":\"74551908\",\"percent\":\"8%\",\"size\":\"976657404\",\"type\":\"vboxsf\"}]", + "last_heartbeat_time" : 1352461939047, + "os_type" : "centos6", + "ip" : "10.0.2.15" + }, + "host_components" : [ + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/SECONDARY_NAMENODE", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "SECONDARY_NAMENODE", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/JOBTRACKER", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "JOBTRACKER", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/HDFS_CLIENT", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "HDFS_CLIENT", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/TASKTRACKER", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "TASKTRACKER", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/NAMENODE", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "NAMENODE", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/MAPREDUCE_CLIENT", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "MAPREDUCE_CLIENT", + "host_name" : "dev.hortonworks.com" + } + } + ] + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com", + "Hosts" : { + "cpu_count" : 2, + "cluster_name" : "mycluster", + "last_registration_time" : 1352386560520, + "rack_info" : "/default-rack1", + "total_mem" : 3082813, + "os_arch" : "x86_64", + "host_name" : "dev.hortonworks.com3", + "disk_info" : "[{\"available\":\"47295056\",\"mountpoint\":\"/\",\"used\":\"3786948\",\"percent\":\"8%\",\"size\":\"51606140\",\"type\":\"ext4\"},{\"available\":\"1542800\",\"mountpoint\":\"/dev/shm\",\"used\":\"248\",\"percent\":\"1%\",\"size\":\"1543048\",\"type\":\"tmpfs\"},{\"available\":\"432210\",\"mountpoint\":\"/boot\",\"used\":\"38034\",\"percent\":\"9%\",\"size\":\"495844\",\"type\":\"ext4\"},{\"available\":\"44459872\",\"mountpoint\":\"/home\",\"used\":\"184220\",\"percent\":\"1%\",\"size\":\"47033288\",\"type\":\"ext4\"},{\"available\":\"902105496\",\"mountpoint\":\"/media/sf_ambari\",\"used\":\"74551908\",\"percent\":\"8%\",\"size\":\"976657404\",\"type\":\"vboxsf\"}]", + "last_heartbeat_time" : 1352461939047, + "os_type" : "centos6", + "ip" : "10.0.2.15" + }, + "host_components" : [ + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/SECONDARY_NAMENODE", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "SECONDARY_NAMENODE", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/JOBTRACKER", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "JOBTRACKER", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/HDFS_CLIENT", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "HDFS_CLIENT", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/TASKTRACKER", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "TASKTRACKER", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/NAMENODE", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "NAMENODE", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/MAPREDUCE_CLIENT", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "MAPREDUCE_CLIENT", + "host_name" : "dev.hortonworks.com" + } + } + ] + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com", + "Hosts" : { + "cpu_count" : 1, + "cluster_name" : "mycluster", + "last_registration_time" : 1352386560520, + "rack_info" : "/default-rack", + "total_mem" : 3082813, + "os_arch" : "x86_64", + "host_name" : "dev.hortonworks.com4", + "disk_info" : "[{\"available\":\"47295056\",\"mountpoint\":\"/\",\"used\":\"3786948\",\"percent\":\"8%\",\"size\":\"51606140\",\"type\":\"ext4\"},{\"available\":\"1542800\",\"mountpoint\":\"/dev/shm\",\"used\":\"248\",\"percent\":\"1%\",\"size\":\"1543048\",\"type\":\"tmpfs\"},{\"available\":\"432210\",\"mountpoint\":\"/boot\",\"used\":\"38034\",\"percent\":\"9%\",\"size\":\"495844\",\"type\":\"ext4\"},{\"available\":\"44459872\",\"mountpoint\":\"/home\",\"used\":\"184220\",\"percent\":\"1%\",\"size\":\"47033288\",\"type\":\"ext4\"},{\"available\":\"902105496\",\"mountpoint\":\"/media/sf_ambari\",\"used\":\"74551908\",\"percent\":\"8%\",\"size\":\"976657404\",\"type\":\"vboxsf\"}]", + "last_heartbeat_time" : 1352461939047, + "os_type" : "centos6", + "ip" : "10.0.2.15" + }, + "host_components" : [ + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/SECONDARY_NAMENODE", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "SECONDARY_NAMENODE", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/JOBTRACKER", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "JOBTRACKER", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/HDFS_CLIENT", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "HDFS_CLIENT", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/TASKTRACKER", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "TASKTRACKER", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/NAMENODE", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "NAMENODE", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/MAPREDUCE_CLIENT", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "MAPREDUCE_CLIENT", + "host_name" : "dev.hortonworks.com" + } + } + ] + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com", + "Hosts" : { + "cpu_count" : 3, + "cluster_name" : "mycluster", + "last_registration_time" : 1352386560520, + "rack_info" : "/default-rack", + "total_mem" : 3082813, + "os_arch" : "x86_64", + "host_name" : "dev.hortonworks.com5", + "disk_info" : "[{\"available\":\"47295056\",\"mountpoint\":\"/\",\"used\":\"3786948\",\"percent\":\"8%\",\"size\":\"51606140\",\"type\":\"ext4\"},{\"available\":\"1542800\",\"mountpoint\":\"/dev/shm\",\"used\":\"248\",\"percent\":\"1%\",\"size\":\"1543048\",\"type\":\"tmpfs\"},{\"available\":\"432210\",\"mountpoint\":\"/boot\",\"used\":\"38034\",\"percent\":\"9%\",\"size\":\"495844\",\"type\":\"ext4\"},{\"available\":\"44459872\",\"mountpoint\":\"/home\",\"used\":\"184220\",\"percent\":\"1%\",\"size\":\"47033288\",\"type\":\"ext4\"},{\"available\":\"902105496\",\"mountpoint\":\"/media/sf_ambari\",\"used\":\"74551908\",\"percent\":\"8%\",\"size\":\"976657404\",\"type\":\"vboxsf\"}]", + "last_heartbeat_time" : 1352461939047, + "os_type" : "centos6", + "ip" : "10.0.2.15" + }, + "host_components" : [ + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/SECONDARY_NAMENODE", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "SECONDARY_NAMENODE", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/JOBTRACKER", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "JOBTRACKER", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/HDFS_CLIENT", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "HDFS_CLIENT", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/TASKTRACKER", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "TASKTRACKER", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/NAMENODE", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "NAMENODE", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/MAPREDUCE_CLIENT", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "MAPREDUCE_CLIENT", + "host_name" : "dev.hortonworks.com" + } + } + ] + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com", + "Hosts" : { + "cpu_count" : 1, + "cluster_name" : "mycluster", + "last_registration_time" : 1352386560520, + "rack_info" : "/default-rack", + "total_mem" : 3082813, + "os_arch" : "x86_64", + "host_name" : "dev.hortonworks.com6", + "disk_info" : "[{\"available\":\"47295056\",\"mountpoint\":\"/\",\"used\":\"3786948\",\"percent\":\"8%\",\"size\":\"51606140\",\"type\":\"ext4\"},{\"available\":\"1542800\",\"mountpoint\":\"/dev/shm\",\"used\":\"248\",\"percent\":\"1%\",\"size\":\"1543048\",\"type\":\"tmpfs\"},{\"available\":\"432210\",\"mountpoint\":\"/boot\",\"used\":\"38034\",\"percent\":\"9%\",\"size\":\"495844\",\"type\":\"ext4\"},{\"available\":\"44459872\",\"mountpoint\":\"/home\",\"used\":\"184220\",\"percent\":\"1%\",\"size\":\"47033288\",\"type\":\"ext4\"},{\"available\":\"902105496\",\"mountpoint\":\"/media/sf_ambari\",\"used\":\"74551908\",\"percent\":\"8%\",\"size\":\"976657404\",\"type\":\"vboxsf\"}]", + "last_heartbeat_time" : 1352461939047, + "os_type" : "centos6", + "ip" : "10.0.2.15" + }, + "host_components" : [ + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/SECONDARY_NAMENODE", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "SECONDARY_NAMENODE", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/JOBTRACKER", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "JOBTRACKER", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/HDFS_CLIENT", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "HDFS_CLIENT", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/TASKTRACKER", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "TASKTRACKER", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/NAMENODE", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "NAMENODE", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/MAPREDUCE_CLIENT", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "MAPREDUCE_CLIENT", + "host_name" : "dev.hortonworks.com" + } + } + ] + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com", + "Hosts" : { + "cpu_count" : 2, + "cluster_name" : "mycluster", + "last_registration_time" : 1352386560520, + "rack_info" : "/default-rack", + "total_mem" : 3082813, + "os_arch" : "x86_64", + "host_name" : "dev.hortonworks.com7", + "disk_info" : "[{\"available\":\"47295056\",\"mountpoint\":\"/\",\"used\":\"3786948\",\"percent\":\"8%\",\"size\":\"51606140\",\"type\":\"ext4\"},{\"available\":\"1542800\",\"mountpoint\":\"/dev/shm\",\"used\":\"248\",\"percent\":\"1%\",\"size\":\"1543048\",\"type\":\"tmpfs\"},{\"available\":\"432210\",\"mountpoint\":\"/boot\",\"used\":\"38034\",\"percent\":\"9%\",\"size\":\"495844\",\"type\":\"ext4\"},{\"available\":\"44459872\",\"mountpoint\":\"/home\",\"used\":\"184220\",\"percent\":\"1%\",\"size\":\"47033288\",\"type\":\"ext4\"},{\"available\":\"902105496\",\"mountpoint\":\"/media/sf_ambari\",\"used\":\"74551908\",\"percent\":\"8%\",\"size\":\"976657404\",\"type\":\"vboxsf\"}]", + "last_heartbeat_time" : 1352461939047, + "os_type" : "centos6", + "ip" : "10.0.2.15" + }, + "host_components" : [ + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/SECONDARY_NAMENODE", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "SECONDARY_NAMENODE", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/JOBTRACKER", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "JOBTRACKER", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/HDFS_CLIENT", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "HDFS_CLIENT", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/TASKTRACKER", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "TASKTRACKER", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/NAMENODE", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "NAMENODE", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/MAPREDUCE_CLIENT", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "MAPREDUCE_CLIENT", + "host_name" : "dev.hortonworks.com" + } + } + ] + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com", + "Hosts" : { + "cpu_count" : 3, + "cluster_name" : "mycluster", + "last_registration_time" : 1352386560520, + "rack_info" : "/default-rack", + "total_mem" : 3082813, + "os_arch" : "x86_64", + "host_name" : "dev.hortonworks.com8", + "disk_info" : "[{\"available\":\"47295056\",\"mountpoint\":\"/\",\"used\":\"3786948\",\"percent\":\"8%\",\"size\":\"51606140\",\"type\":\"ext4\"},{\"available\":\"1542800\",\"mountpoint\":\"/dev/shm\",\"used\":\"248\",\"percent\":\"1%\",\"size\":\"1543048\",\"type\":\"tmpfs\"},{\"available\":\"432210\",\"mountpoint\":\"/boot\",\"used\":\"38034\",\"percent\":\"9%\",\"size\":\"495844\",\"type\":\"ext4\"},{\"available\":\"44459872\",\"mountpoint\":\"/home\",\"used\":\"184220\",\"percent\":\"1%\",\"size\":\"47033288\",\"type\":\"ext4\"},{\"available\":\"902105496\",\"mountpoint\":\"/media/sf_ambari\",\"used\":\"74551908\",\"percent\":\"8%\",\"size\":\"976657404\",\"type\":\"vboxsf\"}]", + "last_heartbeat_time" : 1352461939047, + "os_type" : "centos6", + "ip" : "10.0.2.15" + }, + "host_components" : [ + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/SECONDARY_NAMENODE", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "SECONDARY_NAMENODE", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/JOBTRACKER", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "JOBTRACKER", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/HDFS_CLIENT", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "HDFS_CLIENT", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/TASKTRACKER", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "TASKTRACKER", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/NAMENODE", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "NAMENODE", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/MAPREDUCE_CLIENT", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "MAPREDUCE_CLIENT", + "host_name" : "dev.hortonworks.com" + } + } + ] + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com", + "Hosts" : { + "cpu_count" : 2, + "cluster_name" : "mycluster", + "last_registration_time" : 1352386560520, + "rack_info" : "/default-rack", + "total_mem" : 3082813, + "os_arch" : "x86_64", + "host_name" : "dev.hortonworks.com9", + "disk_info" : "[{\"available\":\"47295056\",\"mountpoint\":\"/\",\"used\":\"3786948\",\"percent\":\"8%\",\"size\":\"51606140\",\"type\":\"ext4\"},{\"available\":\"1542800\",\"mountpoint\":\"/dev/shm\",\"used\":\"248\",\"percent\":\"1%\",\"size\":\"1543048\",\"type\":\"tmpfs\"},{\"available\":\"432210\",\"mountpoint\":\"/boot\",\"used\":\"38034\",\"percent\":\"9%\",\"size\":\"495844\",\"type\":\"ext4\"},{\"available\":\"44459872\",\"mountpoint\":\"/home\",\"used\":\"184220\",\"percent\":\"1%\",\"size\":\"47033288\",\"type\":\"ext4\"},{\"available\":\"902105496\",\"mountpoint\":\"/media/sf_ambari\",\"used\":\"74551908\",\"percent\":\"8%\",\"size\":\"976657404\",\"type\":\"vboxsf\"}]", + "last_heartbeat_time" : 1352461939047, + "os_type" : "centos6", + "ip" : "10.0.2.15" + }, + "host_components" : [ + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/SECONDARY_NAMENODE", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "SECONDARY_NAMENODE", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/JOBTRACKER", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "JOBTRACKER", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/HDFS_CLIENT", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "HDFS_CLIENT", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/TASKTRACKER", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "TASKTRACKER", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/NAMENODE", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "NAMENODE", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/MAPREDUCE_CLIENT", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "MAPREDUCE_CLIENT", + "host_name" : "dev.hortonworks.com" + } + } + ] + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com", + "Hosts" : { + "cpu_count" : 3, + "cluster_name" : "mycluster", + "last_registration_time" : 1352386560520, + "rack_info" : "/default-rack", + "total_mem" : 3082813, + "os_arch" : "x86_64", + "host_name" : "dev.hortonworks.com10", + "disk_info" : "[{\"available\":\"47295056\",\"mountpoint\":\"/\",\"used\":\"3786948\",\"percent\":\"8%\",\"size\":\"51606140\",\"type\":\"ext4\"},{\"available\":\"1542800\",\"mountpoint\":\"/dev/shm\",\"used\":\"248\",\"percent\":\"1%\",\"size\":\"1543048\",\"type\":\"tmpfs\"},{\"available\":\"432210\",\"mountpoint\":\"/boot\",\"used\":\"38034\",\"percent\":\"9%\",\"size\":\"495844\",\"type\":\"ext4\"},{\"available\":\"44459872\",\"mountpoint\":\"/home\",\"used\":\"184220\",\"percent\":\"1%\",\"size\":\"47033288\",\"type\":\"ext4\"},{\"available\":\"902105496\",\"mountpoint\":\"/media/sf_ambari\",\"used\":\"74551908\",\"percent\":\"8%\",\"size\":\"976657404\",\"type\":\"vboxsf\"}]", + "last_heartbeat_time" : 1352461939047, + "os_type" : "centos6", + "ip" : "10.0.2.15" + }, + "host_components" : [ + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/SECONDARY_NAMENODE", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "SECONDARY_NAMENODE", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/JOBTRACKER", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "JOBTRACKER", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/HDFS_CLIENT", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "HDFS_CLIENT", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/TASKTRACKER", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "TASKTRACKER", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/NAMENODE", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "NAMENODE", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/MAPREDUCE_CLIENT", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "MAPREDUCE_CLIENT", + "host_name" : "dev.hortonworks.com" + } + } + ] + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com", + "Hosts" : { + "cpu_count" : 4, + "cluster_name" : "mycluster", + "last_registration_time" : 1352386560520, + "rack_info" : "/default-rack", + "total_mem" : 3082813, + "os_arch" : "x86_64", + "host_name" : "dev.hortonworks.com11", + "disk_info" : "[{\"available\":\"47295056\",\"mountpoint\":\"/\",\"used\":\"3786948\",\"percent\":\"8%\",\"size\":\"51606140\",\"type\":\"ext4\"},{\"available\":\"1542800\",\"mountpoint\":\"/dev/shm\",\"used\":\"248\",\"percent\":\"1%\",\"size\":\"1543048\",\"type\":\"tmpfs\"},{\"available\":\"432210\",\"mountpoint\":\"/boot\",\"used\":\"38034\",\"percent\":\"9%\",\"size\":\"495844\",\"type\":\"ext4\"},{\"available\":\"44459872\",\"mountpoint\":\"/home\",\"used\":\"184220\",\"percent\":\"1%\",\"size\":\"47033288\",\"type\":\"ext4\"},{\"available\":\"902105496\",\"mountpoint\":\"/media/sf_ambari\",\"used\":\"74551908\",\"percent\":\"8%\",\"size\":\"976657404\",\"type\":\"vboxsf\"}]", + "last_heartbeat_time" : 1352461939047, + "os_type" : "centos6", + "ip" : "10.0.2.15" + }, + "host_components" : [ + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/SECONDARY_NAMENODE", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "SECONDARY_NAMENODE", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/JOBTRACKER", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "JOBTRACKER", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/HDFS_CLIENT", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "HDFS_CLIENT", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/TASKTRACKER", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "TASKTRACKER", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/NAMENODE", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "NAMENODE", + "host_name" : "dev.hortonworks.com" + } + }, + { + "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/MAPREDUCE_CLIENT", + "HostRoles" : { + "cluster_name" : "mycluster", + "component_name" : "MAPREDUCE_CLIENT", + "host_name" : "dev.hortonworks.com" + } + } + ] } ] }
\ No newline at end of file diff --git a/ambari-web/app/controllers/installer.js b/ambari-web/app/controllers/installer.js index 9daaa1a636..b51ed630c2 100644 --- a/ambari-web/app/controllers/installer.js +++ b/ambari-web/app/controllers/installer.js @@ -238,7 +238,8 @@ App.InstallerController = Em.Controller.extend({ var cluster = { name: App.db.getClusterName() || "", status: cStatus.status, - isCompleted: cStatus.isCompleted + isCompleted: cStatus.isCompleted, + requestId: cStatus.requestId }; this.set('content.cluster', cluster); @@ -513,28 +514,28 @@ App.InstallerController = Em.Controller.extend({ dataNodeHosts.push({ hostName: host.hostName, group: 'Default', - isInstalled : false + isInstalled: false }); } if (isMrSelected && host.get('isTaskTracker')) { taskTrackerHosts.push({ hostName: host.hostName, group: 'Default', - isInstalled : false + isInstalled: false }); } if (isHbSelected && host.get('isRegionServer')) { regionServerHosts.push({ hostName: host.hostName, group: 'Default', - isInstalled : false + isInstalled: false }); } if (host.get('isClient')) { clientHosts.pushObject({ hostName: host.hostName, group: 'Default', - isInstalled : false + isInstalled: false }); } }, this); @@ -587,10 +588,10 @@ App.InstallerController = Em.Controller.extend({ var serviceConfigProperties = []; stepController.get('stepConfigs').forEach(function (_content) { _content.get('configs').forEach(function (_configProperties) { - var displayType = _configProperties.get('displayType'); - if(displayType === 'directories' || displayType === 'directory') { + var displayType = _configProperties.get('displayType'); + if (displayType === 'directories' || displayType === 'directory') { var value = _configProperties.get('value').split(/\s+/g).join(','); - _configProperties.set('value',value); + _configProperties.set('value', value); } var configProperty = { id: _configProperties.get('id'), @@ -720,9 +721,13 @@ App.InstallerController = Em.Controller.extend({ }, loadAdvancedConfigs: function () { + var configs = []; App.db.getSelectedServiceNames().forEach(function (_serviceName) { - this.loadAdvancedConfig(_serviceName); + var serviceComponents = this.loadAdvancedConfig(_serviceName); + configs = configs.concat(serviceComponents); }, this); + this.set('content.advancedServiceConfig', configs); + App.db.setAdvancedServiceConfig(configs); }, /** * Generate serviceProperties save it to localdata @@ -733,6 +738,7 @@ App.InstallerController = Em.Controller.extend({ var self = this; var url = (App.testMode) ? '/data/wizard/stack/hdp/version01/' + serviceName + '.json' : App.apiPrefix + '/stacks/HDP/version/1.2.0/services/' + serviceName; // TODO: get this url from the stack selected by the user in Install Options page var method = 'GET'; + var serviceComponents; $.ajax({ type: method, url: url, @@ -743,17 +749,8 @@ App.InstallerController = Em.Controller.extend({ var jsonData = jQuery.parseJSON(data); console.log("TRACE: Step6 submit -> In success function for the loadAdvancedConfig call"); console.log("TRACE: Step6 submit -> value of the url is: " + url); - var serviceComponents = jsonData.properties; + serviceComponents = jsonData.properties; serviceComponents.setEach('serviceName', serviceName); - var configs; - if (App.db.getAdvancedServiceConfig()) { - configs = App.db.getAdvancedServiceConfig(); - } else { - configs = []; - } - configs = configs.concat(serviceComponents); - self.set('content.advancedServiceConfig', configs); - App.db.setAdvancedServiceConfig(configs); console.log('TRACE: servicename: ' + serviceName); }, @@ -766,6 +763,7 @@ App.InstallerController = Em.Controller.extend({ statusCode: require('data/statusCodes') }); + return serviceComponents; }, /** @@ -812,11 +810,12 @@ App.InstallerController = Em.Controller.extend({ console.log("TRACE: STep8 -> value of the url is: " + url); console.log("TRACE: STep8 -> error code status is: " + request.status); console.log('Step8: Error message is: ' + request.responseText); - var clusterStatus = { - status: 'PENDING', - isInstallError: true, - isCompleted: false - }; + var clusterStatus = { + status: 'PENDING', + isInstallError: false, + isCompleted: false + }; + self.saveClusterStatus(clusterStatus); }, @@ -828,12 +827,13 @@ App.InstallerController = Em.Controller.extend({ /** * Clear all temporary data */ - finish: function(){ + finish: function () { this.setCurrentStep('1', false); App.db.setService(undefined); //not to use this data at AddService page App.db.setHosts(undefined); App.db.setMasterComponentHosts(undefined); App.db.setSlaveComponentHosts(undefined); + App.db.setClusterStatus(undefined); } }); diff --git a/ambari-web/app/controllers/main/admin/user.js b/ambari-web/app/controllers/main/admin/user.js index 00743977f3..173a21d8bf 100644 --- a/ambari-web/app/controllers/main/admin/user.js +++ b/ambari-web/app/controllers/main/admin/user.js @@ -43,10 +43,10 @@ App.MainAdminUserController = Em.Controller.extend({ secondary:Em.I18n.t('no'), onPrimary:function () { - self.sendCommandToServer('/users/' + event.context.get("userName"),"DELETE" ,{}, - function (requestId) { + self.sendCommandToServer('/users/' + event.context.get("userName"), "DELETE" ,{}, + function (success) { - if (!requestId) { + if (!success) { return; } @@ -68,7 +68,7 @@ App.MainAdminUserController = Em.Controller.extend({ sendCommandToServer : function(url, method, postData, callback){ var url = (App.testMode) ? '/data/wizard/deploy/poll_1.json' : //content is the same as ours - App.apiPrefix + '/' + url; + App.apiPrefix + url; var method = App.testMode ? 'GET' : method; @@ -79,17 +79,12 @@ App.MainAdminUserController = Em.Controller.extend({ dataType: 'json', timeout: App.timeout, success: function(data){ - if(data && data.Requests){ - callback(data.Requests.id); - } else{ - callback(null); - console.log('cannot get request id from ', data); - } + callback(true); }, error: function (request, ajaxOptions, error) { //do something - callback(null); + callback(false); console.log('error on change component host status') }, diff --git a/ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric.js b/ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric.js index c219616b4a..9c904214a9 100644 --- a/ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric.js +++ b/ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric.js @@ -123,7 +123,7 @@ App.MainChartHeatmapMetric = Em.Object.extend({ var clusterName = App.router.get('clusterController.clusterName'); var fixedMetricName = this.get('defaultMetric'); fixedMetricName = fixedMetricName.replace(/\./g, "/"); - return App.formatUrl("/api/clusters/{clusterName}/hosts?fields={metricName}", { + return App.formatUrl(App.apiPrefix + "/clusters/{clusterName}/hosts?fields={metricName}", { clusterName: App.router.get('clusterController.clusterName'), metricName: fixedMetricName }, "/data/cluster_metrics/cpu_1hr.json"); diff --git a/ambari-web/app/controllers/main/host/add_controller.js b/ambari-web/app/controllers/main/host/add_controller.js index dcf8cf6a74..522c732bdb 100644 --- a/ambari-web/app/controllers/main/host/add_controller.js +++ b/ambari-web/app/controllers/main/host/add_controller.js @@ -41,7 +41,9 @@ App.AddHostController = Em.Controller.extend({ hostsInfo: null, slaveComponentHosts: null, masterComponentHosts: null, - serviceConfigProperties: null + serviceConfigProperties: null, + advancedServiceConfig: null, + controllerName: 'addHostController' }), /** @@ -187,52 +189,23 @@ App.AddHostController = Em.Controller.extend({ * Load clusterInfo(step1) to model */ loadClusterInfo: function(){ - var cStatus = App.db.getClusterStatus() || {status: "", isCompleted: false}; var cluster = { - name: App.db.getClusterName() || "", - status: cStatus.status, - isCompleted: cStatus.isCompleted + name: App.router.getClusterName(), + status: "", + isCompleted: true }; this.set('content.cluster', cluster); console.log("AddHostController:loadClusterInfo: loaded data ", cluster); }, /** - * Save all info about claster to model - * @param stepController Step1WizardController - */ - saveClusterInfo: function (stepController) { - var cluster = stepController.get('content.cluster'); - var clusterStatus = { - status: cluster.status, - isCompleted: cluster.isCompleted - } - App.db.setClusterName(cluster.name); - App.db.setClusterStatus(clusterStatus); - - console.log("AddHostController:saveClusterInfo: saved data ", cluster); - - //probably next line is extra work - need to check it - this.set('content.cluster', cluster); - }, - - /** - * save status of the cluster. This is called from step8 and step9 to persist install and start requestId - * @param clusterStatus object with status, isCompleted, requestId, isInstallError and isStartError field. - */ - saveClusterStatus: function (clusterStatus) { - this.set('content.cluster', clusterStatus); - App.db.setClusterStatus(clusterStatus); - }, - - /** * Temporary function for wizardStep9, before back-end integration */ setInfoForStep9: function () { var hostInfo = App.db.getHosts(); for (var index in hostInfo) { hostInfo[index].status = "pending"; - hostInfo[index].message = 'Waiting'; + hostInfo[index].message = 'Information'; hostInfo[index].progress = '0'; } App.db.setHosts(hostInfo); @@ -374,6 +347,7 @@ App.AddHostController = Em.Controller.extend({ } } App.db.setHosts(hostInfo); + this.set('content.hostsInfo', hostInfo); console.log('addHostController:saveInstalledHosts: save hosts ', hostInfo); }, @@ -391,6 +365,8 @@ App.AddHostController = Em.Controller.extend({ hosts.passphrase = ''; hosts.confirmPassphrase = ''; } + App.db.setHosts(null); + App.db.setAllHostNames(null); }, /** @@ -467,28 +443,33 @@ App.AddHostController = Em.Controller.extend({ var clientHosts = []; hosts.forEach(function (host) { + if (host.get('isDataNode')) { dataNodeHosts.push({ hostName: host.hostName, - group: 'Default' + group: 'Default', + isInstalled: host.get('isDataNodeInstalled') }); } if (isMrSelected && host.get('isTaskTracker')) { taskTrackerHosts.push({ hostName: host.hostName, - group: 'Default' + group: 'Default', + isInstalled: host.get('isTaskTrackerInstalled') }); } if (isHbSelected && host.get('isRegionServer')) { regionServerHosts.push({ hostName: host.hostName, - group: 'Default' + group: 'Default', + isInstalled: host.get('isRegionServerInstalled') }); } if (host.get('isClient')) { clientHosts.pushObject({ hostName: host.hostName, - group: 'Default' + group: 'Default', + isInstalled: host.get('isClientInstalled') }); } }, this); @@ -520,14 +501,83 @@ App.AddHostController = Em.Controller.extend({ }); App.db.setSlaveComponentHosts(slaveComponentHosts); + console.log('addHostController.slaveComponentHosts: saved hosts', slaveComponentHosts); this.set('content.slaveComponentHosts', slaveComponentHosts); }, + /** + * return slaveComponents bound to hosts + * @return {Array} + */ + getSlaveComponentHosts: function () { + var components = [{ + name : 'DATANODE', + service : 'HDFS' + }, + { + name: 'TASKTRACKER', + service: 'MAPREDUCE' + },{ + name: 'HBASE_REGIONSERVER', + service: 'HBASE' + }]; + + var result = []; + var services = App.Service.find(); + var selectedServices = this.get('content.services').filterProperty('isSelected', true).mapProperty('serviceName'); + for(var index=0; index < components.length; index++){ + var comp = components[index]; + if(!selectedServices.contains(comp.service)){ + continue; + } + + + var service = services.findProperty('id', comp.service); + var hosts = []; + + service.get('hostComponents').filterProperty('componentName', comp.name).forEach(function (host_component) { + hosts.push({ + group: "Default", + hostName: host_component.get('host.id'), + isInstalled: true + }); + }, this); + + result.push({ + componentName: comp.name, + displayName: App.format.role(comp.name), + hosts: hosts, + isInstalled: true + }) + } + + var clientsHosts = App.HostComponent.find().filterProperty('componentName', 'HDFS_CLIENT'); + var hosts = []; + + clientsHosts.forEach(function (host_component) { + hosts.push({ + group: "Default", + hostName: host_component.get('host.id'), + isInstalled: true + }); + }, this); + + result.push({ + componentName: 'CLIENT', + displayName: 'client', + hosts: hosts, + isInstalled: true + }) + return result; + }, /** * Load master component hosts data for using in required step controllers */ loadSlaveComponentHosts: function () { var slaveComponentHosts = App.db.getSlaveComponentHosts(); + if(!slaveComponentHosts){ + slaveComponentHosts = this.getSlaveComponentHosts(); + } this.set("content.slaveComponentHosts", slaveComponentHosts); console.log("AddHostController.loadSlaveComponentHosts: loaded hosts ", slaveComponentHosts); }, @@ -542,7 +592,8 @@ App.AddHostController = Em.Controller.extend({ _content.get('configs').forEach(function (_configProperties) { var configProperty = { name: _configProperties.get('name'), - value: _configProperties.get('value') + value: _configProperties.get('value'), + service: _configProperties.get('serviceName') }; serviceConfigProperties.push(configProperty); }, this); @@ -578,13 +629,15 @@ App.AddHostController = Em.Controller.extend({ saveClients: function(stepController){ var clients = []; var serviceComponents = require('data/service_components'); + var hostComponents = App.HostComponent.find(); stepController.get('content').filterProperty('isSelected',true).forEach(function (_service) { var client = serviceComponents.filterProperty('service_name', _service.serviceName).findProperty('isClient', true); if (client) { clients.pushObject({ component_name: client.component_name, - display_name: client.display_name + display_name: client.display_name, + isInstalled: hostComponents.filterProperty('componentName', client.component_name).length > 0 }); } }, this); @@ -622,6 +675,55 @@ App.AddHostController = Em.Controller.extend({ } }, + loadAdvancedConfigs: function () { + App.db.getSelectedServiceNames().forEach(function (_serviceName) { + this.loadAdvancedConfig(_serviceName); + }, this); + }, + /** + * Generate serviceProperties save it to localdata + * called form stepController step6WizardController + */ + + loadAdvancedConfig: function (serviceName) { + var self = this; + var url = (App.testMode) ? '/data/wizard/stack/hdp/version01/' + serviceName + '.json' : App.apiPrefix + '/stacks/HDP/version/1.2.0/services/' + serviceName; // TODO: get this url from the stack selected by the user in Install Options page + var method = 'GET'; + $.ajax({ + type: method, + url: url, + async: false, + dataType: 'text', + timeout: App.timeout, + success: function (data) { + var jsonData = jQuery.parseJSON(data); + console.log("TRACE: Step6 submit -> In success function for the loadAdvancedConfig call"); + console.log("TRACE: Step6 submit -> value of the url is: " + url); + var serviceComponents = jsonData.properties; + serviceComponents.setEach('serviceName', serviceName); + var configs; + if (App.db.getAdvancedServiceConfig()) { + configs = App.db.getAdvancedServiceConfig(); + } else { + configs = []; + } + configs = configs.concat(serviceComponents); + self.set('content.advancedServiceConfig', configs); + App.db.setAdvancedServiceConfig(configs); + console.log('TRACE: servicename: ' + serviceName); + }, + + error: function (request, ajaxOptions, error) { + console.log("TRACE: STep6 submit -> In error function for the loadAdvancedConfig call"); + console.log("TRACE: STep6 submit-> value of the url is: " + url); + console.log("TRACE: STep6 submit-> error code status is: " + request.status); + console.log('Step6 submit: Error message is: ' + request.responseText); + }, + + statusCode: require('data/statusCodes') + }); + }, + /** * Generate clients list for selected services and save it to model * @param stepController step8WizardController or step9WizardController @@ -629,10 +731,11 @@ App.AddHostController = Em.Controller.extend({ installServices: function () { var self = this; var clusterName = this.get('content.cluster.name'); - var url = App.apiPrefix + '/clusters/' + clusterName + '/services?state=INIT'; + var url = (App.testMode) ? '/data/wizard/deploy/poll_1.json' : App.apiPrefix + '/clusters/' + clusterName + '/services?state=INIT'; + var method = (App.testMode) ? 'GET' : 'PUT'; var data = '{"ServiceInfo": {"state": "INSTALLED"}}'; $.ajax({ - type: 'PUT', + type: method, url: url, data: data, async: false, @@ -640,18 +743,21 @@ App.AddHostController = Em.Controller.extend({ timeout: App.timeout, success: function (data) { var jsonData = jQuery.parseJSON(data); + var installSartTime = new Date().getTime(); console.log("TRACE: STep8 -> In success function for the installService call"); console.log("TRACE: STep8 -> value of the url is: " + url); if (jsonData) { var requestId = jsonData.href.match(/.*\/(.*)$/)[1]; + console.log('requestId is: ' + requestId); var clusterStatus = { status: 'PENDING', requestId: requestId, isInstallError: false, - isCompleted: false + isCompleted: false, + installStartTime: installSartTime }; - self.saveClusterStatus(clusterStatus); + //self.saveClusterStatus(clusterStatus); } else { console.log('ERROR: Error occurred in parsing JSON data'); } @@ -667,7 +773,7 @@ App.AddHostController = Em.Controller.extend({ isInstallError: true, isCompleted: false }; - self.saveClusterStatus(clusterStatus); + //self.saveClusterStatus(clusterStatus); }, statusCode: require('data/statusCodes') @@ -682,6 +788,17 @@ App.AddHostController = Em.Controller.extend({ clearAllSteps: function () { this.clearHosts(); //todo it) + }, + + /** + * Clear all temporary data + */ + finish: function(){ + this.setCurrentStep('1', false); + App.db.setService(undefined); //not to use this data at AddService page + App.db.setHosts(undefined); + App.db.setMasterComponentHosts(undefined); + App.db.setSlaveComponentHosts(undefined); } }); diff --git a/ambari-web/app/controllers/main/service/add_controller.js b/ambari-web/app/controllers/main/service/add_controller.js index 1446a90ce5..13489c572f 100644 --- a/ambari-web/app/controllers/main/service/add_controller.js +++ b/ambari-web/app/controllers/main/service/add_controller.js @@ -43,7 +43,8 @@ App.AddServiceController = Em.Controller.extend({ masterComponentHosts: null, serviceConfigProperties: null, advancedServiceConfig: null, - controllerName: 'addServiceController' + controllerName: 'addServiceController', + isWizard: true }), /** @@ -166,16 +167,31 @@ App.AddServiceController = Em.Controller.extend({ * Load clusterInfo(step1) to model */ loadClusterInfo: function(){ - var cluster = { - name: App.router.getClusterName(), - status: "", - isCompleted: true - }; + var cluster = App.db.getClusterStatus(); + if(!cluster){ + cluster = { + name: App.router.getClusterName(), + status: "", + isCompleted: false + }; + App.db.setClusterStatus(cluster); + } this.set('content.cluster', cluster); console.log("AddServiceController:loadClusterInfo: loaded data ", cluster); }, /** + * save status of the cluster. This is called from step8 and step9 to persist install and start requestId + * @param clusterStatus object with status, isCompleted, requestId, isInstallError and isStartError field. + */ + saveClusterStatus: function (clusterStatus) { + clusterStatus.name = this.get('content.cluster.name'); + this.set('content.cluster', clusterStatus); + console.log('called saveClusterStatus ' + JSON.stringify(clusterStatus)); + App.db.setClusterStatus(clusterStatus); + }, + + /** * Temporary function for wizardStep9, before back-end integration */ setInfoForStep9: function () { @@ -441,19 +457,29 @@ App.AddServiceController = Em.Controller.extend({ var service = services.findProperty('id', comp.service); var hosts = []; - service.get('hostComponents').filterProperty('componentName', comp.name).forEach(function (host_component) { + if(!service){ + service = services.findProperty('id', 'HDFS'); + service.get('hostComponents').filterProperty('componentName', 'DATANODE').forEach(function (host_component) { + hosts.push({ + group: "Default", + hostName: host_component.get('host.id'), + isInstalled: false + }); + }, this); + } else { + service.get('hostComponents').filterProperty('componentName', comp.name).forEach(function (host_component) { hosts.push({ group: "Default", hostName: host_component.get('host.id'), isInstalled: true }); - }, this); + }, this); + } result.push({ componentName: comp.name, displayName: App.format.role(comp.name), - hosts: hosts, - isInstalled: true + hosts: hosts }) } @@ -471,8 +497,7 @@ App.AddServiceController = Em.Controller.extend({ result.push({ componentName: 'CLIENT', displayName: 'client', - hosts: hosts, - isInstalled: true + hosts: hosts }) return result; @@ -658,7 +683,7 @@ App.AddServiceController = Em.Controller.extend({ isCompleted: false, installStartTime: installSartTime }; - //self.saveClusterStatus(clusterStatus); + self.saveClusterStatus(clusterStatus); } else { console.log('ERROR: Error occurred in parsing JSON data'); } @@ -674,7 +699,7 @@ App.AddServiceController = Em.Controller.extend({ isInstallError: true, isCompleted: false }; - //self.saveClusterStatus(clusterStatus); + self.saveClusterStatus(clusterStatus); }, statusCode: require('data/statusCodes') @@ -700,6 +725,7 @@ App.AddServiceController = Em.Controller.extend({ App.db.setHosts(undefined); App.db.setMasterComponentHosts(undefined); App.db.setSlaveComponentHosts(undefined); + App.db.setClusterStatus(undefined); } }); diff --git a/ambari-web/app/controllers/main/service/info/configs.js b/ambari-web/app/controllers/main/service/info/configs.js index 4dbb6e0983..3194e23cef 100644 --- a/ambari-web/app/controllers/main/service/info/configs.js +++ b/ambari-web/app/controllers/main/service/info/configs.js @@ -23,14 +23,21 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({ name: 'mainServiceInfoConfigsController', stepConfigs: [], //contains all field properties that are viewed in this service selectedService: null, + serviceConfigTags: null, + globalConfigs: [], + uiConfigs: [], + isApplyingChanges: false, serviceConfigs: require('data/service_configs'), + configs: require('data/config_properties').configProperties, + configMapping: require('data/config_mapping'), + customConfigs: require('data/custom_configs'), isSubmitDisabled: function () { - return !this.stepConfigs.everyProperty('errorCount', 0); - }.property('stepConfigs.@each.errorCount'), + return (!(this.stepConfigs.everyProperty('errorCount', 0)) || this.get('isApplyingChanges')); + }.property('stepConfigs.@each.errorCount', 'isApplyingChanges'), - slaveComponentHosts : function(){ - if(!this.get('content')){ + slaveComponentHosts: function () { + if (!this.get('content')) { return; } console.log('slaveComponentHosts', App.db.getSlaveComponentHosts()); @@ -39,11 +46,13 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({ clearStep: function () { this.get('stepConfigs').clear(); + this.get('globalConfigs').clear(); + if (this.get('serviceConfigTags')) { + this.set('serviceConfigTags', null); + } }, - serviceConfigProperties: function() { - console.log('serviceConfigProperties'); - console.log(App.db.getServiceConfigProperties()); + serviceConfigProperties: function () { return App.db.getServiceConfigProperties(); }.property('content'), @@ -52,34 +61,204 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({ */ loadStep: function () { console.log("TRACE: Loading configure for service"); - this.clearStep(); - this.renderServiceConfigs(this.serviceConfigs); + //STEP 1: set the present state of the service Properties. State depends on array of: unique combination of type(ex. core-site) and tag (ex. version01) derived from serviceInfo desired_state + this.setServciceConfigs(); + //STEP 2: Create an array of objects defining tagnames to be polled and new tagnames to be set after submit + this.setServiceTagNames(); + //STEP 3: Set globalConfigs and Get an array of serviceProperty objects + var serviceConfigs = this.getSitesConfigProperties(); + //STEP 4: Remove properties mentioned in configMapping from serviceConfig + this.get('configMapping').forEach(function (_configs) { - var storedServices = this.get('serviceConfigProperties'); - if (storedServices) { - var configs = new Ember.Set(); + }, this) + //STEP 5: Add the advanced configs to the serviceConfigs property - // for all services` - this.get('stepConfigs').forEach(function (_content) { - //for all components - _content.get('configs').forEach(function (_config) { + var advancedConfig = App.router.get('installerController').loadAdvancedConfig(this.get('content.serviceName')); + var service = this.get('serviceConfigs').findProperty('serviceName', this.get('content.serviceName')); + advancedConfig.forEach(function (_config) { + if (service) { + if (!this.get('configMapping').someProperty('name', _config.name)) { + if (service.configs.someProperty('name', _config.name)) { + service.configs.findProperty('name', _config.name).description = _config.description; + } else { + _config.id = "site property"; + _config.category = 'Advanced'; + _config.displayName = _config.name; + _config.defaultValue = _config.value; + if (/\${.*}/.test(_config.value) || (service.serviceName !== 'OOZIE' && service.serviceName !== 'HBASE')) { + _config.isRequired = false; + _config.value = ''; + } else if (/^\s+$/.test(_config.value)) { + _config.isRequired = false; + } + _config.isVisible = true; + _config.displayType = 'advanced'; + service.configs.pushObject(_config); + } + } + } + }, this); + this.loadCustomConfig(); - var componentVal = storedServices.findProperty('name', _config.get('name')); - //if we have config for specified component - if(componentVal){ + this.renderServiceConfigs(this.get('serviceConfigs')); - //set it - _config.set('value', componentVal.value) - } + console.log('---------------------------------------'); - }, this); + + }, + + /** + * Get configuration for the *-site.xml + */ + setServciceConfigs: function () { + var self = this; + var url = App.apiPrefix + '/clusters/' + App.router.getClusterName() + '/services/' + this.get('content.serviceName'); + $.ajax({ + type: 'GET', + url: url, + async: false, + timeout: 10000, + dataType: 'text', + success: function (data) { + console.log("TRACE: In success function for the GET getServciceConfigs call"); + console.log("TRACE: The url is: " + url); + var jsonData = jQuery.parseJSON(data); + self.set('serviceConfigTags', jQuery.parseJSON(jsonData.ServiceInfo.desired_configs)); + }, + + error: function (request, ajaxOptions, error) { + console.log("TRACE: In error function for the getServciceConfigs call"); + console.log("TRACE: value of the url is: " + url); + console.log("TRACE: error code status is: " + request.status); + + }, + + statusCode: require('data/statusCodes') + }); + }, + + /** + * set tagnames for configuration of the *-site.xml + */ + setServiceTagNames: function () { + console.log("TRACE: In setServiceTagNames function:"); + var newServiceConfigTags = []; + var serviceConfigTags = this.get('serviceConfigTags'); + var time = new Date().getMilliseconds(); + console.log("The value of time is: " + time); + for (var index in serviceConfigTags) { + console.log("The value of serviceConfigTags[index]: " + serviceConfigTags[index]); + newServiceConfigTags.pushObject({ + siteName: index, + tagName: serviceConfigTags[index], + newTagName: serviceConfigTags[index] + time }, this); } + this.set('serviceConfigTags', newServiceConfigTags); + }, - console.log('---------------------------------------'); - console.log(this.get('stepConfigs')); + /** + * Render a custom conf-site box for entering properties that will be written in *-site.xml files of the services + */ + loadCustomConfig: function () { + var serviceConfig = this.get('serviceConfigs').findProperty('serviceName', this.get('content.serviceName')); + var customConfig = this.get('customConfigs').findProperty('serviceName', this.get('content.serviceName')); + serviceConfig.configs.pushObject(customConfig); + }, + + /** + * load the configs from the server + */ + getSitesConfigProperties: function () { + var serviceConfigs = []; + var globalConfigs = []; + var localServiceConfigs = this.get('serviceConfigs').findProperty('serviceName', this.get('content.serviceName')); + + this.get('serviceConfigTags').forEach(function (_tag) { + var properties = this.getSiteConfigProperties(_tag.siteName, _tag.tagName); + for (var index in properties) { + var serviceConfigObj = { + name: index, + value: properties[index], + defaultValue: properties[index], + filename: _tag.siteName + ".xml", + isVisible: true, + isRequired: true + }; + if (_tag.siteName === 'global') { + if (localServiceConfigs.configs.someProperty('name', index)) { + var item = localServiceConfigs.configs.findProperty('name', index); + item.value = properties[index]; + item.defaultValue = properties[index]; + if (item.displayType === 'int') { + if (/\d+m$/.test(item.value)) { + item.value = item.value.slice(0, item.value.length - 1); + item.defaultValue = item.value; + } + } + if (item.displayType === 'checkbox') { + switch (item.value) { + case 'true' : + item.value = true; + break; + case 'false' : + item.value = false; + break; + } + } + } + serviceConfigObj.id = 'puppet var'; + serviceConfigObj.serviceName = this.get('configs').someProperty('name', index) ? this.get('configs').findProperty('name', index).serviceName : null; + serviceConfigObj.category = this.get('configs').someProperty('name', index) ? this.get('configs').findProperty('name', index).category : null; + globalConfigs.pushObject(serviceConfigObj); + } else if (!this.get('configMapping').someProperty('name', index)) { + if (_tag.siteName !== localServiceConfigs.filename) { + serviceConfigObj.isVisible = false; + } + serviceConfigObj.id = 'site property'; + serviceConfigObj.serviceName = this.get('content.serviceName'); + serviceConfigObj.category = 'Advanced'; + serviceConfigObj.displayName = index; + serviceConfigObj.displayType = 'advanced'; + localServiceConfigs.configs.pushObject(serviceConfigObj); + } + serviceConfigs.pushObject(serviceConfigObj); + } + }, this); + this.set('globalConfigs', globalConfigs); + return serviceConfigs; + }, + + getSiteConfigProperties: function (sitename, tagname) { + var self = this; + var properties = {}; + var url = App.apiPrefix + '/clusters/' + App.router.getClusterName() + '/configurations/?type=' + sitename + '&tag=' + tagname; + $.ajax({ + type: 'GET', + url: url, + async: false, + timeout: 10000, + dataType: 'json', + success: function (data) { + console.log("TRACE: In success function for the GET getSiteConfigProperties call"); + console.log("TRACE: The url is: " + url); + properties = data.items.findProperty('tag', tagname).properties; + + console.log("The value of config properties is: " + properties); + }, + + error: function (request, ajaxOptions, error) { + console.log("TRACE: In error function for the getServciceConfigs call"); + console.log("TRACE: value of the url is: " + url); + console.log("TRACE: error code status is: " + request.status); + + }, + + statusCode: require('data/statusCodes') + }); + return properties; }, /** @@ -89,6 +268,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({ renderServiceConfigs: function (serviceConfigs) { serviceConfigs.forEach(function (_serviceConfig) { var serviceConfig = App.ServiceConfig.create({ + filename: _serviceConfig.filename, serviceName: _serviceConfig.serviceName, displayName: _serviceConfig.displayName, configCategories: _serviceConfig.configCategories, @@ -118,35 +298,653 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({ _componentConfig.configs.forEach(function (_serviceConfigProperty) { var serviceConfigProperty = App.ServiceConfigProperty.create(_serviceConfigProperty); serviceConfigProperty.serviceConfig = componentConfig; - serviceConfigProperty.initialValue(); + this.initialValue(serviceConfigProperty); componentConfig.configs.pushObject(serviceConfigProperty); serviceConfigProperty.validate(); }, this); }, + restartServicePopup: function (event) { + console.log("Enered the entry pointttt"); + var self = this; + var result; + console.log('I am over hererererere: ' + this.get('content.healthStatus')); + if (this.get('isApplyingChanges') === true) { + return; + } + App.ModalPopup.show({ + header: 'Restart ' + self.get('content.serviceName'), + primary: 'Restart', + onPrimary: function () { + self.restartService(); + this.hide(); + }, + onSecondary: function () { + this.hide(); + }, + bodyClass: Ember.View.extend({ + template: Ember.Handlebars.compile(['<p>Restart the service</p>'].join('\n')) + }) + }); + }, + + restartService: function () { + console.log("In restart servicesssss"); + this.set('isApplyingChanges', true); + this.get('serviceConfigTags').forEach(function (_tag) { + _tag.newTagName = _tag.newTagName + new Date().getMilliseconds(); + }, this); + + //Step 1: Stop the service + + if (this.stopService()) { + this.doPolling('stop', function () { + this.applyConfigurations(); + }, function () { + this.failuresInStop(); + }); + } else { + this.failuresInStop(); + } + }, + + failuresInStop: function () { + console.log("Step 1 faliure"); + this.msgPopup('Restart ' + this.get('content.serviceName'), 'Failed to stop the service'); + this.set('isApplyingChanges', false); + }, + + applyConfigurations: function () { + if (App.testMode === true) { + result = true + } else { + var result = this.saveServiceConfigProperties(); + } + + if (result === false) { + console.log("Step2 failure"); + this.msgPopup('Restart ' + this.get('content.serviceName'), 'Failed to apply configs. Start the service again with last configurations', this.startServiceWrapper); + } else { + if (this.startService()) { + this.doPolling('start', function () { + this.msgPopup('Restart ' + this.get('content.serviceName'), 'Restarted the service successfully with new configurations'); + this.set('isApplyingChanges', false); + }, function () { + // this.rollBackPopup('Configs applied but failures encountered during starting/checking service. Do you want to rollback to the last service configuration and restart the service.'); + console.log("Configs applied but failures encountered during starting/checking service."); + }); + } else { + this.msgPopup('Restart ' + this.get('content.serviceName'), 'Failed to start the service'); + this.set('isApplyingChanges', false); + } + console.log("Error in start service API"); + } + }, + + startServiceWrapper: function () { + if (this.startService()) { + this.doPolling('start', function () { + this.msgPopup('Restart ' + this.get('content.serviceName'), 'Started the service with the last known configuration.'); + this.set('isApplyingChanges', false); + }, function () { + this.msgPopup('Restart ' + this.get('content.serviceName'), 'Started the service with the last known configuration.'); + this.set('isApplyingChanges', false); + }); + } else { + this.msgPopup('Restart ' + this.get('content.serviceName'), 'Started the service with the last known configuration.'); + this.set('isApplyingChanges', false); + } + }, + + + rollBack: function () { + var result; + //STEP 1: Apply the last known configuration + result = this.applyCreatedConfToService('previous'); + //CASE 1: failure for rollback + if (result === false) { + console.log("rollback1 faliure"); + this.msgPopup('Restart ' + this.get('content.serviceName'), 'Failed to rolled back to the last known configuration'); + } else { + //STEP 2: start the service + if (this.startService()) { + this.doPolling('start', function () { + this.msgPopup('Restart ' + this.get('content.serviceName'), 'Successfully rolled back to the last known configuration'); + this.set('isApplyingChanges', false); + }, function () { + this.msgPopup('Restart ' + this.get('content.serviceName'), 'Rolled back to the last configuration but failed to start the service with the rolled back configuration'); + this.set('isApplyingChanges', false); + }); + } else { + this.msgPopup('Restart ' + this.get('content.serviceName'), 'Rolled back to the last configuration but failed to start the service with the rolled back configuration'); + this.set('isApplyingChanges', false); + } + } + }, + + startService: function () { + var self = this; + var clusterName = App.router.getClusterName(); + var url = App.apiPrefix + '/clusters/' + clusterName + '/services/' + this.get('content.serviceName'); + var method = (App.testMode) ? 'GET' : 'PUT'; + var data = '{"ServiceInfo": {"state": "STARTED"}}'; + var result; + $.ajax({ + type: method, + url: url, + data: data, + async: false, + dataType: 'text', + timeout: 5000, + success: function (data) { + var jsonData = jQuery.parseJSON(data); + console.log("TRACE: In success function for the startService call"); + console.log("TRACE: value of the url is: " + url); + result = true; + }, + + error: function (request, ajaxOptions, error) { + console.log("TRACE: In error function for the startService call"); + console.log("TRACE: value of the url is: " + url); + console.log("TRACE: error code status is: " + request.status); + + result = (App.testMode) ? true : false; + + }, + + statusCode: require('data/statusCodes') + }); + return result; + }, + + msgPopup: function (header, message, callback) { + var self = this; + var result; + + App.ModalPopup.show({ + header: 'Restart ' + self.get('content.serviceName'), + secondary: false, + onPrimary: function () { + if (callback !== undefined) { + callback(); + } + this.hide(); + }, + bodyClass: Ember.View.extend({ + template: Ember.Handlebars.compile(['<p>{{view.message}}</p>'].join('\n')), + message: message + }) + }); + }, + + rollBackPopup: function (message) { + var self = this; + var result; + + App.ModalPopup.show({ + header: 'Restart ' + self.get('content.serviceName'), + primary: 'Yes', + secondary: 'No', + onPrimary: function () { + self.rollBack(); + this.hide(); + }, + bodyClass: Ember.View.extend({ + template: Ember.Handlebars.compile(['<p>{{view.message}}</p>'].join('\n')), + message: message + }) + }); + }, + + stopService: function () { + var self = this; + var clusterName = App.router.getClusterName(); + var url = App.apiPrefix + '/clusters/' + clusterName + '/services/' + this.get('content.serviceName'); + var method = (App.testMode) ? 'GET' : 'PUT'; + var data = '{"ServiceInfo": {"state": "INSTALLED"}}'; + var result; + $.ajax({ + type: method, + url: url, + data: data, + async: false, + dataType: 'text', + timeout: 5000, + success: function (data) { + var jsonData = jQuery.parseJSON(data); + console.log("TRACE: In success function for the stopService call"); + console.log("TRACE: value of the url is: " + url); + result = true; + }, + + error: function (request, ajaxOptions, error) { + console.log("TRACE: STep8 -> In error function for the stopService call"); + console.log("TRACE: STep8 -> value of the url is: " + url); + console.log("TRACE: STep8 -> error code status is: " + request.status); + result = (App.testMode) ? true : false; + }, + + statusCode: require('data/statusCodes') + }); + return result; + }, + /** * Save config properties */ saveServiceConfigProperties: function () { - var serviceConfigProperties = []; - this.get('stepConfigs').forEach(function (_content) { - _content.get('configs').forEach(function (_configProperties) { - var configProperty = { - name: _configProperties.get('name'), - value: _configProperties.get('value'), - service: _configProperties.get('serviceName') - }; - serviceConfigProperties.push(configProperty); + var result = false; + var configs = this.get('stepConfigs').findProperty('serviceName', this.get('content.serviceName')).get('configs'); + this.saveGlobalConfigs(configs); + this.saveSiteConfigs(configs); + this.setCustomConfigs(); + var result = this.createConfigurations(); + if (result === true) { + result = this.applyCreatedConfToService('new'); + } + console.log("The result from applyCreatdConfToService is: " + result); + return result; + }, + + saveGlobalConfigs: function (configs) { + var globalConfigs = this.get('globalConfigs'); + configs.filterProperty('id', 'puppet var').forEach(function (_config) { + if (globalConfigs.someProperty('name', _config.name)) { + globalConfigs.findProperty('name', _config.name).value = _config.value; + } else { + globalConfigs.pushObject({ + name: _config.name, + value: _config.value + }); + } + }, this); + this.set('globalConfigs', globalConfigs); + }, + + saveSiteConfigs: function (configs) { + var storedConfigs = this.get('stepConfigs').filterProperty('id', 'site property').filterProperty('value'); + var uiConfigs = this.loadUiSideConfigs(); + this.set('uiConfigs', storedConfigs.concat(uiConfigs)); + }, + + loadUiSideConfigs: function () { + var uiConfig = []; + var configs = this.get('configMapping').filterProperty('foreignKey', null); + configs.forEach(function (_config) { + var value = this.getGlobConfigValue(_config.templateName, _config.value); + uiConfig.pushObject({ + "id": "site property", + "name": _config.name, + "value": value, + "filename": _config.filename + }); + }, this); + var dependentConfig = this.get('configMapping').filterProperty('foreignKey'); + dependentConfig.forEach(function (_config) { + this.setConfigValue(uiConfig, _config); + uiConfig.pushObject({ + "id": "site property", + "name": _config.name, + "value": _config.value, + "filename": _config.filename + }); + }, this); + return uiConfig; + }, + /** + * Set all site property that are derived from other puppet-variable + */ + + getGlobConfigValue: function (templateName, expression) { + var express = expression.match(/<(.*?)>/g); + var value = expression; + if (express == null) { + return expression; + } + express.forEach(function (_express) { + //console.log("The value of template is: " + _express); + var index = parseInt(_express.match(/\[([\d]*)(?=\])/)[1]); + if (this.get('globalConfigs').someProperty('name', templateName[index])) { + //console.log("The name of the variable is: " + this.get('content.serviceConfigProperties').findProperty('name', templateName[index]).name); + var globValue = this.get('globalConfigs').findProperty('name', templateName[index]).value; + value = value.replace(_express, globValue); + } else { + /* + console.log("ERROR: The variable name is: " + templateName[index]); + console.log("ERROR: mapped config from configMapping file has no corresponding variable in " + + "content.serviceConfigProperties. Two possible reasons for the error could be: 1) The service is not selected. " + + "and/OR 2) The service_config metadata file has no corresponding global var for the site property variable"); + */ + value = null; + } + }, this); + return value; + }, + /** + * Set all site property that are derived from other site-properties + */ + setConfigValue: function (uiConfig, config) { + var fkValue = config.value.match(/<(foreignKey.*?)>/g); + if (fkValue) { + fkValue.forEach(function (_fkValue) { + var index = parseInt(_fkValue.match(/\[([\d]*)(?=\])/)[1]); + if (uiConfig.someProperty('name', config.foreignKey[index])) { + var globalValue = uiConfig.findProperty('name', config.foreignKey[index]).value; + config.value = config.value.replace(_fkValue, globalValue); + } else if (this.get('stepConfigs').someProperty('name', config.foreignKey[index])) { + var globalValue; + if (this.get('stepConfigs').findProperty('name', config.foreignKey[index]).value === '') { + globalValue = this.get('stepConfigs').findProperty('name', config.foreignKey[index]).defaultValue; + } else { + globalValue = this.get('stepConfigs').findProperty('name', config.foreignKey[index]).value; + } + config.value = config.value.replace(_fkValue, globalValue); + } }, this); + } + if (fkValue = config.name.match(/<(foreignKey.*?)>/g)) { + fkValue.forEach(function (_fkValue) { + var index = parseInt(_fkValue.match(/\[([\d]*)(?=\])/)[1]); + if (uiConfig.someProperty('name', config.foreignKey[index])) { + var globalValue = uiConfig.findProperty('name', config.foreignKey[index]).value; + config.name = config.name.replace(_fkValue, globalValue); + } else if (this.get('stepConfigs').someProperty('name', config.foreignKey[index])) { + var globalValue; + if (this.get('stepConfigs').findProperty('name', config.foreignKey[index]).value === '') { + globalValue = this.get('stepConfigs').findProperty('name', config.foreignKey[index]).defaultValue; + } else { + globalValue = this.get('stepConfigs').findProperty('name', config.foreignKey[index]).value; + } + config.name = config.name.replace(_fkValue, globalValue); + } + }, this); + } + //For properties in the configMapping file having foreignKey and templateName properties. + var templateValue = config.value.match(/<(templateName.*?)>/g); + if (templateValue) { + templateValue.forEach(function (_value) { + var index = parseInt(_value.match(/\[([\d]*)(?=\])/)[1]); + if (this.get('globalConfigs').someProperty('name', config.templateName[index])) { + var globalValue = this.get('globalConfigs').findProperty('name', config.templateName[index]).value; + config.value = config.value.replace(_value, globalValue); + } + }, this); + } + }, + createConfigurations: function () { + var result = true; + var serviceConfigTags = this.get('serviceConfigTags'); + serviceConfigTags.forEach(function (_serviceTags) { + if (_serviceTags.siteName === 'global') { + console.log("TRACE: Inside globalssss"); + result = this.createConfigSite(this.createGlobalSiteObj(_serviceTags.newTagName)); + } else if (_serviceTags.siteName === 'core-site') { + console.log("TRACE: Inside core-site"); + result = this.createConfigSite(this.createCoreSiteObj(_serviceTags.newTagName)); + } else { + result = this.createConfigSite(this.createSiteObj(_serviceTags.siteName, _serviceTags.newTagName)); + } + if (result === false) { + return false; + } + }, this); + return true; + }, + + createConfigSite: function (data) { + var result; + var realData = data; + console.log("Inside createConfigSite"); + var clusterName = App.router.getClusterName(); + var url = App.apiPrefix + '/clusters/' + clusterName + '/configurations'; + $.ajax({ + type: 'POST', + url: url, + data: JSON.stringify(data), + async: false, + dataType: 'text', + timeout: 5000, + success: function (data) { + var jsonData = jQuery.parseJSON(data); + result = true; + console.log("TRACE: In success function for the createConfigSite"); + console.log("TRACE: value of the url is: " + url); + console.log("TRACE: value of the received data is: " + jsonData); + }, + + error: function (request, ajaxOptions, error) { + result = false; + console.log('TRACE: In Error '); + console.log("The original data was: " + JSON.stringify(realData)); + console.log('TRACE: Error message is: ' + request.responseText); + console.log("TRACE: value of the url is: " + url); + }, + + statusCode: require('data/statusCodes') + }); + console.log("Exiting createConfigSite"); + console.log("Value of result is: " + result); + return result; + }, + createGlobalSiteObj: function (tagName) { + var globalSiteProperties = {}; + this.get('globalConfigs').forEach(function (_globalSiteObj) { + // do not pass any globalConfigs whose name ends with _host or _hosts + if (!/_hosts?$/.test(_globalSiteObj.name)) { + // append "m" to JVM memory options + if (/_heapsize|_newsize|_maxnewsize$/.test(_globalSiteObj.name)) { + _globalSiteObj.value += "m"; + } + globalSiteProperties[_globalSiteObj.name] = _globalSiteObj.value; + //console.log("TRACE: name of the global property is: " + _globalSiteObj.name); + //console.log("TRACE: value of the global property is: " + _globalSiteObj.value); + } + }, this); + return {"type": "global", "tag": tagName, "properties": globalSiteProperties}; + }, + + createCoreSiteObj: function (tagName) { + var coreSiteObj = this.get('uiConfigs').filterProperty('filename', 'core-site.xml'); + var coreSiteProperties = {}; + // hadoop.proxyuser.oozie.hosts needs to be skipped if oozie is not selected + var isOozieSelected = (this.get('content.serviceName') === 'OOZIE'); + coreSiteObj.forEach(function (_coreSiteObj) { + if (isOozieSelected || _coreSiteObj.name != 'hadoop.proxyuser.oozie.hosts') { + coreSiteProperties[_coreSiteObj.name] = _coreSiteObj.value; + } + //console.log("TRACE: name of the property is: " + _coreSiteObj.name); + //console.log("TRACE: value of the property is: " + _coreSiteObj.value); + }, this); + return {"type": "core-site", "tag": tagName, "properties": coreSiteProperties}; + }, + + createSiteObj: function (siteName, tagName) { + var siteObj = this.get('uiConfigs').filterProperty('filename', siteName + ".xml"); + var siteProperties = {}; + siteObj.forEach(function (_siteObj) { + siteProperties[_siteObj.name] = _siteObj.value; + }, this); + return {"type": siteName, "tag": tagName, "properties": siteProperties}; + }, + + applyCreatedConfToService: function (configStatus) { + var result; + var clusterName = App.router.getClusterName(); + var url = App.apiPrefix + '/clusters/' + clusterName + '/services/' + this.get('content.serviceName'); + var data = this.getConfigForService(configStatus); + var realData = data; + $.ajax({ + type: 'PUT', + url: url, + async: false, + dataType: 'text', + data: JSON.stringify(data), + timeout: 5000, + success: function (data) { + var jsonData = jQuery.parseJSON(data); + console.log("TRACE: In success function for the applyCreatedConfToService call"); + console.log("TRACE: value of the url is: " + url); + result = true; + }, + + error: function (request, ajaxOptions, error) { + console.log('Error: In Error of apply'); + console.log("The original data was: " + JSON.stringify(realData)); + console.log('Error: Error message is: ' + request.responseText); + result = false; + }, + + statusCode: require('data/statusCodes') + }); + console.log("Exiting applyCreatedConfToService"); + console.log("Value of result is: " + result); + return result; + }, + + getConfigForService: function (config) { + var data = {config: {}}; + this.get('serviceConfigTags').forEach(function (_serviceTag) { + if (config === 'new') + data.config[_serviceTag.siteName] = _serviceTag.newTagName; + else if (config = 'previous') { + data.config[_serviceTag.siteName] = _serviceTag.tagName; + } + }, this); + return data; + }, + + setCustomConfigs: function () { + var site = this.get('stepConfigs').filterProperty('id', 'conf-site'); + site.forEach(function (_site) { + var keyValue = _site.value.split(/\n+/); + if (keyValue) { + keyValue.forEach(function (_keyValue) { + console.log("The value of the keyValue is: " + _keyValue.trim()); + _keyValue = _keyValue.trim(); + var key = _keyValue.match(/(.+)=/); + var value = _keyValue.match(/=(.*)/); + if (key) { + this.setSiteProperty(key[1], value[1], _site.filename); + } + + }, this); + } }, this); + }, + + /** + * Set property of the site variable + */ + setSiteProperty: function (key, value, filename) { + if (this.get('uiConfigs').someProperty('name', key)) { + this.get('uiConfigs').findProperty('name', key).value = value; + } else { + this.get('uiConfigs').pushObject({ + "id": "site property", + "name": key, + "value": value, + "filename": filename + }); + } + }, + + getUrl: function (testUrl, url) { + return (App.testMode) ? testUrl : App.apiPrefix + '/clusters/' + App.router.getClusterName() + url; + }, - App.db.setServiceConfigProperties(serviceConfigProperties); - alert('Data saved successfully'); -// this.set('content.serviceConfigProperties', serviceConfigProperties); + doPolling: function (desiredStatus, successCallback, errCallback) { + var POLL_INTERVAL = 4000; + var self = this; + var result = true; + var servicesUrl1; + if (desiredStatus === 'stop') { + servicesUrl1 = this.getUrl('/data/dashboard/mapreduce/mapreduce_stop.json', '/services?ServiceInfo/service_name=' + this.get('content.serviceName') + '&fields=components/host_components/*'); + } else if (desiredStatus === 'start') { + servicesUrl1 = this.getUrl('/data/dashboard/mapreduce/mapreduce_start.json', '/services?ServiceInfo/service_name=' + this.get('content.serviceName') + '&fields=components/host_components/*'); + } + + App.HttpClient.get(servicesUrl1, App.servicesMapper, { + complete: function () { + var status; + if (result === false) { + return; + } + if (desiredStatus === 'stop') { + status = self.get('content.isStopped'); + if (self.get('content.components').someProperty('workStatus', 'STOP_FAILED')) { + // if (!self.stopService()) { + // return; + //} + } + } else if (desiredStatus === 'start') { + status = self.get('content.isStarted'); + if (self.get('content.components').someProperty('workStatus', 'START_FAILED')) { + //if (!self.startService()) { + // return; + //} + } + } + if (status !== true) { + window.setTimeout(function () { + self.doPolling(desiredStatus, successCallback, errCallback); + }, POLL_INTERVAL); + } else if (status === true) { + successCallback.apply(self); + } + }, + error: function (jqXHR, textStatus) { + errCallback.apply(self); + result = false; + } + }); + return result; + }, + + initialValue: function (config) { + switch (config.name) { + case 'namenode_host': + config.set('id', 'puppet var'); + config.set('value', this.get('content.components').findProperty('componentName', 'NAMENODE').get('host.hostName')); + break; + case 'snamenode_host': + config.set('id', 'puppet var'); + config.set('value', this.get('content.components').findProperty('componentName', 'SECONDARY_NAMENODE').get('host.hostName')); + break; + case 'jobtracker_host': + config.set('id', 'puppet var'); + config.set('value', this.get('content.components').findProperty('componentName', 'JOBTRACKER').get('host.hostName')); + break; + case 'hbasemaster_host': + config.set('id', 'puppet var'); + config.set('value', this.get('content.components').findProperty('componentName', 'HBASE_MASTER').get('host.hostName')); + break; + case 'hivemetastore_host': + config.set('id', 'puppet var'); + config.set('value', this.get('content.components').findProperty('componentName', 'HIVE_SERVER').get('host.hostName')); + break; + case 'hive_ambari_host': + config.set('id', 'puppet var'); + config.set('value', this.get('content.components').findProperty('componentName', 'HIVE_SERVER').get('host.hostName')); + break; + case 'oozieserver_host': + config.set('id', 'puppet var'); + config.set('value', this.get('content.components').findProperty('componentName', 'OOZIE_SERVER').get('host.hostName')); + break; + case 'oozie_ambari_host': + config.set('id', 'puppet var'); + config.set('value', this.get('content.components').findProperty('componentName', 'OOZIE_SERVER').get('host.hostName')); + break; + case 'zookeeperserver_hosts': + config.set('id', 'puppet var'); + config.set('value', this.get('content.components').findProperty('componentName', 'ZOOKEEPER_SERVER').get('host.hostName')); + break; + } } + }); + App.MainServiceSlaveComponentGroupsController = App.SlaveComponentGroupsController.extend({ name: 'mainServiceSlaveComponentGroupsController', contentBinding: 'App.router.mainServiceInfoConfigsController.slaveComponentHosts', diff --git a/ambari-web/app/controllers/main/service/item.js b/ambari-web/app/controllers/main/service/item.js index cfc7e2baa2..90fecfc785 100644 --- a/ambari-web/app/controllers/main/service/item.js +++ b/ambari-web/app/controllers/main/service/item.js @@ -26,7 +26,7 @@ App.MainServiceItemController = Em.Controller.extend({ * @param url * @param data Object to send */ - sendCommandToServer : function(url, method,postData, callback){ + sendCommandToServer : function(url, method, postData, callback){ var url = (App.testMode) ? '/data/wizard/deploy/poll_1.json' : //content is the same as ours App.apiPrefix + '/clusters/' + App.router.getClusterName() + url; @@ -36,7 +36,7 @@ App.MainServiceItemController = Em.Controller.extend({ $.ajax({ type: method, url: url, - data: JSON.stringify(postData), + data: (postData != null) ? JSON.stringify(postData) : null, dataType: 'json', timeout: App.timeout, success: function(data){ diff --git a/ambari-web/app/controllers/wizard/step10_controller.js b/ambari-web/app/controllers/wizard/step10_controller.js index 3ad7485567..9f4c1246cd 100644 --- a/ambari-web/app/controllers/wizard/step10_controller.js +++ b/ambari-web/app/controllers/wizard/step10_controller.js @@ -66,7 +66,12 @@ App.WizardStep10Controller = Em.Controller.extend({ var succededHosts = hostsInfo.filterProperty('status', 'success'); var warnedHosts = hostsInfo.filterProperty('status', 'warning').concat(hostsInfo.filterProperty('status', 'failed')); if (succededHosts.length) { - var successStatement = succededHosts.length + ' nodes succeded completely to install and start all service components assigned to them.'; + var successStatement; + if (succededHosts.length > 1) { + successStatement = succededHosts.length + ' nodes succeded completely to install and start all service components assigned to them.'; + } else { + successStatement = succededHosts.length + ' node succeded completely to install and start all service components assigned to it.'; + } this.get('clusterInfo').findProperty('id', 1).get('status').pushObject(Ember.Object.create({ id: 1, displayStatement: successStatement @@ -281,7 +286,7 @@ App.WizardStep10Controller = Em.Controller.extend({ loadNagios: function (component) { if (component.get('hostName')) { - var statement = 'Ganglia Server installed on ' + component.get('hostName'); + var statement = 'Nagios Server installed on ' + component.get('hostName'); this.get('clusterInfo').findProperty('id', 2).get('status').pushObject(Ember.Object.create({ id: 1, displayStatement: statement @@ -315,13 +320,15 @@ App.WizardStep10Controller = Em.Controller.extend({ } }, - loadInstallTime: function() { - var statement = 'Install and start of all services completed in ' + this.get('content.cluster.serviceStartTime') + ' minutes'; - this.get('clusterInfo').pushObject(Ember.Object.create({ - id: 5, - displayStatement: statement, - status: [] - })); + loadInstallTime: function () { + if (this.get('content.cluster.installTime')) { + var statement = 'Install and start of all services completed in ' + this.get('content.cluster.installTime') + ' minutes'; + this.get('clusterInfo').pushObject(Ember.Object.create({ + id: 5, + displayStatement: statement, + status: [] + })); + } } diff --git a/ambari-web/app/controllers/wizard/step5_controller.js b/ambari-web/app/controllers/wizard/step5_controller.js index 138ce2a84a..496c817ad0 100644 --- a/ambari-web/app/controllers/wizard/step5_controller.js +++ b/ambari-web/app/controllers/wizard/step5_controller.js @@ -64,7 +64,7 @@ App.WizardStep5Controller = Em.Controller.extend({ host_name: _host.name, cpu: _host.cpu, memory: _host.memory, - host_info: "%@ ( %@GB %@cores )".fmt(_host.name, _host.memory, _host.cpu) + host_info: "%@ (%@, %@ cores)".fmt(_host.name, (_host.memory * 1024).bytesToSize(1, 'parseFloat'), _host.cpu) }); this.get("hosts").pushObject(hostObj); @@ -92,7 +92,7 @@ App.WizardStep5Controller = Em.Controller.extend({ var masterComponents = this.get('components').filterProperty('isMaster', true); //get full list from mock data var servicesLength = services.length; - for (var index =0; index < servicesLength; index++) { + for (var index = 0; index < servicesLength; index++) { var componentInfo = masterComponents.filterProperty('service_name', services[index]); componentInfo.forEach(function (_componentInfo) { @@ -383,11 +383,10 @@ App.WizardStep5Controller = Em.Controller.extend({ mappedHosts.forEach(function (item) { hostObj = self.get("hosts").findProperty("host_name", item); console.log("Name of the host is: " + hostObj.host_name); - hostInfo = " ( " + hostObj.get("memory") + "GB" + " " + hostObj.get("cpu") + "cores )"; mappingObject = Ember.Object.create({ host_name: item, - hostInfo: hostInfo, + hostInfo: hostObj.host_info, masterServices: self.get("selectedServicesMasters").filterProperty("selectedHost", item) }); diff --git a/ambari-web/app/controllers/wizard/step6_controller.js b/ambari-web/app/controllers/wizard/step6_controller.js index 41c8defab4..fbb88ff146 100644 --- a/ambari-web/app/controllers/wizard/step6_controller.js +++ b/ambari-web/app/controllers/wizard/step6_controller.js @@ -231,7 +231,7 @@ App.WizardStep6Controller = Em.Controller.extend({ var dataNode = hostsObj.findProperty('hostName', _dataNode.hostName); if (dataNode) { dataNode.set('isDataNode', true); - dataNode.set('isDataNodeInstalled', true); + dataNode.set('isDataNodeInstalled', _dataNode.isInstalled); } }); @@ -241,7 +241,7 @@ App.WizardStep6Controller = Em.Controller.extend({ var taskTracker = hostsObj.findProperty('hostName', _taskTracker.hostName); if (taskTracker) { taskTracker.set('isTaskTracker', true); - taskTracker.set('isTaskTrackerInstalled', true); + taskTracker.set('isTaskTrackerInstalled', _taskTracker.isInstalled); } }); } @@ -252,7 +252,7 @@ App.WizardStep6Controller = Em.Controller.extend({ var regionServer = hostsObj.findProperty('hostName', _regionServer.hostName); if (regionServer) { regionServer.set('isRegionServer', true); - regionServer.set('isRegionServerInstalled', true); + regionServer.set('isRegionServerInstalled', _regionServer.isInstalled); } }); } @@ -262,7 +262,7 @@ App.WizardStep6Controller = Em.Controller.extend({ var client = hostsObj.findProperty('hostName', _client.hostName); if (client) { client.set('isClient', true); - client.set('isClientInstalled', true); + client.set('isClientInstalled', _client.isInstalled); } }, this); diff --git a/ambari-web/app/controllers/wizard/step7_controller.js b/ambari-web/app/controllers/wizard/step7_controller.js index df265e931b..0ec1b54a50 100644 --- a/ambari-web/app/controllers/wizard/step7_controller.js +++ b/ambari-web/app/controllers/wizard/step7_controller.js @@ -116,6 +116,11 @@ App.WizardStep7Controller = Em.Controller.extend({ } }, + + + /** + * Render a custom conf-site box for entering properties that will be written in *-site.xml files of the services + */ loadCustomConfig: function () { var serviceConfigs = this.get('serviceConfigs'); this.get('customConfigs').forEach(function (_config) { @@ -134,8 +139,8 @@ App.WizardStep7Controller = Em.Controller.extend({ */ renderServiceConfigs: function (serviceConfigs) { serviceConfigs.forEach(function (_serviceConfig) { + var serviceConfig = App.ServiceConfig.create({ - id: _serviceConfig.id, filename: _serviceConfig.filename, serviceName: _serviceConfig.serviceName, displayName: _serviceConfig.displayName, @@ -154,6 +159,21 @@ App.WizardStep7Controller = Em.Controller.extend({ } }, this); + var miscConfigs = this.get('stepConfigs').findProperty('serviceName', 'MISC').configs; + var showProxyGroup = this.get('selectedServiceNames').contains('HIVE') || + this.get('selectedServiceNames').contains('HCATALOG') || + this.get('selectedServiceNames').contains('OOZIE'); + miscConfigs.findProperty('name', 'proxyuser_group').set('isVisible', showProxyGroup); + miscConfigs.findProperty('name', 'hbase_user').set('isVisible', this.get('selectedServiceNames').contains('HBASE')); + miscConfigs.findProperty('name', 'mapred_user').set('isVisible', this.get('selectedServiceNames').contains('MAPREDUCE')); + miscConfigs.findProperty('name', 'hive_user').set('isVisible', this.get('selectedServiceNames').contains('HIVE')); + miscConfigs.findProperty('name', 'hcat_user').set('isVisible', this.get('selectedServiceNames').contains('HCATALOG')); + miscConfigs.findProperty('name', 'templeton_user').set('isVisible', this.get('selectedServiceNames').contains('HCATALOG')); + miscConfigs.findProperty('name', 'oozie_user').set('isVisible', this.get('selectedServiceNames').contains('OOZIE')); + miscConfigs.findProperty('name', 'pig_user').set('isVisible', this.get('selectedServiceNames').contains('PIG')); + miscConfigs.findProperty('name', 'sqoop_user').set('isVisible', this.get('selectedServiceNames').contains('SQOOP')); + miscConfigs.findProperty('name', 'zk_user').set('isVisible', this.get('selectedServiceNames').contains('ZOOKEEPER')); + this.set('selectedService', this.get('stepConfigs').objectAt(0)); }, @@ -167,7 +187,6 @@ App.WizardStep7Controller = Em.Controller.extend({ var serviceConfigProperty = App.ServiceConfigProperty.create(_serviceConfigProperty); serviceConfigProperty.serviceConfig = componentConfig; serviceConfigProperty.initialValue(); - componentConfig.configs.pushObject(serviceConfigProperty); serviceConfigProperty.validate(); }, this); diff --git a/ambari-web/app/controllers/wizard/step8_controller.js b/ambari-web/app/controllers/wizard/step8_controller.js index be03044696..a57977423b 100644 --- a/ambari-web/app/controllers/wizard/step8_controller.js +++ b/ambari-web/app/controllers/wizard/step8_controller.js @@ -293,6 +293,7 @@ App.WizardStep8Controller = Em.Controller.extend({ break; case 'GANGLIA': this.loadGanglia(serviceObj); + break; case 'HCATALOG': break; default: @@ -615,7 +616,7 @@ App.WizardStep8Controller = Em.Controller.extend({ createCluster: function () { - if (this.get('content.cluster.isCompleted')){ + if (this.get('content.isWizard')){ return false; } @@ -829,7 +830,7 @@ App.WizardStep8Controller = Em.Controller.extend({ createConfigurations: function () { var selectedServices = this.get('selectedServices'); - if (!this.get('content.cluster.isCompleted')){ + if (!this.get('content.isWizard')){ this.createConfigSite(this.createGlobalSiteObj()); this.createConfigSite(this.createCoreSiteObj()); this.createConfigSite(this.createHdfsSiteObj('HDFS')); diff --git a/ambari-web/app/controllers/wizard/step9_controller.js b/ambari-web/app/controllers/wizard/step9_controller.js index 712597c055..214edf93e8 100644 --- a/ambari-web/app/controllers/wizard/step9_controller.js +++ b/ambari-web/app/controllers/wizard/step9_controller.js @@ -77,11 +77,14 @@ App.WizardStep9Controller = Em.Controller.extend({ }, loadHosts: function () { - var hostInfo = []; - hostInfo = App.db.getHosts(); + var hostInfo = this.get('content.hostsInfo'); + var hosts = new Ember.Set(); for (var index in hostInfo) { - hosts.add(hostInfo[index]); + var obj = Em.Object.create(hostInfo[index]); + obj.tasks = []; + obj.logTasks = []; + hosts.add(obj); console.log("TRACE: host name is: " + hostInfo[index].name); } return hosts; @@ -433,7 +436,6 @@ App.WizardStep9Controller = Em.Controller.extend({ // This is done at HostRole level. setLogTasksStatePerHost: function (tasksPerHost, host) { - var tasks = []; console.log('In step9 setTasksStatePerHost function.'); tasksPerHost.forEach(function (_task) { console.log('In step9 _taskPerHost function.'); @@ -491,7 +493,7 @@ App.WizardStep9Controller = Em.Controller.extend({ getUrl: function () { var clusterName = this.get('content.cluster.name'); - var requestId = App.db.getClusterStatus().requestId; + var requestId = this.get('content.cluster.requestId'); var url = App.apiPrefix + '/clusters/' + clusterName + '/requests/' + requestId + '?fields=tasks/*'; console.log("URL for step9 is: " + url); return url; diff --git a/ambari-web/app/data/config_mapping.js b/ambari-web/app/data/config_mapping.js index cf9f44505b..77e1bb437a 100644 --- a/ambari-web/app/data/config_mapping.js +++ b/ambari-web/app/data/config_mapping.js @@ -102,13 +102,6 @@ module.exports = [ "filename": "hdfs-site.xml" }, { - "name": "dfs.webhdfs.enabled", - "templateName": ["dfs_webhdfs_enabled"], - "foreignKey": null, - "value": "<templateName[0]>", - "filename": "hdfs-site.xml" - }, - { "name": "dfs.datanode.failed.volumes.tolerated", "templateName": ["dfs_datanode_failed_volume_tolerated"], "foreignKey": null, diff --git a/ambari-web/app/data/config_properties.js b/ambari-web/app/data/config_properties.js index 80c427bb15..724cb840e2 100644 --- a/ambari-web/app/data/config_properties.js +++ b/ambari-web/app/data/config_properties.js @@ -609,7 +609,7 @@ module.exports = { "id": "puppet var", "name": "proxyuser_group", - "displayName": "Proxy group for Hive, Templeton and Oozie.", + "displayName": "Proxy group for Hive, Templeton, and Oozie", "description": "", "defaultValue": "users", "isReconfigurable": false, @@ -648,8 +648,8 @@ module.exports = { "id": "puppet var", "name": "dfs_replication", - "displayName": "Include hosts", - "description": "Include entered hosts", + "displayName": "Block replication", + "description": "Default block replication.", "displayType": "int", "defaultValue": "3", "isReconfigurable": false, diff --git a/ambari-web/app/initialize.js b/ambari-web/app/initialize.js index e812d85858..4839f96802 100644 --- a/ambari-web/app/initialize.js +++ b/ambari-web/app/initialize.js @@ -22,7 +22,7 @@ window.App = require('app'); App.testMode = false; App.skipBootstrap = false; App.alwaysGoToInstaller = false; -App.apiPrefix = '/api'; +App.apiPrefix = '/api/v1'; // default AJAX timeout App.timeout = 20000; diff --git a/ambari-web/app/mappers/hosts_mapper.js b/ambari-web/app/mappers/hosts_mapper.js index 4a294e1f44..aa59a35511 100644 --- a/ambari-web/app/mappers/hosts_mapper.js +++ b/ambari-web/app/mappers/hosts_mapper.js @@ -28,6 +28,7 @@ App.hostsMapper = App.QuickDataMapper.create({ components: { item : 'HostRoles.component_name' }, + rack: 'Hosts.rack_info', host_components_key: 'host_components', host_components_type: 'array', host_components: { diff --git a/ambari-web/app/mappers/jobs_mapper.js b/ambari-web/app/mappers/jobs_mapper.js index 90fd035a10..afd2908b74 100644 --- a/ambari-web/app/mappers/jobs_mapper.js +++ b/ambari-web/app/mappers/jobs_mapper.js @@ -57,7 +57,9 @@ App.jobsMapper = App.QuickDataMapper.create({ App.jobTimeLineMapper = App.QuickDataMapper.create({ config:{ - jobTimeLine:'items' + map:'map', + shuffle:'shuffle', + reduce:'reduce' }, map:function (json) { var job = this.get('model'); // @model App.MainAppsItemBarView @@ -71,7 +73,12 @@ App.jobTimeLineMapper = App.QuickDataMapper.create({ App.jobTasksMapper = App.QuickDataMapper.create({ config:{ - jobTaskView:'items' + mapNodeLocal:'mapNodeLocal', + mapRackLocal:'mapRackLocal', + mapOffSwitch:'mapOffSwitch', + reduceOffSwitch:'reduceOffSwitch', + submitTime:'submitTime', + finishTime:'finishTime' }, map:function (json) { var job = this.get('model'); // @model App.MainAppsItemBarView diff --git a/ambari-web/app/mappers/services_mapper.js b/ambari-web/app/mappers/services_mapper.js index 0440adce5f..80faa35681 100644 --- a/ambari-web/app/mappers/services_mapper.js +++ b/ambari-web/app/mappers/services_mapper.js @@ -25,6 +25,7 @@ App.servicesMapper = App.QuickDataMapper.create({ 'OOZIE', 'GANGLIA', 'NAGIOS', + 'ZOOKEEPER', 'PIG', 'SQOOP' ], diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js index 7d6a1ef85a..2e5c826e36 100644 --- a/ambari-web/app/messages.js +++ b/ambari-web/app/messages.js @@ -340,7 +340,10 @@ Em.I18n.translations = { 'dashboard.services.hbase.masterStarted':'Master Started', 'dashboard.services.hbase.masterActivated':'Master Activated', - + 'dashboard.services.configs.popup.stopService.header':'Stop service', + 'dashboard.services.configs.popup.stopService.body' : 'Service needs to be stopped for reconfiguration', + 'dashboard.services.configs.popup.restartService.header' : 'Restart service', + 'dashboard.services.configs.popup.restartService.body' : 'Service needs to be restarted for reconfiguration', 'timeRange.presets.1hour':'1h', 'timeRange.presets.12hour':'12h', 'timeRange.presets.1day':'1d', diff --git a/ambari-web/app/models/component.js b/ambari-web/app/models/component.js index 4b785af654..245d4c3c9d 100644 --- a/ambari-web/app/models/component.js +++ b/ambari-web/app/models/component.js @@ -62,6 +62,8 @@ App.Component.Status = { starting: "STARTING", stopped: "INSTALLED", stopping: "STOPPING", + stop_failed: "STOP_FAILED", + start_failed: "START_FAILED", getKeyName:function(value){ switch(value){ @@ -73,6 +75,10 @@ App.Component.Status = { return 'installed'; case this.stopping: return 'stopping'; + case this.stop_failed: + return 'stop_failed'; + case this.start_failed: + return 'start_failed'; } return 'none'; } diff --git a/ambari-web/app/models/host.js b/ambari-web/app/models/host.js index eb9d4c2812..c86d75fe02 100644 --- a/ambari-web/app/models/host.js +++ b/ambari-web/app/models/host.js @@ -31,6 +31,7 @@ App.Host = DS.Model.extend({ loadAvg: DS.attr('string'), osArch: DS.attr('string'), ip: DS.attr('string'), + rack: DS.attr('string'), healthStatus: DS.attr('string'), cpuUsage: DS.attr('number'), memoryUsage: DS.attr('number'), diff --git a/ambari-web/app/models/hosts.js b/ambari-web/app/models/hosts.js index 9a493d96a3..19cccf5e38 100644 --- a/ambari-web/app/models/hosts.js +++ b/ambari-web/app/models/hosts.js @@ -21,8 +21,8 @@ var App = require('app'); App.HostInfo = Ember.Object.extend({ elementId: 'host', name: '', - cpu: '2', - memory: '2', + cpu: 2, + memory: 4000000000, message: 'Information', barColor: 'progress-info', isChecked: true, diff --git a/ambari-web/app/models/service.js b/ambari-web/app/models/service.js index af8669c69b..3660d8be6e 100644 --- a/ambari-web/app/models/service.js +++ b/ambari-web/app/models/service.js @@ -29,20 +29,31 @@ App.Service = DS.Model.extend({ quickLinks: DS.hasMany('App.QuickLinks'), components: DS.hasMany('App.Component'), hostComponents: DS.hasMany('App.HostComponent'), - isRunning: function(){ - return (this.get('healthStatus') == 'green' | this.get('healthStatus') == 'green-blinking'); + isRunning: function () { + return (this.get('healthStatus') == 'green' || this.get('healthStatus') == 'green-blinking'); }.property('healthStatus'), - healthStatus: function(){ + healthStatus: function () { var components = this.get('components').filterProperty('isMaster', true); - if (components.everyProperty('workStatus', App.Component.Status.started)){ + if (components.everyProperty('workStatus', App.Component.Status.started)) { return 'green'; - } else if(components.someProperty('workStatus', App.Component.Status.stopped)){ - return 'red'; - } else if(components.someProperty('workStatus', App.Component.Status.starting)){ + } else if (components.someProperty('workStatus', App.Component.Status.starting)) { return 'green-blinking'; + } else if (components.someProperty('workStatus', App.Component.Status.stopped)) { + return 'red'; + } else { + return 'red-blinking'; } - return 'red-blinking'; + }.property('components.@each.workStatus'), + + isStopped: function () { + var components = this.get('components'); + return components.everyProperty('workStatus', App.Component.Status.stopped); + }.property('components.@each.workStatus'), + + isStarted: function () { + var components = this.get('components').filterProperty('isMaster', true); + return components.everyProperty('workStatus', App.Component.Status.started); }.property('components.@each.workStatus'), displayName: function () { @@ -80,8 +91,8 @@ App.Service.Health = { starting: "STARTING", stopping: "STOPPING", - getKeyName:function(value){ - switch(value){ + getKeyName: function (value) { + switch (value) { case this.live: return 'live'; case this.dead: diff --git a/ambari-web/app/routes/add_host_routes.js b/ambari-web/app/routes/add_host_routes.js index bbf1a7b17f..4402eb4d44 100644 --- a/ambari-web/app/routes/add_host_routes.js +++ b/ambari-web/app/routes/add_host_routes.js @@ -34,26 +34,6 @@ module.exports = Em.Route.extend({ router.get('mainController').connectOutlet('addHost'); }, - step0: Em.Route.extend({ - route: '/step0', - connectOutlets: function (router) { - console.log('in addHost.step0:connectOutlets'); - var controller = router.get('addHostController'); - controller.setCurrentStep('0', false); - controller.loadAllPriorSteps(); - controller.connectOutlet('wizardStep1', controller.get('content')); - }, - - next: function (router) { - var addHostController = router.get('addHostController'); - var wizardStep1Controller = router.get('wizardStep1Controller'); - - addHostController.saveClusterInfo(wizardStep1Controller); - - router.transitionTo('step1'); - } - }), - step1: Em.Route.extend({ route: '/step1', connectOutlets: function (router) { @@ -235,7 +215,6 @@ module.exports = Em.Route.extend({ next: function (router) { var addHostController = router.get('addHostController'); var wizardStep9Controller = router.get('wizardStep9Controller'); - addHostController.saveClusterInfo(wizardStep9Controller); addHostController.saveInstalledHosts(wizardStep9Controller); router.transitionTo('step9'); } @@ -254,7 +233,7 @@ module.exports = Em.Route.extend({ complete: function (router, context) { if (true) { // this function will be moved to installerController where it will validate var addHostController = router.get('addHostController'); - addHostController.setCurrentStep('1', false); + addHostController.finish(); router.transitionTo('hosts'); } else { console.log('cluster installation failure'); diff --git a/ambari-web/app/routes/add_service_routes.js b/ambari-web/app/routes/add_service_routes.js index 3386a96c7b..0823fe0a7d 100644 --- a/ambari-web/app/routes/add_service_routes.js +++ b/ambari-web/app/routes/add_service_routes.js @@ -154,7 +154,7 @@ module.exports = Em.Route.extend({ }, back: Em.Router.transitionTo('step5'), retry: function(router,context) { - var addServiceController = router.get('addSrviceController'); + var addServiceController = router.get('addServiceController'); var wizardStep9Controller = router.get('wizardStep9Controller'); if (!wizardStep9Controller.get('isSubmitDisabled')) { addServiceController.installServices(); @@ -165,7 +165,6 @@ module.exports = Em.Route.extend({ next: function (router) { var addServiceController = router.get('addServiceController'); var wizardStep9Controller = router.get('wizardStep9Controller'); - //addServiceController.saveClusterInfo(wizardStep9Controller); addServiceController.saveInstalledHosts(wizardStep9Controller); router.transitionTo('step7'); } diff --git a/ambari-web/app/routes/installer.js b/ambari-web/app/routes/installer.js index cc2666c122..96cbdc3ee6 100644 --- a/ambari-web/app/routes/installer.js +++ b/ambari-web/app/routes/installer.js @@ -279,7 +279,6 @@ module.exports = Em.Route.extend({ next: function (router) { var installerController = router.get('installerController'); var wizardStep9Controller = router.get('wizardStep9Controller'); - // installerController.saveClusterInfo(wizardStep9Controller); installerController.saveInstalledHosts(wizardStep9Controller); router.transitionTo('step10'); } diff --git a/ambari-web/app/styles/application.less b/ambari-web/app/styles/application.less index 55d3697a9e..7ffe6d6b09 100644 --- a/ambari-web/app/styles/application.less +++ b/ambari-web/app/styles/application.less @@ -843,9 +843,12 @@ a:focus { } } .table { - margin-bottom: 0; + //margin-bottom: 0; thead { - background: #EDF5FC; + //background: #EDF5FC; + } + th { + border-top: none; } th, td { width: 82px; @@ -883,7 +886,68 @@ a:focus { } } } + .sorting_asc { background: url(data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAZAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAwMDAwMDAwMDAwEBAQEBAQECAQECAgIBAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD/8AAEQgAEwATAwERAAIRAQMRAf/EAHgAAAMBAQAAAAAAAAAAAAAAAAAFCAYKAQACAQUAAAAAAAAAAAAAAAAABQMCBAYHCBAAAQUAAQMEAwAAAAAAAAAAAwECBAUGABESByExIghBMxQRAAIBAwMDAwUAAAAAAAAAAAECAwAEBRESBiExUUHhB2GBIhMU/9oADAMBAAIRAxEAPwDvA8k+Qc54sxGj32qlNi0ucrjTj/JqGlmROyJXQ2u/bOsZTmBExPd70/HXmQcW41lOX5+145h0L391KEHhR3Z28Ii6sx9AKgubiO1gaeU6Io19h9TUg/S/7eP+wia3NbBIFbuqiyn3VTCjIMArHHTJarEDGGiNU8vOKVsc7/VxBuGR3yV683X86/Cq/GpssrhP2S8emiSKRm1JS5VfyLH0WfQug7KwZR0CilWHy39++ObQTgkgeV9ux+xq9uc6U8pLfZzP6mClZpKWrvq1DilJAt4Mewh/0hRyBOsaUMoVKLvXtVU6t6+nL/HZTJYi4/rxU81tdbSu+N2Rtp7jcpB0OnUa9aoeOOVdsgDL4I1pFS+NPHmcsQ2+fw+UpLWOwwwWNVQ1kCaIcgaiONkmLGEZrDDXtcnXo5PfjC+5VybKWrWWSyF5cWbEEpJNI6kqdQSrMRqD1B9KjS2t423xoqt5AArb8QVPRwoo4UUcKK//2Q==) no-repeat 85% 50%; } + .sorting_desc { background: url(data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAZAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAwMDAwMDAwMDAwEBAQEBAQECAQECAgIBAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD/8AAEQgAEwATAwERAAIRAQMRAf/EAIEAAAIDAQAAAAAAAAAAAAAAAAAGBwgJCgEBAAIDAQAAAAAAAAAAAAAAAAMFBAYHCBAAAAUDAwMFAAAAAAAAAAAAAQIDBAUABgcSNTYRFQgTZFUWZhEAAAQEAggGAwAAAAAAAAAAAAECAxEhBAYSMjFBYRMzFDQFUZFSYmMHJFRk/9oADAMBAAIRAxEAPwDv4oAKACgCKc1tMmusb3Eph6cSgsgx7fucEZxGRks2llGIGVWgVm8q1dt0+6ogKaapSgdNbQPXTqAdwsN602bopk3vTnUW24rduwccbU2S5E8Sm1JM92czSZwNOKUYDFrCqTp1corDUFMpEcYap+Ipb4P5O8n81y9xXXlG50yY+thR3AEivqFvRDmduvSUrhuLtrFNXqCFvJm1LAQ5RMuchB6gBy13f7+tP6lsOipuz2jSGdy1ZJeNzmXnEtU+pWFTikmbxyTEjgglKKZpMU3ZanudYtTtSr8dMoYSKKvKMte0aUV5YGxgoASbD2iQ4Tyi6uB7Rvz/AHD9R8r7/wBWr64uta6/pKfq+JwUZP5/1/hwCFjIeTMrLo0np93q2xDtVCJh/9k=) no-repeat 85% 50%; } + .sorting { background: url(data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAZAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAwMDAwMDAwMDAwEBAQEBAQECAQECAgIBAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD/8AAEQgAEwATAwERAAIRAQMRAf/EAGgAAAIDAQAAAAAAAAAAAAAAAAUHAAYICgEBAQAAAAAAAAAAAAAAAAAAAAEQAAEEAQIFAgcAAAAAAAAAAAECAwQFABEGIRI0NQcTFDFBMmNUZRYRAQEBAQAAAAAAAAAAAAAAAAABEUH/2gAMAwEAAhEDEQA/AO93cd/XbXpLC9tHQ1Dr46nljUBby/gzGZB+p+Q6QhA+ZOApfDnllW/ha1tv6Ee7iyH5kRlvlbTIqHndWkNJ0HO7XFQbWeJUkpUeOpySrZh65UUnyFUW1ztaexRmIbaPyzoLE6vg2UWW9GC1e0XHnsSGEqfQohCwApK9OIGuAjfBP9VuG0m39vGqINVUe4r2xF21TVsuXZOI9N9lMmLBYkttQ21auBKhqtSUngCMkW5xqjKiYASh6SR2Tulr2HpOvf6j9p+V9/mwDeB//9k=) no-repeat 85% 50%; } + + a.paginate_disabled_next, a.paginate_disabled_previous { + color: gray; + &:hover { + color: gray; + text-decoration: none; + } + } + + a.paginate_enabled_next, a.paginate_enabled_previous { + &:hover { + text-decoration: none; + } + } + + div.view-wrapper { + float: left; + } + + a.ui-icon-circle-close { + float: right; + opacity: 0.2; + padding: 1px; + position: relative; + &:hover { + opacity: 0.7; + } + } + .notActive { + a.ui-icon-circle-close { + visibility: hidden; + } + } + } + + .page-bar { + border: 1px solid silver; + text-align:right; + div { + display: inline-block; + margin:0 10px; + } + .dataTables_length { + label { + display:inline; + } + select { + margin-bottom: 4px; + margin-top: 4px; + width:70px; + } + } + .dataTables_paginate { + a { + padding:0 5px; + } + } } + .open-group > .dropdown-menu { display: block; } diff --git a/ambari-web/app/templates/main/background_operations_popup.hbs b/ambari-web/app/templates/main/background_operations_popup.hbs index 73afd7d276..3330538344 100644 --- a/ambari-web/app/templates/main/background_operations_popup.hbs +++ b/ambari-web/app/templates/main/background_operations_popup.hbs @@ -20,15 +20,16 @@ {{#view App.MainBackgroundOperation contentBinding="operation"}} <div> <a {{action showOperationLog target="view"}} href="#"> - {{#if view.isOpenShowLog}}Hide{{else}}Show{{/if}} info about {{operation.command}} {{operation.role}} on {{operation.host_name}} + <i {{bindAttr class="view.iconClass"}}></i> + {{#if view.isOpen}}Hide{{else}}Show{{/if}} info about {{operation.command}} {{operation.role}} on {{operation.host_name}} </a> - {{#if view.isOpenShowLog}} + {{#if view.isOpen}} <h5>exitcode:</h5> <pre class="stderr">{{operation.exit_code}}</pre> <h5>stderr:</h5> - <pre class="stderr">{{operation.stderr}}</pre> + <pre class="stderr">{{highlight operation.stderr [err;fail]}}</pre> <h5>stdout:</h5> - <pre class="stdout">{{operation.stdout}}</pre> + <pre class="stdout">{{highlight operation.stdout [err;fail]}}</pre> {{/if}} </div> {{/view}} diff --git a/ambari-web/app/templates/main/host.hbs b/ambari-web/app/templates/main/host.hbs index 5a8bd70998..19266edd95 100644 --- a/ambari-web/app/templates/main/host.hbs +++ b/ambari-web/app/templates/main/host.hbs @@ -16,7 +16,7 @@ * limitations under the License. }} -<div id="hosts" class="box"> +<div id="hosts"> <div class="box-header"> <div class="button-section"> <button class="btn btn-inverse add-host-button" {{action addHost}}> @@ -25,27 +25,24 @@ </button> </div> </div> - <table class="table table-bordered table-striped"> + <table class="datatable table table-bordered table-striped" id="hosts-table"> <thead> <tr> - <th class="name"> - <div class="host-name-pos"> - <a class="filter-label" href="#" {{action sortByName target="controller" }}>Name - {{#if controller.isSort}} - <i class="icon-arrow-up"{{bindAttr class="controller.sortClass"}}></i> - {{/if}} - </a> - - {{view Ember.TextField class="host-name-search" placeholder="search" valueBinding="view.filterByName"}} - </div> - - </th> + <th>Name</th> <th>Rack</th> <th>CPU</th> <th>RAM</th> <th>Disk Usage</th> <th>Load Avg</th> - <th> + <th>Components</th> + </tr> + <th class="notActive"><div class="view-wrapper">{{view view.nameFilterView viewName="nameFilterViewInstance"}}</div> <a href="#" {{action "clearFilterButtonClick" target="view"}} id="view_nameFilterViewInstance" class="ui-icon ui-icon-circle-close ui-name"></a></th> + <th class="notActive"><div class="view-wrapper">{{view view.rackFilterView viewName="rackFilterViewInstance"}}</div> <a href="#" {{action "clearFilterButtonClick" target="view"}} id="view_rackFilterViewInstance" class="ui-icon ui-icon-circle-close ui-rack"></a></th> + <th class="notActive"><div class="view-wrapper">{{view view.cpuFilterView viewName="cpuFilterViewInstance"}}</div> <a href="#" {{action "clearFilterButtonClick" target="view"}} id="view_cpuFilterViewInstance" class="ui-icon ui-icon-circle-close ui-cpu"></a></th> + <th class="notActive"><div class="view-wrapper">{{view view.ramFilterView viewName="ramFilterViewInstance"}}</div> <a href="#" {{action "clearFilterButtonClick" target="view"}} id="view_ramFilterViewInstance" class="ui-icon ui-icon-circle-close ui-ram"></a></th> + <th></th> + <th></th> + <th><input id="components_filter" type="hidden" /> <div {{bindAttr class="view.btnGroupClass"}} > <button class="btn btn-info single-btn-group" {{action "clickFilterButton" target="view"}}> Components @@ -104,11 +101,11 @@ {{#each host in controller}} {{#view view.HostView contentBinding="host"}} <tr> - <td class="name"> + <td> <span {{bindAttr class="host.healthClass"}}></span> <a href="#" {{action "showDetails" host}}>{{unbound host.hostName}}</a> </td> - <td>{{host.cluster.clusterName}}</td> + <td>{{host.rack}}</td> <td>{{host.cpu}}</td> <td>{{host.memoryFormatted}}</td> <td> @@ -125,26 +122,4 @@ {{/each}} </tbody> </table> - <div class="box-footer"> - <hr/> - <div class="footer-pagination"> - <ul class="nav nav-pills"> - <li class="disabled">Show: </li> - <li class="dropdown"> - {{view Em.Select contentBinding="pageSizeRange" - selectionBinding="pageSize" - optionValuePath="this"}} - </li> - <li class="disabled">{{startPosition}}-{{rangeStop}} of {{total}}</li> - <li class="disabled page-listing"> - {{#if hasPrevious}} - <a href="#" {{action showPreviousPage target="controller"}}>previous</a> - {{/if}} - {{#if hasNext}} - <a href="#" {{action showNextPage target="controller"}}>next</a> - {{/if}} - </li> - </ul> - </div> - </div> </div> diff --git a/ambari-web/app/templates/main/service/info/configs.hbs b/ambari-web/app/templates/main/service/info/configs.hbs index 9715d6cddb..6b314d49d1 100644 --- a/ambari-web/app/templates/main/service/info/configs.hbs +++ b/ambari-web/app/templates/main/service/info/configs.hbs @@ -216,6 +216,6 @@ <p class="pull-right"> <!--<input class="btn btn-primary" type="button" value="Save and apply changes" {{!bindAttr disabled="isSubmitDisabled"}} />--> <a class="btn btn-primary" {{bindAttr disabled="isSubmitDisabled"}} - {{action saveServiceConfigProperties target="controller"}}>Save and apply changes</a> + {{action restartServicePopup target="controller"}}>Save and apply changes</a> </p> </div>
\ No newline at end of file diff --git a/ambari-web/app/templates/wizard/step5.hbs b/ambari-web/app/templates/wizard/step5.hbs index 2610b2239f..b2da152a5a 100644 --- a/ambari-web/app/templates/wizard/step5.hbs +++ b/ambari-web/app/templates/wizard/step5.hbs @@ -57,7 +57,7 @@ <div class="host-assignments"> {{#each masterHostMapping}} <div class="mapping-box round-corners well"> - <div class="hostString"><span><strong>{{host_name}}</strong></span><span>{{hostInfo}}</span></div> + <div class="hostString"><span>{{hostInfo}}</span></div> {{#each masterServices}} <span class="assignedService round-corners">{{display_name}}</span> {{/each}} diff --git a/ambari-web/app/utils/data_table.js b/ambari-web/app/utils/data_table.js index bf761f68d3..bf107352b6 100644 --- a/ambari-web/app/utils/data_table.js +++ b/ambari-web/app/utils/data_table.js @@ -17,6 +17,20 @@ */ jQuery.extend(jQuery.fn.dataTableExt.oSort, { + + "num-html-pre": function(date_string) { + date_string = $(date_string).text(); + return parseInt(date_string, 10); + }, + + "num-html-asc": function (a, b) { + return a - b; + }, + + "num-html-desc": function (a, b) { + return b - a; + }, + // @see utils/date.js "ambari-date-pre": function (date_string) { date_string = $(date_string).text(); // strip Ember script tags @@ -141,17 +155,19 @@ jQuery.extend($.fn.dataTableExt.afnFiltering.push( function (oSettings, aData, iDataIndex) { var inputFilters = [ {iColumn: '0', elementId: 'star_filter', type: 'star'}, + {iColumn: '2', elementId: 'cpu_filter', type: 'number'}, {iColumn: '4', elementId: 'user_filter', type: 'multiple'}, {iColumn: '5', elementId: 'jobs_filter', type: 'number' }, - {iColumn: '6', elementId: 'input_filter', type: 'bandwidth' }, - {iColumn: '7', elementId: 'output_filter', type: 'bandwidth' }, + {iColumn: '3', elementId: 'ram_filter', type: 'ambari-bandwidth' }, + {iColumn: '6', elementId: 'input_filter', type: 'ambari-bandwidth' }, + {iColumn: '7', elementId: 'output_filter', type: 'ambari-bandwidth' }, {iColumn: '8', elementId: 'duration_filter', type: 'time' }, - {iColumn: '9', elementId: 'rundate_filter', type: 'date' } + //{iColumn: '9', elementId: 'rundate_filter', type: 'ambari-date' } ]; var match = true; - for (i = 0; i < inputFilters.length; i++) { + for (var i = 0; i < inputFilters.length; i++) { switch (inputFilters[i].type) { - case 'date': + case 'ambari-date': if (jQuery('#' + inputFilters[i].elementId).val() !== 'Any' && match) { dateFilter(jQuery('#' + inputFilters[i].elementId).val(), aData[inputFilters[i].iColumn]); } @@ -171,7 +187,7 @@ jQuery.extend($.fn.dataTableExt.afnFiltering.push( timeFilter(jQuery('#' + inputFilters[i].elementId).val(), aData[inputFilters[i].iColumn]); } break; - case 'bandwidth': + case 'ambari-bandwidth': if (jQuery('#' + inputFilters[i].elementId).val() && match) { bandwidthFilter(jQuery('#' + inputFilters[i].elementId).val(), aData[inputFilters[i].iColumn]); } @@ -230,6 +246,7 @@ jQuery.extend($.fn.dataTableExt.afnFiltering.push( } function bandwidthFilter(rangeExp, rowValue) { + rowValue = $(rowValue).text(); var compareChar = rangeExp.charAt(0); var compareScale = rangeExp.charAt(rangeExp.length - 1); var compareValue = isNaN(parseFloat(compareScale)) ? parseFloat(rangeExp.substr(1, rangeExp.length - 2)) : parseFloat(rangeExp.substr(1, rangeExp.length - 1)); diff --git a/ambari-web/app/utils/graph.js b/ambari-web/app/utils/graph.js index 3dab1eca7d..41a526a380 100644 --- a/ambari-web/app/utils/graph.js +++ b/ambari-web/app/utils/graph.js @@ -18,11 +18,13 @@ module.exports = { - drawJobTimeLine:function (json_str, w, h, element, legend_id, timeline_id) { - var json = $.parseJSON(json_str); - console.log('json', json); - if (!json) { - return new Error("unable to load data"); + drawJobTimeLine:function (map, shuffle, reduce, w, h, element, legend_id, timeline_id) { + var map = $.parseJSON(map); + var shuffle = $.parseJSON(shuffle); + var reduce = $.parseJSON(reduce); + if (!map || !shuffle || !reduce) { + console.warn('drawJobTimeLine'); + return; } var graph = new Rickshaw.Graph({ @@ -33,17 +35,17 @@ module.exports = { stroke:true, series:[ { - data:json[0], + data:map, color:'green', name:'maps' }, { - data:json[1], + data:shuffle, color:'lightblue', name:'shuffles' }, { - data:json[2], + data:reduce, color:'steelblue', name:'reduces' } @@ -97,10 +99,15 @@ module.exports = { element:document.getElementById(timeline_id) }); }, - drawJobTasks:function (json_str, w, h, element, legend_id, timeline_id) { - var json = $.parseJSON(json_str); - if (!json) { - return new Error("unable to load data"); + drawJobTasks:function (mapNodeLocal, mapRackLocal, mapOffSwitch, reduceOffSwitch, w, h, element, legend_id, timeline_id) { + var mapNodeLocal = $.parseJSON(mapNodeLocal); + var mapRackLocal = $.parseJSON(mapRackLocal); + var mapOffSwitch = $.parseJSON(mapOffSwitch); + var reduceOffSwitch = $.parseJSON(reduceOffSwitch); + console.log(mapNodeLocal, mapRackLocal, mapOffSwitch, reduceOffSwitch); + if (!mapNodeLocal || !mapRackLocal || !mapOffSwitch || !reduceOffSwitch) { + console.warn('drawJobTasks'); + return; } var graph = new Rickshaw.Graph({ @@ -111,22 +118,22 @@ module.exports = { stroke:true, series:[ { - data:json[0], + data:mapNodeLocal, color:'green', name:'node_local_map' }, { - data:json[1], + data:mapRackLocal, color:'lightblue', name:'rack_local_map' }, { - data:json[2], + data:mapOffSwitch, color:'brown', name:'off_switch_map' }, { - data:json[3], + data:reduceOffSwitch, color:'red', name:'reduce' } @@ -157,20 +164,20 @@ module.exports = { var xAxis = new Rickshaw.Graph.Axis.Time({ graph:graph, - ticksTreatment:ticksTreatment, + ticksTreatment:ticksTreatment }); xAxis.render(); var yAxis = new Rickshaw.Graph.Axis.Y({ graph:graph, - ticksTreatment:ticksTreatment, + ticksTreatment:ticksTreatment }); yAxis.render(); var hoverDetail = new Rickshaw.Graph.HoverDetail({ graph:graph, xFormatter:function (x) { - return (x - json[4].submitTime) / 1000 + 's' + return (x - json.submitTime) + 's' }, yFormatter:function (y) { return y / 1000 + 's' @@ -186,7 +193,6 @@ module.exports = { graph:graph, element:document.getElementById(timeline_id) }); - annotator.add(1337970759432, 'Lost tasktracker'); graph.update(); } } diff --git a/ambari-web/app/utils/helper.js b/ambari-web/app/utils/helper.js index 14b6e5d8b0..a809aec679 100644 --- a/ambari-web/app/utils/helper.js +++ b/ambari-web/app/utils/helper.js @@ -25,7 +25,7 @@ String.prototype.capitalize = function () { } Em.CoreObject.reopen({ - t: function (key, attrs) { + t:function (key, attrs) { return Em.I18n.t(key, attrs) } }); @@ -38,6 +38,27 @@ Handlebars.registerHelper('warn', function (variable) { console.warn(variable); }); +Handlebars.registerHelper('highlight', function (variable, words) { + words = words.split(";"); + +// var self = this; +// if (highlightTemplate == undefined) { + var highlightTemplate = "<b>{0}</b>"; +// } + + words.forEach(function (word) { + var searchRegExp = new RegExp("\\b" + word + "\\b", "gi"); + variable = variable.replace(searchRegExp, function (found) { + return highlightTemplate.format(found); + }); + }); + + return new Handlebars.SafeString(variable); +}) +/** + * Replace {i} with argument. where i is number of argument to replace with + * @return {String} + */ String.prototype.format = function () { var args = arguments; return this.replace(/{(\d+)}/g, function (match, number) { @@ -45,6 +66,22 @@ String.prototype.format = function () { }); }; +String.prototype.highlight = function (words, highlightTemplate) { + var self = this; + if (highlightTemplate == undefined) { + var highlightTemplate = "<b>{0}</b>"; + } + + words.forEach(function (word) { + var searchRegExp = new RegExp("\\b" + word + "\\b", "gi"); + self = self.replace(searchRegExp, function (found) { + return highlightTemplate.format(found); + }); + }); + + return self; +}; + /** * Convert byte size to other metrics. * @param {Number} precision Number to adjust precision of return value. Default is 0. @@ -120,10 +157,10 @@ App.formatUrl = function (urlTemplate, substitutes, testUrl) { if (!App.testMode) { var toSeconds = Math.round(new Date().getTime() / 1000); var allSubstitutes = { - toSeconds: toSeconds, - fromSeconds: toSeconds - 3600, // 1 hour back - stepSeconds: 15, // 15 seconds - hostName: App.test_hostname + toSeconds:toSeconds, + fromSeconds:toSeconds - 3600, // 1 hour back + stepSeconds:15, // 15 seconds + hostName:App.test_hostname }; jQuery.extend(allSubstitutes, substitutes); for (key in allSubstitutes) { @@ -141,15 +178,15 @@ App.formatUrl = function (urlTemplate, substitutes, testUrl) { * Certain variables can have JSON in string * format, or in JSON format itself. */ -App.parseJSON = function(value){ - if(typeof value == "string"){ +App.parseJSON = function (value) { + if (typeof value == "string") { return jQuery.parseJSON(value); } return value; }; App.format = { - role: function (role) { + role:function (role) { switch (role) { case 'ZOOKEEPER_SERVER': return 'ZooKeeper Server'; @@ -255,7 +292,7 @@ App.format = { * TIMEDOUT - Host did not respond in time * ABORTED - Operation was abandoned */ - taskStatus: function (_taskStatus) { + taskStatus:function (_taskStatus) { return _taskStatus.replace('_', ' ').toLowerCase(); } };
\ No newline at end of file diff --git a/ambari-web/app/views/main.js b/ambari-web/app/views/main.js index 50d5e74de5..231a8fa44a 100644 --- a/ambari-web/app/views/main.js +++ b/ambari-web/app/views/main.js @@ -20,32 +20,52 @@ var App = require('app'); App.MainView = Em.View.extend({ - templateName: require('templates/main') + templateName:require('templates/main') }); App.MainBackgroundOperation = Em.View.extend({ - content: null, - classNames: ['background-operations'], - classNameBindings: ['isOpen'], - isOpen: false, - logDetails: null, - isOpenShowLog: false, - iconClass: function(){ + content:null, + classNames:['background-operations'], + classNameBindings:['isOpen'], + isOpen:false, + iconClass:function () { return this.get('isOpen') ? 'icon-minus' : 'icon-plus'; }.property('isOpen'), - openDetails: function(){ + showOperationLog:function () { this.set('isOpen', !this.get('isOpen')) - }, - showOperationLog:function(){ var operation = this.get('content'); var self = this; if (!this.get('isOpenShowLog') && !this.get('logDetails')) { - jQuery.getJSON('data/hosts/background_operations/logs/task' +operation.taskId + '.json', + + jQuery.getJSON('data/hosts/background_operations/logs/task' + operation.taskId + '.json', function (data) { + var fields = ['stdout', 'stderror']; + if (data) { + fields.forEach(function (fieldName) { + if (data.fieldName) { + data.fieldName = data.fieldName.highlight(["fail", "err"]); + } + }); + } + + if (App.testMode) { + var stdError = "Donec quis error tincidunt dolor. word Proin vel fail dignissim metus. In hac err habitasse platea dictumst. Err Mauris error tortor dui, commodo vitae failure placerat ut, venenatis nec err dolor. failure Lorem ipsum dolor sit amet, fail err consectetur fail adipiscing elit. Error Vivamus vel velit ipsum, id laoreet velit. Nullam vel err augue a tortor mattis semper fail, in nec neque."; + stdError = stdError.highlight(["err", "fail"]); + data.stderror = stdError; + } + self.set('logDetails', data); } ); } - this.set('isOpenShowLog', !this.get('isOpenShowLog')) + + if (App.testMode) { + var stdError = "Donec quis error tincidunt dolor. word Proin vel fail dignissim metus. In hac err habitasse platea dictumst. Err Mauris error tortor dui, commodo vitae failure placerat ut, venenatis nec err dolor. failure Lorem ipsum dolor sit amet, fail err consectetur fail adipiscing elit. Error Vivamus vel velit ipsum, id laoreet velit. Nullam vel err augue a tortor mattis semper fail, in nec neque."; + stdError = stdError.highlight(["err", "fail"]); + var data = {stderror:stdError}; + self.set('logDetails', data); + } + + this.set('isOpenShowLog', !this.get('isOpenShowLog')); } });
\ No newline at end of file diff --git a/ambari-web/app/views/main/admin/user/create.js b/ambari-web/app/views/main/admin/user/create.js index e20ad73298..12ec4230ae 100644 --- a/ambari-web/app/views/main/admin/user/create.js +++ b/ambari-web/app/views/main/admin/user/create.js @@ -26,20 +26,20 @@ App.MainAdminUserCreateView = Em.View.extend({ var form = this.get("userForm"); if(form.isValid()) { if(form.getValues().admin === "" || form.getValues().admin == true) { - form.getField("roles").set("value","admin"); + form.getField("roles").set("value","admin,user"); form.getField("admin").set("value","true"); } else{ form.getField("roles").set("value","user"); } - parent_controller.sendCommandToServer('users/' + form.getValues().userName, "POST" , { + parent_controller.sendCommandToServer('/users/' + form.getValues().userName, "POST" , { Users: { password: form.getValues().password, roles: form.getValues().roles } - }, function (requestId) { + }, function (success) { - if (!requestId) { + if (!success) { return; } diff --git a/ambari-web/app/views/main/admin/user/edit.js b/ambari-web/app/views/main/admin/user/edit.js index ec4a168c27..b07c81bb26 100644 --- a/ambari-web/app/views/main/admin/user/edit.js +++ b/ambari-web/app/views/main/admin/user/edit.js @@ -27,7 +27,7 @@ App.MainAdminUserEditView = Em.View.extend({ if(form.isValid()) { var Users={}; if(form.getValues().admin === "" || form.getValues().admin == true) { - form.getField("roles").set("value","admin"); + form.getField("roles").set("value","admin,user"); form.getField("admin").set("value","true"); } else{ form.getField("roles").set("value","user"); @@ -40,11 +40,11 @@ App.MainAdminUserEditView = Em.View.extend({ Users.old_password=form.getValues().old_password; } - parent_controller.sendCommandToServer('users/' + form.getValues().userName, "PUT" , { + parent_controller.sendCommandToServer('/users/' + form.getValues().userName, "PUT" , { Users:Users - }, function (requestId) { + }, function (success) { - if (!requestId) { + if (!success) { return; } diff --git a/ambari-web/app/views/main/apps/item/bar_view.js b/ambari-web/app/views/main/apps/item/bar_view.js index c5f1d7d26e..343d63d77f 100644 --- a/ambari-web/app/views/main/apps/item/bar_view.js +++ b/ambari-web/app/views/main/apps/item/bar_view.js @@ -63,31 +63,47 @@ App.MainAppsItemBarView = Em.View.extend({ }.observes('activeJob'), - jobTimeLine:false, - jobTaskView:false, + map:false, + shuffle:false, + reduce:false, + + mapNodeLocal:false, + mapRackLocal:false, + mapOffSwitch:false, + reduceOffSwitch:false, + submitTime:false, + finishTime:false, updateTimeLine:function () { - var url = App.testMode ? '/data/apps/jobs/timeline.json' : "urlTBD" + this.get('activeJob').get('jobName'); + var url = App.testMode ? '/data/apps/jobs/timeline.json' : App.apiPrefix + "/jobhistory/task?jobId=" + this.get('activeJob').get('id') + + "&width=" + this.get('width'); var mapper = App.jobTimeLineMapper; mapper.set('model', this); App.HttpClient.get(url, mapper); }.observes('getChartData'), updateTasksView:function () { - var url = App.testMode ? '/data/apps/jobs/taskview.json' : "urlTBD" + this.get('activeJob').get('jobName'); + var url = App.testMode ? '/data/apps/jobs/taskview.json' : App.apiPrefix + "/jobhistory/tasklocality?jobId=" + this.get('activeJob').get('id'); var mapper = App.jobTasksMapper; mapper.set('model', this); App.HttpClient.get(url, mapper); }.observes('getChartData'), drawJobTimeline:function () { - var timeline = JSON.stringify(this.get('jobTimeLine')); - graph.drawJobTimeLine(timeline, this.get('width'), this.get('height'), '#chart', 'legend', 'timeline1'); - }.observes('jobTimeLine'), + var map = JSON.stringify(this.get('map')); + var shuffle = JSON.stringify(this.get('shuffle')); + var reduce = JSON.stringify(this.get('reduce')); + $('#chart, #legend, #timeline1').html(''); + graph.drawJobTimeLine(map, shuffle, reduce, this.get('width'), this.get('height'), '#chart', 'legend', 'timeline1'); + }.observes('map', 'shuffle', 'reduce'), drawJobTasks:function () { - var taskview = JSON.stringify(this.get('jobTaskView')); - graph.drawJobTasks(taskview, this.get('width'), this.get('height'), '#job_tasks', 'tasks_legend', 'timeline2'); - }.observes('jobTaskView') + var mapNodeLocal = JSON.stringify(this.get('mapNodeLocal')); + var mapRackLocal = JSON.stringify(this.get('mapRackLocal')); + var mapOffSwitch = JSON.stringify(this.get('mapOffSwitch')); + var reduceOffSwitch = JSON.stringify(this.get('reduceOffSwitch')); + $('#job_tasks, #tasks_legend, #timeline2').html(''); + graph.drawJobTasks(mapNodeLocal, mapRackLocal, mapOffSwitch, reduceOffSwitch, this.get('width'), this.get('height'), '#job_tasks', 'tasks_legend', 'timeline2'); + }.observes('mapNodeLocal', 'mapRackLocal', 'mapOffSwitch', 'reduceOffSwitch') -});
\ No newline at end of file +}); diff --git a/ambari-web/app/views/main/apps/item/dag_view.js b/ambari-web/app/views/main/apps/item/dag_view.js index 680034bb04..e8fb43fb24 100644 --- a/ambari-web/app/views/main/apps/item/dag_view.js +++ b/ambari-web/app/views/main/apps/item/dag_view.js @@ -98,8 +98,6 @@ App.MainAppsItemDagView = Em.View.extend({ // Redraw table innerTable.fnDraw(false); innerTable.fnSettings().oFeatures.bFilter = false; - - console.log(innerTable.fnSettings()); var dagSchema = this.get('controller.content.workflowContext'); var jobs = this.get('jobs'); var graph = new DagViewer(false, 'dag_viewer') diff --git a/ambari-web/app/views/main/host.js b/ambari-web/app/views/main/host.js index e68e70be8c..e6590f7bd9 100644 --- a/ambari-web/app/views/main/host.js +++ b/ambari-web/app/views/main/host.js @@ -17,6 +17,7 @@ */ var App = require('app'); +require('utils/data_table'); App.MainHostView = Em.View.extend({ templateName:require('templates/main/host'), @@ -28,7 +29,7 @@ App.MainHostView = Em.View.extend({ return App.router.get('mainHostController.content'); }.property('App.router.mainHostController.content'), componentsIds:[1, 2, 3, 4, 5, 6, 7, 8], - + oTable: null, isFilterOpen:false, // isApplyDisabled:function () { @@ -68,6 +69,33 @@ App.MainHostView = Em.View.extend({ }.observes('slaveComponentsChecked'), didInsertElement:function () { + var oTable = $('#hosts-table').dataTable({ + "sDom": '<"search-bar"f><"clear">rt<"page-bar"lip><"clear">', + "oLanguage": { + "sSearch": "Search:", + "sLengthMenu": "Show: _MENU_", + "sInfo": "_START_ - _END_ of _TOTAL_ (_TOTAL_ total)", + "sInfoEmpty": "0 - _END_ of _TOTAL_ (_TOTAL_ total)", + "sInfoFiltered": "", + "oPaginate":{ + "sPrevious": "<i class='icon-arrow-left'></i>", + "sNext": "<i class='icon-arrow-right'></i>" + } + }, + "bSortCellsTop": true, + "iDisplayLength": 10, + "aLengthMenu": [[10, 25, 50, 100, -1], [10, 25, 50, 100, "All"]], + "aoColumns":[ + { "sType":"html" }, + { "sType":"html" }, + { "sType":"num-html" }, + { "sType":"ambari-bandwidth" }, + { "sType":"string" }, + { "sType":"string" }, + { "sType":"string", "bSortable": false } + ] + }); + this.set('oTable', oTable); this.set('allComponentsChecked', true); // select all components (checkboxes) on start. }, @@ -111,7 +139,8 @@ App.MainHostView = Em.View.extend({ }.property('content.components.@each'), usageStyle:function () { - return "width:" + this.get('content.diskUsage') + "%"; + //return "width:" + this.get('content.diskUsage') + "%"; + return "width:" + (25+Math.random()*50) + "%"; // Just for tests purposes }.property('content.diskUsage') // HostCheckboxView:Em.Checkbox.extend({ @@ -152,5 +181,101 @@ App.MainHostView = Em.View.extend({ var selectedHostsIds = App.router.get('mainHostController.selectedHostsIds'); var rack = App.router.get('mainHostController.selectedRack'); return (selectedHostsIds.length && rack && rack.constructor == 'App.Cluster') ? false : "disabled"; - }.property('App.router.mainHostController.selectedHostsIds', 'App.router.mainHostController.selectedRack') + }.property('App.router.mainHostController.selectedHostsIds', 'App.router.mainHostController.selectedRack'), + + nameFilterView: Em.TextField.extend({ + classNames:['input-medium'], + type:'text', + placeholder: 'Any Name', + filtering:function(){ + if (this.get('value') == '') { + this.$().closest('th').addClass('notActive'); + } + else { + this.$().closest('th').removeClass('notActive'); + } + this.get('parentView').get('applyFilter')(this.get('parentView'), 0, this.get('value')); + }.observes('value') + }), + + rackFilterView: Em.TextField.extend({ + classNames:['input-medium'], + type:'text', + placeholder: 'Any Name', + filtering:function(){ + if (this.get('value') == '') { + this.$().closest('th').addClass('notActive'); + } + else { + this.$().closest('th').removeClass('notActive'); + } + this.get('parentView').get('applyFilter')(this.get('parentView'), 1, this.get('value')); + }.observes('value') + }), + /** + * Filter-field for cpu + */ + cpuFilterView: Em.TextField.extend({ + classNames:['input-mini'], + type:'text', + placeholder: 'Any ', + elementId:'cpu_filter', + filtering:function(){ + if (this.get('value') == '') { + this.$().closest('th').addClass('notActive'); + } + else { + this.$().closest('th').removeClass('notActive'); + } + this.get('parentView').get('applyFilter')(this.get('parentView'), 2); + }.observes('value') + }), + /** + * Filter-field for RAM + */ + ramFilterView: Em.TextField.extend({ + classNames:['input-mini'], + type:'text', + placeholder: 'Any ', + elementId: 'ram_filter', + filtering:function(){ + if (this.get('value') == '') { + this.$().closest('th').addClass('notActive'); + } + else { + this.$().closest('th').removeClass('notActive'); + } + this.get('parentView').get('applyFilter')(this.get('parentView'), 3); + }.observes('value') + }), + /** + * Clear selected filter + * @param event + */ + clearFilterButtonClick: function(event) { + var viewName = event.target.id.replace('view_', ''); + var elementId = this.get(viewName).get('elementId'); + if(this.get(viewName).get('tagName') === 'input') { + this.get(viewName).set('value', ''); + } + if(this.get(viewName).get('tagName') === 'select') { + this.get(viewName).set('value', 'Any'); + this.get(viewName).change(); + } + if(this.get(viewName).get('multiple')) { + this.get(viewName).get('clearFilter')(this.get(viewName)); + } + }, + /** + * apply each filter to dataTable + * + * @param {parentView} + * @param {iColumn} number of column by which filter + * @param {value} + */ + applyFilter:function(parentView, iColumn, value) { + value = (value) ? value : ''; + parentView.get('oTable').fnFilter(value, iColumn); + } + });
\ No newline at end of file diff --git a/ambari-web/app/views/wizard/controls_view.js b/ambari-web/app/views/wizard/controls_view.js index 8c0208257c..3650f00005 100644 --- a/ambari-web/app/views/wizard/controls_view.js +++ b/ambari-web/app/views/wizard/controls_view.js @@ -28,7 +28,7 @@ App.ServiceConfigPopoverSupport = Ember.Mixin.create({ * Config object. It will instance of App.ServiceConfigProperty */ serviceConfig: null, - + placeholderBinding: 'serviceConfig.defaultValue', isPopoverEnabled: true, didInsertElement: function () { @@ -252,6 +252,7 @@ App.ServiceConfigMultipleHostsDisplay = Ember.Mixin.create(App.ServiceConfigHost console.log('controller', this.get('controller').name); //should be slaveComponentGroupsController if(!this.get('value')){ // debugger; + return true; } return this.get('value').length === 0; }.property('value'), |