summaryrefslogtreecommitdiffstats
path: root/templates/hybrid-html5/app/Frontend/services/JQueryEmu.js
blob: 6d6e338750e89b8827a8e0b0a2aaaaab4e58a941 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/* 
 * Copyright (C) 2015 "IoT.bzh"
 * Author "Fulup Ar Foll"
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * Usage:
 * 
 *   // mouse event probably point on icon and not on button div
 *   ... ng-click="LockChannel($event)
     var target= angular.element(event.currentTarget);
     var button= JQemu.FindInParent (target, 'div');
 * 
 */


(function () {
    'use strict';


          
    // _all modules only reference dependencies
    angular.module('JQueryEmu', [])

            // Factory is a singleton and share its context within all instances.
            .factory('JQemu', function () {

                var FindInParent = function (element, selector) {
                    var parent = element;
                    var search = selector.toUpperCase();
                    while (parent[0]) {
                        if (search === parent[0].tagName) {
                            return parent;
                        }  // HTMLDivElement properties
                        parent = parent.parent();
                    }
                };
                
                var  FindByTag= function (element, tag, selector) {
                    var search = selector.toLowerCase();
                    var type   = tag.toLowerCase()+ "Name";
                    var children = element.children();
                    while (children[0]) {
                        if (search === children[0][type]) {
                            return children;
                        }  // HTMLDivElement properties
                        children = children.next();
                    }
                };
                
                var  FindByClass= function (element, selector) {
                    var search = selector.toLowerCase();
                    var children = element.children();
                    while (children[0]) {
                        if (children.hasClass(search)) {
                            return children;
                        }  // HTMLDivElement properties
                        children = children.next();
                    }
                };

                var myMethods = {
                    FindInParent: FindInParent,
                    FindByTag: FindByTag,
                    FindByClass: FindByClass
                };

                return myMethods;
            });

})();