d5d71cd424be028fd9e0e665011ace404a3f3647
[yaffs-website] / web / modules / contrib / devel / webprofiler / js / app / main.js
1 (function ($, Drupal, Backbone) {
2
3     "use strict";
4
5     /**
6      * Define namespaces.
7      */
8     Drupal.webprofiler = {
9         views: {},
10         models: {},
11         collectors: {},
12         routers: {}
13     };
14
15     Drupal.behaviors.webprofiler = {
16         attach: function (context) {
17             var el,
18                 elz,
19                 key,
20                 sel,
21                 value,
22                 select,
23                 selector,
24                 unselected,
25                 filter = [],
26
27                 livefilter = function (e) {
28                     el = $(e).attr('id').replace('edit-', '');
29                     value = $(e).val();
30                     filter[el] = value.replace('/', '\/');
31                     selector = [];
32                     unselected = [];
33
34                     for (key in filter) {
35                         if (filter[key].length > 0 && filter[key] != ' ') {
36                             select = filter[key].split(' ').filter(Boolean);
37                             for (sel in select) {
38                                 selector.push('[data-wp-' + key + ' *= ' + select[sel].toLowerCase() + ']');
39                                 unselected.push('[data-wp-' + key + ']:not([data-wp-' + key + ' *= ' + select[sel].toLowerCase() + '])');
40                             }
41                         }
42                         else {
43                             selector.push('[data-wp-' + key + ']');
44                         }
45                     }
46                     for (elz in unselected) {
47                         $(unselected[elz]).addClass('is--hidden');
48                     }
49                     $(selector.join('')).removeClass('is--hidden');
50                 },
51
52                 modalFill = function(t,c){
53                     $('.modal__title').html(t);
54                     $('.modal__main-data').html(c);
55                 },
56
57                 clipboard = function (e, t) {
58                     var clip = e.parent().find(t).get(0),
59                         title = 'Original Code',
60                         content = '<textarea readonly >' +
61                             clip.textContent +
62                             '</textarea>';
63
64                     modalFill(title,content);
65                     $('.modal').show();
66                 };
67
68             $(context).find('#collectors').once('webprofiler').each(function () {
69                 new Drupal.webprofiler.routers.CollectorsRouter({el: $('#collectors')});
70                 Backbone.history.start({
71                     pushState: false
72                 });
73             });
74
75             $(context).find('.js--modal-close').each(function () {
76                 $(this).on('click', function () {
77                     $('.js--modal').hide();
78                 });
79             });
80
81             $(context).find('.js--live-filter').each(function () {
82                 $(this).on('keyup', function () {
83                     livefilter($(this));
84                 });
85                 $(this).on('change', function () {
86                     livefilter($(this));
87                 });
88             });
89
90             $(context).find('.js--panel-toggle').once('js--panel-toggle').each(function () {
91                 $(this).on('click', function () {
92                     $(this).parent().parent().toggleClass('is--open');
93                 });
94             });
95
96             $(context).find('.js--clipboard-trigger').once('js--clipboard-trigger').each(function () {
97                 $(this).on('click', function () {
98                         clipboard($(this), '.js--clipboard-target')
99                     }
100                 );
101             });
102         }
103     };
104
105 }(jQuery, Drupal, Backbone));