From 43c3dc1f42d9bb13a9d02bb9a6101471895c400a Mon Sep 17 00:00:00 2001 From: Xinlei Cao Date: Fri, 8 May 2015 09:34:32 +0000 Subject: [PATCH 01/12] MIT LICENSE --- LICENSE | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..69a8782 --- /dev/null +++ b/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2015 Cumulocity GmbH + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file From 67b4e3124baa5dbe858fd8e9f92694300810d378 Mon Sep 17 00:00:00 2001 From: m2m Date: Fri, 19 Jun 2015 03:49:44 +0000 Subject: [PATCH 02/12] package.json edited online with Bitbucket --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3fc7ef1..8689beb 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,6 @@ "version": "0.0.2", "dependencies": { "grunt-angular-templates": "^0.5.5", - "grunt-cumulocity-ui-tasks": "latest" + "grunt-cumulocity-ui-tasks": "1.0.3" } } From 67da38f61ea3656c35403437cdaabf7858137648 Mon Sep 17 00:00:00 2001 From: Luis Confraria Date: Tue, 18 Oct 2016 15:41:45 +0100 Subject: [PATCH 03/12] clean the examples. remove grunt. update package.json --- Gruntfile.js | 39 -------- build/branding/img/logo.png | Bin 1881 -> 0 bytes build/branding/main.js | 1 - build/branding/style.css | 1 - build/deviceContact/main.js | 1 - build/deviceEventsRealTime/main.js | 1 - build/index.html | 93 ------------------ build/myplugin/main.js | 1 - cumulocity.json | 6 +- package.json | 5 +- plugins/branding/cumulocity.json | 20 +--- plugins/branding/img/favicon.ico | Bin 0 -> 1150 bytes plugins/branding/img/logo-main.svg | 44 +++++++++ plugins/branding/img/logo.png | Bin 1881 -> 0 bytes plugins/branding/img/logo.svg | 44 +++++++++ plugins/branding/main.less | 5 + plugins/branding/variables/.DS_Store | Bin 0 -> 6148 bytes plugins/branding/variables/brand-vars.less | 18 ++++ plugins/branding/variables/buttons-vars.less | 49 +++++++++ plugins/branding/variables/colors.less | 76 ++++++++++++++ plugins/branding/variables/index.less | 7 ++ .../variables/progress-bars-vars.less | 21 ++++ plugins/branding/variables/quick-links.less | 10 ++ plugins/branding/variables/scaffolding.less | 59 +++++++++++ .../branding/variables/typography-vars.less | 7 ++ plugins/deviceContact/cumulocity.json | 4 +- ...Contact.js => deviceContact.controller.js} | 18 ++-- .../{views => }/deviceContact.html | 0 plugins/deviceContact/index.js | 15 ++- .../controllers/deviceEventsRealTimeCtrl.js | 50 ---------- plugins/deviceEventsRealTime/cumulocity.json | 4 +- .../{views => }/deviceEventsRealTime.html | 0 .../deviceEventsRealtime.controller.js | 43 ++++++++ plugins/deviceEventsRealTime/index.js | 28 ++++-- plugins/myplugin/{views => }/index.html | 0 plugins/myplugin/index.js | 45 +++++---- 36 files changed, 459 insertions(+), 256 deletions(-) delete mode 100644 Gruntfile.js delete mode 100644 build/branding/img/logo.png delete mode 100644 build/branding/main.js delete mode 100644 build/branding/style.css delete mode 100644 build/deviceContact/main.js delete mode 100644 build/deviceEventsRealTime/main.js delete mode 100644 build/index.html delete mode 100644 build/myplugin/main.js create mode 100644 plugins/branding/img/favicon.ico create mode 100644 plugins/branding/img/logo-main.svg delete mode 100644 plugins/branding/img/logo.png create mode 100644 plugins/branding/img/logo.svg create mode 100644 plugins/branding/main.less create mode 100644 plugins/branding/variables/.DS_Store create mode 100644 plugins/branding/variables/brand-vars.less create mode 100644 plugins/branding/variables/buttons-vars.less create mode 100644 plugins/branding/variables/colors.less create mode 100644 plugins/branding/variables/index.less create mode 100644 plugins/branding/variables/progress-bars-vars.less create mode 100644 plugins/branding/variables/quick-links.less create mode 100644 plugins/branding/variables/scaffolding.less create mode 100644 plugins/branding/variables/typography-vars.less rename plugins/deviceContact/{controllers/deviceContact.js => deviceContact.controller.js} (64%) rename plugins/deviceContact/{views => }/deviceContact.html (100%) delete mode 100644 plugins/deviceEventsRealTime/controllers/deviceEventsRealTimeCtrl.js rename plugins/deviceEventsRealTime/{views => }/deviceEventsRealTime.html (100%) create mode 100644 plugins/deviceEventsRealTime/deviceEventsRealtime.controller.js rename plugins/myplugin/{views => }/index.html (100%) diff --git a/Gruntfile.js b/Gruntfile.js deleted file mode 100644 index 898e323..0000000 --- a/Gruntfile.js +++ /dev/null @@ -1,39 +0,0 @@ -module.exports = function (grunt) { - 'use strict'; - - var DEFAULT_HOST = 'developer.cumulocity.com', - DEFAULT_PROTOCOL = 'https', - host = DEFAULT_HOST, - protocol = DEFAULT_PROTOCOL; - - if (grunt.option('host')) { - host = grunt.option('host'); - } - - if (grunt.option('protocol')) { - protocol = grunt.option('protocol'); - } - - grunt.config('cumulocity.host', host); - grunt.config('cumulocity.protocol', protocol); - - grunt.config('paths.root', './'); - grunt.config('paths.temp', '.tmp'); - grunt.config('paths.build', 'build'); - grunt.config('paths.plugins', 'plugins'); - grunt.config('paths.bower', 'bower_components'); - - //Load cumulocity grunt tasks - grunt.loadNpmTasks('grunt-cumulocity-ui-tasks'); - - grunt.registerTask('server', [ - 'pluginPreAll', - 'connect', - 'watch' - ]); - - grunt.registerTask('build', [ - 'pluginBuildAll' - ]); - -}; \ No newline at end of file diff --git a/build/branding/img/logo.png b/build/branding/img/logo.png deleted file mode 100644 index c7fa6880d171760edfba47309a4d4b284bc3420c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1881 zcmV-f2d4OmP)P001cn1^@s6z>|W`00004b3#c}2nYxW zdocpH}i=IYQBV*Ui;jg;5H-bTY~gzbYwg~cP=&7NvM<>75Ib0y}0GehfjPU$ezvU z+c$l7hZ41?QmIldmkY%pM4JE{l$o@m?daN`5 zU9oayccok)$?6E%yv45#g-_sDiQ5^2!$U2r^qt$k`p+Q|L0?JAo%wCGQZ1Ik0#Q1F zl@up(oj~w#!VPOyQlfN{LNTDLtIN~Q{q9O_4e%XZ)f3fG5rG?bh5OE+fBdr1g zZwX=0gRi>?gB}Xr5{xc%<8%r-i< z!S}jQHeh1BPP5q}%VRv_Qz}-GnzmRB=1)kK@1 z!*6X$q2h-qxlfC*u^0w8Vw~6+p$ti!(7S8{O6yr60Jq(8FHw|(G97+LOfd`)VWVd= zTT*IzB<1RHAOd+V1YUVg08C#*mtF4Q8ov`kDR8+BHE=v?CupTX*%=85K~Xa}+CML3 zXtWmpDQ%U6{-^tT-xKYak}rl-eQ%fH`yodd6b zpXI$}w8_Y9tHZA_)a!AYTXj@Dv2X24z0@&=peg!GiCdPT_glnKM0eK; z>Wxu+-)F@~%T%fXu^j_(*SG=#vzU`_U$D5mR{=b=@9rZjZ|mOBy-btlQ`c>ZA~01v zT_H^zNs4_U404h(PY)oaen;E`Wn)L$C6`m>4YG$ee=E8J-CdB{!At zm1)#6;&z%lm;e0wnm0gpKXSOPkjF2cjU%JV(~~*xStv9mM$SfU>rCJ7hfXzb3IT|f z|BE=XNu!?Q`{j9O%Ja%Jrc$!V##vbVGko%3!m!u3Tkbh$gy49|Fv!*o{pEGg&EYNS&R}<3-01W#pBQ2z4L?QiwOS%
')}]); \ No newline at end of file diff --git a/build/deviceEventsRealTime/main.js b/build/deviceEventsRealTime/main.js deleted file mode 100644 index ff20705..0000000 --- a/build/deviceEventsRealTime/main.js +++ /dev/null @@ -1 +0,0 @@ -angular.module("myapp.deviceEventsRealTime",[]).config(["c8yViewsProvider",function(a){a.when("/device/:deviceId",{name:"Real-Time Events",icon:"rss",templateUrl:"/apps/myapplication/deviceEventsRealTime/views/deviceEventsRealTime.html",controller:"deviceEventsRealTimeCtrl"})}]),angular.module("myapp.deviceEventsRealTime").controller("deviceEventsRealTimeCtrl",["$scope","$routeParams","c8yNotifications","c8yAlert","c8yCepModule",function(a,b,c,d,e){function f(){i||e.createOrDeploy(l).then(c.configure).then(angular.bind({},c.subscribe,k)).then(function(a){d.success("Connected! Waiting for incoming events..."),i=a,i.$on("message",g)})}function g(b,c){for(a.events.push(c);a.events.length>100;)a.events.shift()}function h(){i&&i.unsubscribe&&i.unsubscribe()}var i,j=b.deviceId,k="/events/"+j,l={name:"c8yui_realtime_device_events",body:'insert into\n SendNotification\nselect\n e.event as payload,\n "events/" || e.event.source.value as channelName\nfrom\n EventCreated e;',status:"DEPLOYED"};a.events=[],a.$on("$destroy",h),f()}]),angular.module("myapp.deviceEventsRealTime").run(["$templateCache",function(a){"use strict";a.put("/apps/myapplication/deviceEventsRealTime/views/deviceEventsRealTime.html",'
No incoming events at the moment...
{{e.data.type}}{{e.data.text || \'-- no text message --\'}}
')}]); \ No newline at end of file diff --git a/build/index.html b/build/index.html deleted file mode 100644 index 1cee74e..0000000 --- a/build/index.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - Cumulocity - - - - - - - - - - - -
- - - - - - - -
- -
-
-
- -
- -
- -
-
-
-
- - - - - - - - - diff --git a/build/myplugin/main.js b/build/myplugin/main.js deleted file mode 100644 index 8e36b41..0000000 --- a/build/myplugin/main.js +++ /dev/null @@ -1 +0,0 @@ -angular.module("myapp.helloworld",[]).config(["c8yNavigatorProvider","c8yViewsProvider",function(a,b){"use strict";a.addNavigation({name:"New plugin",icon:"cube",priority:1e5,path:"hello"}),b.when("/hello",{templateUrl:"/apps/myapplication/myplugin/views/index.html",controller:"mh_MainCtrl"})}]),angular.module("myapp.helloworld").controller("mh_MainCtrl",["$scope",function(a){"use strict";a.hello="Hello world!"}]),angular.module("myapp.helloworld").run(["$templateCache",function(a){"use strict";a.put("/apps/myapplication/myplugin/views/index.html","

{{hello}}

")}]); \ No newline at end of file diff --git a/cumulocity.json b/cumulocity.json index e8b8a76..2b9cc4a 100644 --- a/cumulocity.json +++ b/cumulocity.json @@ -3,15 +3,15 @@ "contextPath": "myapplication", "key": "myapplication-appkey", "name": "myapplication", - "resourcesUrl": "https://bitbucket.org/m2m/cumulocity-ui-plugin-examples/raw/develop/build", + "resourcesUrl": "/", "type": "HOSTED", "imports": [ "core/c8yBranding", "core/deviceList", + "core/groupsHierarchy", "core/deviceDetail", "myapplication/myplugin", - "myapplication/branding", "myapplication/deviceContact", "myapplication/deviceEventsRealTime" ] -} \ No newline at end of file +} diff --git a/package.json b/package.json index 8689beb..22ef60d 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,7 @@ { "name": "cumulocity-ui-plugin-examples", - "version": "0.0.2", + "version": "1.0.0", "dependencies": { - "grunt-angular-templates": "^0.5.5", - "grunt-cumulocity-ui-tasks": "1.0.3" + "cumulocity-ui-build": "http://resources.cumulocity.com/webapps/ui/7.37.0.tar.gz" } } diff --git a/plugins/branding/cumulocity.json b/plugins/branding/cumulocity.json index 4a3987d..3d4c77c 100644 --- a/plugins/branding/cumulocity.json +++ b/plugins/branding/cumulocity.json @@ -1,19 +1,5 @@ { - "name": "Sample branding", - "description": "Sample branding plugin.", - "category": "Examples", - "icon": "bell", - "color": "#F2DF0F", - "ngModules": [ - "myapp.branding" - ], - "less": [ - "style/main.less" - ], - "js": [ - "index.js" - ], - "copy": [ - "img/*" - ] + "description": "Pied Piper Branding Plugin", + "less": ["main.less"], + "copy": ["img"] } diff --git a/plugins/branding/img/favicon.ico b/plugins/branding/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..659b3c687bf4f13c853d3819e2caa8761cb833bc GIT binary patch literal 1150 zcma)*Pfrt36va=SNiZ>z#sx$Zjd5X=hJ?5fiKI37XCbRnLzHo*1Jb0?s#R+dDvX_0 zl(w|#!Vtoe58##!3k8h2;3J?eU<(Tt?k?{#yz){dZ6;^#ojdb;bLZSQfKMELKg9Vw z;yTa<;F6FiiHcVj0TB02o$$1OElxyK)3=}HgfWVx?p_$JeqWoWY0!23AH`y^8l&>7 z-)GXPcc96Spp=8HvlnnjzDJGGX!IyP^os+7VGT?Q2Zr!pFXqO)w#)B%&+D@`**b$DNV=8K?|RqB8b;a zW-o!_u-LQUO*rf)_rUWlR?GpFlX*Qa<~PE8PY4sP=tuJ9>cjhzQKQQ5 z&o6)>=0mrTRo`E#m=TqexyrNOcf*)(KaFlXjumI-@cZ2+zMp$#hCR jUf7NpSo9r3t7#toKYs}LU9T2VV`&G + + + +logo + + + diff --git a/plugins/branding/img/logo.png b/plugins/branding/img/logo.png deleted file mode 100644 index c7fa6880d171760edfba47309a4d4b284bc3420c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1881 zcmV-f2d4OmP)P001cn1^@s6z>|W`00004b3#c}2nYxW zdocpH}i=IYQBV*Ui;jg;5H-bTY~gzbYwg~cP=&7NvM<>75Ib0y}0GehfjPU$ezvU z+c$l7hZ41?QmIldmkY%pM4JE{l$o@m?daN`5 zU9oayccok)$?6E%yv45#g-_sDiQ5^2!$U2r^qt$k`p+Q|L0?JAo%wCGQZ1Ik0#Q1F zl@up(oj~w#!VPOyQlfN{LNTDLtIN~Q{q9O_4e%XZ)f3fG5rG?bh5OE+fBdr1g zZwX=0gRi>?gB}Xr5{xc%<8%r-i< z!S}jQHeh1BPP5q}%VRv_Qz}-GnzmRB=1)kK@1 z!*6X$q2h-qxlfC*u^0w8Vw~6+p$ti!(7S8{O6yr60Jq(8FHw|(G97+LOfd`)VWVd= zTT*IzB<1RHAOd+V1YUVg08C#*mtF4Q8ov`kDR8+BHE=v?CupTX*%=85K~Xa}+CML3 zXtWmpDQ%U6{-^tT-xKYak}rl-eQ%fH`yodd6b zpXI$}w8_Y9tHZA_)a!AYTXj@Dv2X24z0@&=peg!GiCdPT_glnKM0eK; z>Wxu+-)F@~%T%fXu^j_(*SG=#vzU`_U$D5mR{=b=@9rZjZ|mOBy-btlQ`c>ZA~01v zT_H^zNs4_U404h(PY)oaen;E`Wn)L$C6`m>4YG$ee=E8J-CdB{!At zm1)#6;&z%lm;e0wnm0gpKXSOPkjF2cjU%JV(~~*xStv9mM$SfU>rCJ7hfXzb3IT|f z|BE=XNu!?Q`{j9O%Ja%Jrc$!V##vbVGko%3!m!u3Tkbh$gy49|Fv!*o{pEGg&EYNS&R}<3-01W#pBQ2z4L?QiwOS% + + + +logo + + diff --git a/plugins/branding/main.less b/plugins/branding/main.less new file mode 100644 index 0000000..489a929 --- /dev/null +++ b/plugins/branding/main.less @@ -0,0 +1,5 @@ +@import "../../node_modules/cumulocity-ui-build/__baseBranding__/variables/index.less"; + +@import "variables/index.less"; + +@import "../../node_modules/cumulocity-ui-build/__baseBranding__/export.less"; diff --git a/plugins/branding/variables/.DS_Store b/plugins/branding/variables/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0`. +@body-bg: @body-background-color; + +@body-background-pattern: "";//url(data:image/png;base64,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); + + +//** Global text color on ``. +@text-color: @gray-text; + +//** Global textual link color. +@link-color: @brand-primary; + +//** Link hover color set via `darken()` function. +@link-hover-color: darken(@link-color, 15%); + +//** Link hover decoration. +@link-hover-decoration: underline; + +// realtime Colors +@realtimeEnd: whitesmoke; + +@realtimeStart: @gray; + +@realtimeOn: @success; + +@realtimeOff: @danger; + + + + +// file paths +@image-path: 'img/'; + + + + + +//-- Z-index master list +// +// Warning: Avoid customizing these values. They're used for a bird's eye view +// of components dependent on the z-axis and are designed to all work together. +// +// Note: These variables are not generated into the Customizer. + +@zindex-navbar: 1000; +@zindex-dropdown: 1000; +@zindex-popover: 1060; +@zindex-tooltip: 1070; +@zindex-navbar-fixed: 1030; +@zindex-modal-background: 1040; +@zindex-modal: 1050; diff --git a/plugins/branding/variables/typography-vars.less b/plugins/branding/variables/typography-vars.less new file mode 100644 index 0000000..1dc1755 --- /dev/null +++ b/plugins/branding/variables/typography-vars.less @@ -0,0 +1,7 @@ + +//== Typography +// +//## Font, line-height, and color for body text, headings, and more. +// Main font face +@font-family-sans-serif: Arial, Verdana, sans-serif; +//@font-path: 'font/'; diff --git a/plugins/deviceContact/cumulocity.json b/plugins/deviceContact/cumulocity.json index 1caf82b..9695ff4 100644 --- a/plugins/deviceContact/cumulocity.json +++ b/plugins/deviceContact/cumulocity.json @@ -2,13 +2,11 @@ "name": "Device Details - Contact", "description": "Plugin adds a Contact tab to Device Details view", "category": "Examples", - "icon": "bell", - "color": "#F2DF0F", "ngModules": [ "myapp.deviceContact" ], "js": [ "index.js", - "controllers/deviceContact.js" + "deviceContact.controller.js" ] } diff --git a/plugins/deviceContact/controllers/deviceContact.js b/plugins/deviceContact/deviceContact.controller.js similarity index 64% rename from plugins/deviceContact/controllers/deviceContact.js rename to plugins/deviceContact/deviceContact.controller.js index b8d07e3..5becb90 100644 --- a/plugins/deviceContact/controllers/deviceContact.js +++ b/plugins/deviceContact/deviceContact.controller.js @@ -1,8 +1,11 @@ -angular.module('myapp.deviceContact') -.controller('deviceContactCtrl', ['$scope', '$routeParams', 'c8yDevices', 'c8yAlert', - function ($scope, $routeParams, c8yDevices, c8yAlert) { - 'use strict'; - +(function() { + 'use strict'; + + angular.module('myapp.deviceContact') + .controller('deviceContactCtrl', DeviceContactController); + + function DeviceContactController($scope, $routeParams, c8yDevices, c8yAlert) { + function load() { c8yDevices.detail($routeParams.deviceId).then(function (res) { var device = res.data; @@ -10,7 +13,7 @@ angular.module('myapp.deviceContact') $scope.device.c8y_Contact = device.c8y_Contact; }); } - + function save(device) { c8yDevices.save(device).then(onSave); } @@ -24,4 +27,5 @@ angular.module('myapp.deviceContact') load(); } -]); + +}()); diff --git a/plugins/deviceContact/views/deviceContact.html b/plugins/deviceContact/deviceContact.html similarity index 100% rename from plugins/deviceContact/views/deviceContact.html rename to plugins/deviceContact/deviceContact.html diff --git a/plugins/deviceContact/index.js b/plugins/deviceContact/index.js index 71f239b..b551348 100644 --- a/plugins/deviceContact/index.js +++ b/plugins/deviceContact/index.js @@ -1,10 +1,17 @@ -angular.module('myapp.deviceContact', []) - .config(['c8yViewsProvider', function (c8yViewsProvider) { +(function() { + 'use strict'; + + angular.module('myapp.deviceContact', []) + .config(config); + + function config(c8yViewsProvider) { c8yViewsProvider.when('/device/:deviceId', { name: 'Contact', icon: 'envelope-o', priority: 1000, - templateUrl: ':::PLUGIN_PATH:::/views/deviceContact.html', + templateUrl: ':::PLUGIN_PATH:::/deviceContact.html', controller: 'deviceContactCtrl' }); - }]); \ No newline at end of file + } + +}()); diff --git a/plugins/deviceEventsRealTime/controllers/deviceEventsRealTimeCtrl.js b/plugins/deviceEventsRealTime/controllers/deviceEventsRealTimeCtrl.js deleted file mode 100644 index 6c275cd..0000000 --- a/plugins/deviceEventsRealTime/controllers/deviceEventsRealTimeCtrl.js +++ /dev/null @@ -1,50 +0,0 @@ -angular.module('myapp.deviceEventsRealTime') -.controller('deviceEventsRealTimeCtrl', ['$scope', '$routeParams', 'c8yNotifications', 'c8yAlert', 'c8yCepModule', -function ($scope, $routeParams, c8yNotifications, c8yAlert, c8yCepModule) { - var deviceId = $routeParams.deviceId, - eventsChannel = '/events/' + deviceId, - cepModule = { - name: 'c8yui_realtime_device_events', - body: 'insert into\n' + - ' SendNotification\n' + - 'select\n' + - ' e.event as payload,\n' + - ' "events/" || e.event.source.value as channelName\n' + - 'from\n' + - ' EventCreated e;', - status: 'DEPLOYED' - }, - subscription; - - function subscribe() { - if (!subscription) { - c8yCepModule.createOrDeploy(cepModule) - .then(c8yNotifications.configure) - .then(angular.bind({}, c8yNotifications.subscribe, eventsChannel)) - .then(function (_subscription) { - c8yAlert.success('Connected! Waiting for incoming events...'); - subscription = _subscription; - subscription.$on('message', onMessage); - }); - } - } - - function onMessage(evt, event) { - $scope.events.push(event); - - while ($scope.events.length > 100) { - $scope.events.shift(); - } - } - - function onDestroy() { - if (subscription && subscription.unsubscribe) { - subscription.unsubscribe(); - } - } - - $scope.events = []; - $scope.$on('$destroy', onDestroy); - - subscribe(); -}]); \ No newline at end of file diff --git a/plugins/deviceEventsRealTime/cumulocity.json b/plugins/deviceEventsRealTime/cumulocity.json index d837900..4933328 100644 --- a/plugins/deviceEventsRealTime/cumulocity.json +++ b/plugins/deviceEventsRealTime/cumulocity.json @@ -2,13 +2,11 @@ "name": "Device Events in Real-Time", "description": "Plugin adds a tab to Device Details with events displayed in real-time", "category": "Examples", - "icon": "bell", - "color": "#F2DF0F", "ngModules": [ "myapp.deviceEventsRealTime" ], "js": [ "index.js", - "controllers/deviceEventsRealTimeCtrl.js" + "deviceEventsRealTime.controller.js" ] } diff --git a/plugins/deviceEventsRealTime/views/deviceEventsRealTime.html b/plugins/deviceEventsRealTime/deviceEventsRealTime.html similarity index 100% rename from plugins/deviceEventsRealTime/views/deviceEventsRealTime.html rename to plugins/deviceEventsRealTime/deviceEventsRealTime.html diff --git a/plugins/deviceEventsRealTime/deviceEventsRealtime.controller.js b/plugins/deviceEventsRealTime/deviceEventsRealtime.controller.js new file mode 100644 index 0000000..ab6170c --- /dev/null +++ b/plugins/deviceEventsRealTime/deviceEventsRealtime.controller.js @@ -0,0 +1,43 @@ +(function() { + 'use strict'; + + angular.module('myapp.deviceEventsRealTime') + .controller('deviceEventsRealTimeCtrl', DeviceEventsRealTimeController); + + function DeviceEventsRealTimeController($scope, $routeParams, c8yRealtime) { + var deviceId = $routeParams.deviceId; + var eventsChannel = '/events/' + deviceId; + + function startRealtime() { + c8yRealtime.start($scope.$id, eventsChannel); + } + + function setUpListeners() { + c8yRealtime.addListener($scope.$id, $scope.realtimeChannel, $scope.$id + '-subscribed', subscribeListener); + c8yRealtime.addListener($scope.$id, $scope.realtimeChannel, 'CREATE', createListener); + c8yRealtime.addListener($scope.$id, $scope.realtimeChannel, 'DELETE', deleteListener); + } + + function stopRealtime() { + c8yRealtime.stop($scope.$id, eventsChannel); + } + + function subscribeListener() { + alert('works'); + } + + function createListener() { + alert('created'); + } + + function deleteListener() { + alert('created'); + } + + $scope.events = []; + $scope.$on('$destroy', stopRealtime); + + startRealtime(); + } + +}()); diff --git a/plugins/deviceEventsRealTime/index.js b/plugins/deviceEventsRealTime/index.js index b14fa13..c0e09d8 100644 --- a/plugins/deviceEventsRealTime/index.js +++ b/plugins/deviceEventsRealTime/index.js @@ -1,10 +1,18 @@ -angular.module('myapp.deviceEventsRealTime', []) - .config(['c8yViewsProvider', - function (c8yViewsProvider) { - c8yViewsProvider.when('/device/:deviceId', { - name: 'Real-Time Events', - icon: 'rss', - templateUrl: ':::PLUGIN_PATH:::/views/deviceEventsRealTime.html', - controller: 'deviceEventsRealTimeCtrl' - }); - }]); +(function() { + 'use strict'; + + angular.module('myapp.deviceEventsRealTime', []) + .config(config); + + function config(c8yViewsProvider) { + + c8yViewsProvider.when('/device/:deviceId', { + name: 'Real-Time Events', + icon: 'rss', + templateUrl: ':::PLUGIN_PATH:::/deviceEventsRealTime.html', + controller: 'deviceEventsRealTimeCtrl' + }); + + } + +}()); diff --git a/plugins/myplugin/views/index.html b/plugins/myplugin/index.html similarity index 100% rename from plugins/myplugin/views/index.html rename to plugins/myplugin/index.html diff --git a/plugins/myplugin/index.js b/plugins/myplugin/index.js index 9292ed6..a77e4f3 100644 --- a/plugins/myplugin/index.js +++ b/plugins/myplugin/index.js @@ -1,26 +1,33 @@ -//Main module name must be defined in ngModules of the plugin manifest -angular.module('myapp.helloworld', []).config(['c8yNavigatorProvider', 'c8yViewsProvider', -function (c8yNavigatorProvider, c8yViewsProvider) { +(function() { 'use strict'; - c8yNavigatorProvider.addNavigation({ - name: 'New plugin', - icon: 'cube', - priority: 100000, - path: 'hello' - }); + //Main module name must be defined in ngModules of the plugin manifest + //so that they can be loaded at application bootstrap + angular.module('myapp.helloworld', []) + .config(config) + .controller('mh_MainCtrl', MainController); - c8yViewsProvider.when('/hello', { - // Please use this string placeholder where you want to refer you plugin path. - templateUrl: ':::PLUGIN_PATH:::/views/index.html', - controller: 'mh_MainCtrl' - }); + function config(c8yNavigatorProvider, c8yViewsProvider) { + c8yNavigatorProvider.addNavigation({ + name: 'New plugin', + icon: 'cube', + priority: 100000, + path: 'hello' + }); -}]); + c8yViewsProvider.when('/hello', { + // Please use this string placeholder where you want to refer you plugin path. + templateUrl: ':::PLUGIN_PATH:::/index.html', + controller: 'mh_MainCtrl' + }); -angular.module('myapp.helloworld').controller('mh_MainCtrl', ['$scope', function ($scope) { - 'use strict'; + c8yViewsProvider.when('/', { + redirectTo: '/hello' + }); + } - $scope.hello = 'Hello world!'; + function MainController($scope) { + $scope.hello = 'Hello world!'; + } -}]); \ No newline at end of file +}()); From 4be614500a3511c093dca6d50ecdd8366561e0eb Mon Sep 17 00:00:00 2001 From: Luis Confraria Date: Tue, 18 Oct 2016 16:26:53 +0100 Subject: [PATCH 04/12] fix realtime example --- .../deviceEventsRealTime.html | 10 +++---- .../deviceEventsRealtime.controller.js | 27 ++++++++++--------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/plugins/deviceEventsRealTime/deviceEventsRealTime.html b/plugins/deviceEventsRealTime/deviceEventsRealTime.html index 55246ac..d87a2a6 100644 --- a/plugins/deviceEventsRealTime/deviceEventsRealTime.html +++ b/plugins/deviceEventsRealTime/deviceEventsRealTime.html @@ -5,13 +5,13 @@
- {{e.data.type}} + {{e.type}} - {{e.data.text || '-- no text message --'}} - - + {{e.text || '-- no text message --'}} + Created: {{e.creationTime|date:'medium'}} + Data: {{e | json}}
- \ No newline at end of file + diff --git a/plugins/deviceEventsRealTime/deviceEventsRealtime.controller.js b/plugins/deviceEventsRealTime/deviceEventsRealtime.controller.js index ab6170c..1bc55ef 100644 --- a/plugins/deviceEventsRealTime/deviceEventsRealtime.controller.js +++ b/plugins/deviceEventsRealTime/deviceEventsRealtime.controller.js @@ -4,39 +4,40 @@ angular.module('myapp.deviceEventsRealTime') .controller('deviceEventsRealTimeCtrl', DeviceEventsRealTimeController); - function DeviceEventsRealTimeController($scope, $routeParams, c8yRealtime) { + function DeviceEventsRealTimeController($scope, $routeParams, c8yRealtime, c8yAlert) { var deviceId = $routeParams.deviceId; var eventsChannel = '/events/' + deviceId; + var SCOPE_ID = $scope.$id; function startRealtime() { - c8yRealtime.start($scope.$id, eventsChannel); + c8yRealtime.start(SCOPE_ID, eventsChannel); } function setUpListeners() { - c8yRealtime.addListener($scope.$id, $scope.realtimeChannel, $scope.$id + '-subscribed', subscribeListener); - c8yRealtime.addListener($scope.$id, $scope.realtimeChannel, 'CREATE', createListener); - c8yRealtime.addListener($scope.$id, $scope.realtimeChannel, 'DELETE', deleteListener); + c8yRealtime.addListener(SCOPE_ID, eventsChannel, 'CREATE', onCreateEvent); + c8yRealtime.addListener(SCOPE_ID, eventsChannel, 'DELETE', onDeleteEvent); } function stopRealtime() { - c8yRealtime.stop($scope.$id, eventsChannel); + c8yRealtime.stop(SCOPE_ID, eventsChannel); } - function subscribeListener() { - alert('works'); + function onCreateEvent(action, eventObject) { + $scope.events.push(eventObject); } - function createListener() { - alert('created'); - } + function onDeleteEvent(action, eventObjectId) { + _.remove($scope.events, function (evt) { + return evt.id === eventObjectId; + }); - function deleteListener() { - alert('created'); + c8yAlert.info('Event with id ' + eventObjectId + ' has been deleted.' ); } $scope.events = []; $scope.$on('$destroy', stopRealtime); + setUpListeners(); startRealtime(); } From 057b64f32921664c95729ae084ff7cab09895599 Mon Sep 17 00:00:00 2001 From: Luis Confraria Date: Wed, 19 Oct 2016 15:25:40 +0100 Subject: [PATCH 05/12] Update the readme --- README.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 72e1e89..f4402fb 100644 --- a/README.md +++ b/README.md @@ -27,14 +27,13 @@ Application embedded plugin that adds a new tab to device details view and displ How to run the examples ----------------------- -* clone [`cumulocity-ui-plugin-examples`](https://bitbucket.org/m2m/cumulocity-ui-plugin-examples) repository, -* run `npm install`, +* Clone or download [`cumulocity-ui-plugin-examples`](https://bitbucket.org/m2m/cumulocity-ui-plugin-examples) repository, +* Install `npm i cumulocity-tools -g` +* run `c8y install latest`, * adjust application manifest file `cumulocity.json`: * change `contextPath` to something unique for your tenant, * change `key` to something unique for platform, (?) * change `name` to something unique for platform, (?) -* run `grunt appRegister:noImports` to register the application without plugins, -* run `grunt pluginRegisterAll` to register plugins for application, -* run `grunt appRegister` again to register the application with plugins, -* run `grunt server` to start local server, -* visit *http://localhost:8000/apps/* to see the application working. +* run `c8y deploy:app myapplication` to register the application without plugins, +* run `c8y server` to start local server, +* visit *http://localhost:9000/apps/* to see the application working. From b5e6bd58579c1ecdfc5b32b200a395ce1d6f975c Mon Sep 17 00:00:00 2001 From: Luis Confraria Date: Wed, 19 Oct 2016 17:26:02 +0100 Subject: [PATCH 06/12] move the branding plugin --- plugins/{branding => myBranding}/cumulocity.json | 0 plugins/{branding => myBranding}/img/favicon.ico | Bin plugins/{branding => myBranding}/img/logo-main.svg | 0 plugins/{branding => myBranding}/img/logo.svg | 0 plugins/{branding => myBranding}/index.js | 0 plugins/{branding => myBranding}/main.less | 0 plugins/{branding => myBranding}/style/main.less | 0 .../{branding => myBranding}/variables/.DS_Store | Bin .../variables/brand-vars.less | 0 .../variables/buttons-vars.less | 0 .../{branding => myBranding}/variables/colors.less | 0 .../{branding => myBranding}/variables/index.less | 0 .../variables/progress-bars-vars.less | 0 .../variables/quick-links.less | 0 .../variables/scaffolding.less | 0 .../variables/typography-vars.less | 0 plugins/myplugin/index.js | 4 ++-- 17 files changed, 2 insertions(+), 2 deletions(-) rename plugins/{branding => myBranding}/cumulocity.json (100%) rename plugins/{branding => myBranding}/img/favicon.ico (100%) rename plugins/{branding => myBranding}/img/logo-main.svg (100%) rename plugins/{branding => myBranding}/img/logo.svg (100%) rename plugins/{branding => myBranding}/index.js (100%) rename plugins/{branding => myBranding}/main.less (100%) rename plugins/{branding => myBranding}/style/main.less (100%) rename plugins/{branding => myBranding}/variables/.DS_Store (100%) rename plugins/{branding => myBranding}/variables/brand-vars.less (100%) rename plugins/{branding => myBranding}/variables/buttons-vars.less (100%) rename plugins/{branding => myBranding}/variables/colors.less (100%) rename plugins/{branding => myBranding}/variables/index.less (100%) rename plugins/{branding => myBranding}/variables/progress-bars-vars.less (100%) rename plugins/{branding => myBranding}/variables/quick-links.less (100%) rename plugins/{branding => myBranding}/variables/scaffolding.less (100%) rename plugins/{branding => myBranding}/variables/typography-vars.less (100%) diff --git a/plugins/branding/cumulocity.json b/plugins/myBranding/cumulocity.json similarity index 100% rename from plugins/branding/cumulocity.json rename to plugins/myBranding/cumulocity.json diff --git a/plugins/branding/img/favicon.ico b/plugins/myBranding/img/favicon.ico similarity index 100% rename from plugins/branding/img/favicon.ico rename to plugins/myBranding/img/favicon.ico diff --git a/plugins/branding/img/logo-main.svg b/plugins/myBranding/img/logo-main.svg similarity index 100% rename from plugins/branding/img/logo-main.svg rename to plugins/myBranding/img/logo-main.svg diff --git a/plugins/branding/img/logo.svg b/plugins/myBranding/img/logo.svg similarity index 100% rename from plugins/branding/img/logo.svg rename to plugins/myBranding/img/logo.svg diff --git a/plugins/branding/index.js b/plugins/myBranding/index.js similarity index 100% rename from plugins/branding/index.js rename to plugins/myBranding/index.js diff --git a/plugins/branding/main.less b/plugins/myBranding/main.less similarity index 100% rename from plugins/branding/main.less rename to plugins/myBranding/main.less diff --git a/plugins/branding/style/main.less b/plugins/myBranding/style/main.less similarity index 100% rename from plugins/branding/style/main.less rename to plugins/myBranding/style/main.less diff --git a/plugins/branding/variables/.DS_Store b/plugins/myBranding/variables/.DS_Store similarity index 100% rename from plugins/branding/variables/.DS_Store rename to plugins/myBranding/variables/.DS_Store diff --git a/plugins/branding/variables/brand-vars.less b/plugins/myBranding/variables/brand-vars.less similarity index 100% rename from plugins/branding/variables/brand-vars.less rename to plugins/myBranding/variables/brand-vars.less diff --git a/plugins/branding/variables/buttons-vars.less b/plugins/myBranding/variables/buttons-vars.less similarity index 100% rename from plugins/branding/variables/buttons-vars.less rename to plugins/myBranding/variables/buttons-vars.less diff --git a/plugins/branding/variables/colors.less b/plugins/myBranding/variables/colors.less similarity index 100% rename from plugins/branding/variables/colors.less rename to plugins/myBranding/variables/colors.less diff --git a/plugins/branding/variables/index.less b/plugins/myBranding/variables/index.less similarity index 100% rename from plugins/branding/variables/index.less rename to plugins/myBranding/variables/index.less diff --git a/plugins/branding/variables/progress-bars-vars.less b/plugins/myBranding/variables/progress-bars-vars.less similarity index 100% rename from plugins/branding/variables/progress-bars-vars.less rename to plugins/myBranding/variables/progress-bars-vars.less diff --git a/plugins/branding/variables/quick-links.less b/plugins/myBranding/variables/quick-links.less similarity index 100% rename from plugins/branding/variables/quick-links.less rename to plugins/myBranding/variables/quick-links.less diff --git a/plugins/branding/variables/scaffolding.less b/plugins/myBranding/variables/scaffolding.less similarity index 100% rename from plugins/branding/variables/scaffolding.less rename to plugins/myBranding/variables/scaffolding.less diff --git a/plugins/branding/variables/typography-vars.less b/plugins/myBranding/variables/typography-vars.less similarity index 100% rename from plugins/branding/variables/typography-vars.less rename to plugins/myBranding/variables/typography-vars.less diff --git a/plugins/myplugin/index.js b/plugins/myplugin/index.js index a77e4f3..cc32dc7 100644 --- a/plugins/myplugin/index.js +++ b/plugins/myplugin/index.js @@ -5,7 +5,7 @@ //so that they can be loaded at application bootstrap angular.module('myapp.helloworld', []) .config(config) - .controller('mh_MainCtrl', MainController); + .controller('MyMainController', MainController); function config(c8yNavigatorProvider, c8yViewsProvider) { c8yNavigatorProvider.addNavigation({ @@ -18,7 +18,7 @@ c8yViewsProvider.when('/hello', { // Please use this string placeholder where you want to refer you plugin path. templateUrl: ':::PLUGIN_PATH:::/index.html', - controller: 'mh_MainCtrl' + controller: 'MyMainController' }); c8yViewsProvider.when('/', { From d5d090351d33988976dd3a5264d3f9ae22bc50bc Mon Sep 17 00:00:00 2001 From: Luis Confraria Date: Wed, 19 Oct 2016 17:13:40 +0000 Subject: [PATCH 07/12] Close branch feature/MTM-12451_webpaas_new_cli From 3f43223231a2389ec8d0582a0466a34f109329c5 Mon Sep 17 00:00:00 2001 From: Luis Confraria Date: Wed, 19 Oct 2016 18:26:08 +0100 Subject: [PATCH 08/12] adjust README --- README.md | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index f4402fb..3958861 100644 --- a/README.md +++ b/README.md @@ -6,34 +6,29 @@ Repository contains an application with sample plugins described in [Plugin Deve Plugins ------- -* myplugin - +* **myplugin** Simple hello world plugin. -* branding - +* **myBranding** Sample branding plugin which changes the icon displayed in Application Switcher menu. It can be developed further by adding more CSS/LESS rules to alter the whole appearance of the application. Base layout and styling is provided by standard Cumulocity branding plugin (`core/c8yBranding`). -* deviceContact - +* **deviceContact** Application embedded plugin that adds a new tab to device details view named *Contact* which displays a simple form for providing contact details. Contact details are stored in Managed Object’s data. - -* deviceEventsRealTime - +* **deviceEventsRealTime** Application embedded plugin that adds a new tab to device details view and displays the list of incoming device events in real-time. How to run the examples ----------------------- - +* Make sure you have node.js >6.7 installed +* Install the Cumulocity CLI globally: ```npm i cumulocity-tools -g``` * Clone or download [`cumulocity-ui-plugin-examples`](https://bitbucket.org/m2m/cumulocity-ui-plugin-examples) repository, -* Install `npm i cumulocity-tools -g` -* run `c8y install latest`, -* adjust application manifest file `cumulocity.json`: +* Run `c8y install latest`, +* Adjust application manifest file `cumulocity.json`: * change `contextPath` to something unique for your tenant, * change `key` to something unique for platform, (?) * change `name` to something unique for platform, (?) -* run `c8y deploy:app myapplication` to register the application without plugins, -* run `c8y server` to start local server, -* visit *http://localhost:9000/apps/* to see the application working. +* Create the application on your tenant: ```c8y deploy:app ``` +* Run local development server: *c8y server* +* Open in browser: *http://localhost:9000/apps/* From 3a9e95624fe9da144fce188a862e481dceaacf91 Mon Sep 17 00:00:00 2001 From: Luis Confraria Date: Thu, 20 Oct 2016 17:37:27 +0100 Subject: [PATCH 09/12] Removed tag r2.0.2 From deb861480ec5fc2f5143d0c11d74e0b758c5a593 Mon Sep 17 00:00:00 2001 From: Luis Confraria Date: Thu, 20 Oct 2016 17:37:43 +0100 Subject: [PATCH 10/12] version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 22ef60d..d9a7cf9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cumulocity-ui-plugin-examples", - "version": "1.0.0", + "version": "0.0.2", "dependencies": { "cumulocity-ui-build": "http://resources.cumulocity.com/webapps/ui/7.37.0.tar.gz" } From f816232a066dd1dd2eaeabc87ab132098993dc77 Mon Sep 17 00:00:00 2001 From: Luis Confraria Date: Sun, 23 Oct 2016 15:42:53 +0000 Subject: [PATCH 11/12] Update the description of myBranding --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3958861..3deb803 100644 --- a/README.md +++ b/README.md @@ -10,10 +10,10 @@ Plugins Simple hello world plugin. * **myBranding** -Sample branding plugin which changes the icon displayed in Application Switcher menu. It can be developed further by adding more CSS/LESS rules to alter the whole appearance of the application. Base layout and styling is provided by standard Cumulocity branding plugin (`core/c8yBranding`). +Sample branding base on the base (`core/c8yBranding`). You can inspect the less files to inspect the many less variables available for configuration. * **deviceContact** -Application embedded plugin that adds a new tab to device details view named *Contact* which displays a simple form for providing contact details. Contact details are stored in Managed Object’s data. +Application embedded plugin that adds a new tab to device details view named *Contact* which displays a simple form for providing contact details. Contact details are stored in Managed Object’s data. * **deviceEventsRealTime** Application embedded plugin that adds a new tab to device details view and displays the list of incoming device events in real-time. @@ -29,6 +29,6 @@ How to run the examples * change `contextPath` to something unique for your tenant, * change `key` to something unique for platform, (?) * change `name` to something unique for platform, (?) -* Create the application on your tenant: ```c8y deploy:app ``` +* Create the application on your tenant: ```c8y deploy:app ``` * Run local development server: *c8y server* * Open in browser: *http://localhost:9000/apps/* From f401675c489dcd7c7f73ce502b3c2435fbf8a997 Mon Sep 17 00:00:00 2001 From: Luis Confraria Date: Sun, 23 Oct 2016 15:44:02 +0000 Subject: [PATCH 12/12] Add the myBranding as the default branding --- cumulocity.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cumulocity.json b/cumulocity.json index 2b9cc4a..f2abc62 100644 --- a/cumulocity.json +++ b/cumulocity.json @@ -6,7 +6,7 @@ "resourcesUrl": "/", "type": "HOSTED", "imports": [ - "core/c8yBranding", + "myapplication/myBranding", "core/deviceList", "core/groupsHierarchy", "core/deviceDetail",