First version
[src/app-framework-demo.git] / afm-client / app / Frontend / widgets / Navigation / LinkButton.js
1 /* 
2  * Copyright (C) 2015 "IoT.bzh"
3  * Author "Fulup Ar Foll"
4  *
5  * This program is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation, either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
17  * 
18  * Bugs: Input with Callback SHOULD BE get 'required' class
19  */
20
21 (function () {
22     'use strict';
23
24     var tmpl = '<span title="Goto: {{href}}" ng-click="clicked()">' +
25             '<i class="{{icon}}"></i>' +
26             '<span>{{label}}</span>' +
27             '</span>';
28
29
30     angular.module('LinkButton', [])
31             .directive('linkButton', function ($location) {
32                 
33                 function mymethods(scope, elem, attrs) {
34
35                     scope.clicked = function () {
36                         
37                         if (!attrs.query) $location.path(attrs.href);
38                         else $location.path(attrs.href).search(attrs.query);
39                     };
40
41                     // ajust icon or use default
42                     scope.icon = attrs.icon   || 'fi-link';
43                     scope.label = attrs.label || 'Jump';
44                     scope.href  = attrs.href  || '/home';
45                     
46                     // add label as class
47                     elem.addClass (scope.label.toLowerCase());
48                 }
49
50                 return {
51                     restrict: 'E',
52                     template: tmpl,
53                     link: mymethods,
54                     scope: {}
55                 };
56             });
57 })();