\n \n
"},{"sha":"3b3522047ac1ab3511255aa89b558d3bf846e7d4","filename":"OoRobotIonicApp/src/components/canvas-modal/canvas-modal.scss","status":"modified","additions":18,"deletions":0,"changes":18,"blob_url":"https://github.com/Orange-OpenSource/oorobot/blob/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fcomponents%2Fcanvas-modal%2Fcanvas-modal.scss","raw_url":"https://github.com/Orange-OpenSource/oorobot/raw/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fcomponents%2Fcanvas-modal%2Fcanvas-modal.scss","contents_url":"https://api.github.com/repos/Orange-OpenSource/oorobot/contents/OoRobotIonicApp%2Fsrc%2Fcomponents%2Fcanvas-modal%2Fcanvas-modal.scss?ref=22ad12a07909844a4fa49639226c569e56a05cd7","patch":"@@ -1,3 +1,21 @@\n canvas-modal {\n \n }\n+\n+.ion-canvas {\n+ background-color: #AAAAAA;\n+ padding: 10px;\n+ margin:0;\n+}\n+.scroll-content {\n+ overflow: hidden;\n+}\n+\n+.ion-canvas canvas{\n+ background-color: white;\n+ padding:0;\n+ margin:0;\n+ transform-origin: left top;\n+ //transform: scaleY(-1);\n+\n+}"},{"sha":"65296402ff731cc437b26fef12d9e07b90b30908","filename":"OoRobotIonicApp/src/components/canvas-modal/canvas-modal.ts","status":"modified","additions":18,"deletions":5,"changes":23,"blob_url":"https://github.com/Orange-OpenSource/oorobot/blob/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fcomponents%2Fcanvas-modal%2Fcanvas-modal.ts","raw_url":"https://github.com/Orange-OpenSource/oorobot/raw/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fcomponents%2Fcanvas-modal%2Fcanvas-modal.ts","contents_url":"https://api.github.com/repos/Orange-OpenSource/oorobot/contents/OoRobotIonicApp%2Fsrc%2Fcomponents%2Fcanvas-modal%2Fcanvas-modal.ts?ref=22ad12a07909844a4fa49639226c569e56a05cd7","patch":"@@ -1,13 +1,15 @@\n import { Component, ViewChild, ElementRef } from '@angular/core';\n-import {NavParams, ViewController} from \"ionic-angular\";\n-import OoRoBoT from '../../assets/oorobot';\n+import {NavParams, ViewController, Content} from \"ionic-angular\";\n+//import OoRoBoT from '../../assets/oorobot';\n \n /**\n * Generated class for the CanvasModalComponent component.\n *\n * See https://angular.io/api/core/Component for more info on Angular\n * Components.\n */\n+declare var OoRoBoT: any;\n+\n @Component({\n selector: 'canvas-modal',\n templateUrl: 'canvas-modal.html'\n@@ -18,16 +20,27 @@ export class CanvasModalComponent {\n text: string;\n \n @ViewChild('canvasDiv') canvasDiv: ElementRef;\n+ @ViewChild(Content) content: Content;\n \n constructor(params: NavParams, public viewCtrl: ViewController) {\n this.code = params.get('code');\n }\n \n- ngOnInit() {\n- console.log('Hello CanvasModalComponent Component');\n- this.oorobot = new OoRoBoT(this.canvasDiv.nativeElement, 500, 300, \"#33cc00\");\n+ ionViewDidEnter() {\n+ this.oorobot = new OoRoBoT(this.canvasDiv.nativeElement, \"#33cc00\");\n+\n this.oorobot.setCommands(this.code);\n this.oorobot.draw();\n+ const widthRatio = (this.content.contentWidth-20) / this.oorobot.width;\n+ const heightRatio = (this.content.contentHeight-20) / this.oorobot.height;\n+ let ratio=1;\n+ widthRatio
\n \n \n- Ionic App\n+ OoRoBoT App\n \n \n \n@@ -26,10 +26,13 @@\n .catch(err => console.error('Error', err));\n }\n -->\n+\n \n \n \n \n+ \n+ \n \n \n "},{"sha":"2b50e1de67b1a7eb95ff6aadfd524b9b755a667f","filename":"OoRobotIonicApp/src/pages/about/about.html","status":"modified","additions":1,"deletions":1,"changes":2,"blob_url":"https://github.com/Orange-OpenSource/oorobot/blob/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fpages%2Fabout%2Fabout.html","raw_url":"https://github.com/Orange-OpenSource/oorobot/raw/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fpages%2Fabout%2Fabout.html","contents_url":"https://api.github.com/repos/Orange-OpenSource/oorobot/contents/OoRobotIonicApp%2Fsrc%2Fpages%2Fabout%2Fabout.html?ref=22ad12a07909844a4fa49639226c569e56a05cd7","patch":"@@ -1,7 +1,7 @@\n \n \n \n- About\n+ À propos d'OoRoBoT\n \n \n "},{"sha":"adc7cd1a3d019c3dde3764bd8b6c3e7fed8f0b11","filename":"OoRobotIonicApp/src/pages/blockly/blockly.html","status":"modified","additions":12,"deletions":7,"changes":19,"blob_url":"https://github.com/Orange-OpenSource/oorobot/blob/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fpages%2Fblockly%2Fblockly.html","raw_url":"https://github.com/Orange-OpenSource/oorobot/raw/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fpages%2Fblockly%2Fblockly.html","contents_url":"https://api.github.com/repos/Orange-OpenSource/oorobot/contents/OoRobotIonicApp%2Fsrc%2Fpages%2Fblockly%2Fblockly.html?ref=22ad12a07909844a4fa49639226c569e56a05cd7","patch":"@@ -7,27 +7,32 @@\n \n \n \n- Blockly\n+ Programmation\n \n-\n+ \n+ Niveau\n+ \n+ Débutant\n+ Novice\n+ Confirmé\n+ Expert\n+ \n+ \n \n \n \n \n- \n- \n-
\n \n \n \n \n \n \n \n- \n+ \n \n \n- \n+ \n \n \n "},{"sha":"a1c6cee75629fe29ca66aed18f075fd8cd5103f2","filename":"OoRobotIonicApp/src/pages/blockly/blockly.scss","status":"modified","additions":0,"deletions":6,"changes":6,"blob_url":"https://github.com/Orange-OpenSource/oorobot/blob/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fpages%2Fblockly%2Fblockly.scss","raw_url":"https://github.com/Orange-OpenSource/oorobot/raw/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fpages%2Fblockly%2Fblockly.scss","contents_url":"https://api.github.com/repos/Orange-OpenSource/oorobot/contents/OoRobotIonicApp%2Fsrc%2Fpages%2Fblockly%2Fblockly.scss?ref=22ad12a07909844a4fa49639226c569e56a05cd7","patch":"@@ -1,9 +1,3 @@\n page-blockly {\n \n }\n-\n-.ion-canvas{\n- background-color: white;\n- border: 1px solid black;\n- transform: scaleY(-1);\n-}"},{"sha":"3385b56df69dcf9b04e4a3e051fbc43e8f431557","filename":"OoRobotIonicApp/src/pages/blockly/blockly.ts","status":"modified","additions":264,"deletions":45,"changes":309,"blob_url":"https://github.com/Orange-OpenSource/oorobot/blob/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fpages%2Fblockly%2Fblockly.ts","raw_url":"https://github.com/Orange-OpenSource/oorobot/raw/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fpages%2Fblockly%2Fblockly.ts","contents_url":"https://api.github.com/repos/Orange-OpenSource/oorobot/contents/OoRobotIonicApp%2Fsrc%2Fpages%2Fblockly%2Fblockly.ts?ref=22ad12a07909844a4fa49639226c569e56a05cd7","patch":"@@ -2,17 +2,23 @@ import { Component, ViewChild, ElementRef } from '@angular/core';\n import { ModalController, NavController, NavParams, Platform, Content } from 'ionic-angular';\n import { BluetoothProvider } from '../../providers/bluetooth/bluetooth';\n import { ScreenOrientation } from '@ionic-native/screen-orientation';\n-import OoRoBoT from './oorobot';\n+import { CanvasModalComponent } from \"../../components/canvas-modal/canvas-modal\";\n+\n //import { Dialogs } from '@ionic-native/dialogs';\n \n declare var Blockly: any;\n+declare var Webcom: any;\n+//declare var OoRoBoT: any;\n /**\n * Generated class for the BlocklyPage page.\n *\n * See https://ionicframework.com/docs/components/#navigation for more info on\n * Ionic pages and navigation.\n */\n \n+\n+\n+\n @Component({\n selector: 'page-blockly',\n templateUrl: 'blockly.html',\n@@ -22,58 +28,238 @@ export class BlocklyPage {\n code = \"\";\n blocklyDivStyle = {};\n oorobot: any;\n+ level: \"0\";\n+ toolboxes = {\n+ \"0\" : '' +\n+ '' +\n+ '' +\n+ '' +\n+ '' +\n+ '' +\n+ '' +\n+ '' +\n+ '' +\n+ '' +\n+ '' +\n+ '',\n+ \"1\" : '' +\n+ '' +\n+ '' +\n+ '' +\n+ '' +\n+ '' +\n+ '' +\n+ '' +\n+ '' +\n+ '' +\n+ '' +\n+ '' +\n+ '' +\n+ '',\n+ \"2\" : '' +\n+ '' +\n+ '' +\n+ '' +\n+ '' +\n+ '' +\n+ '' +\n+ '' +\n+ '' +\n+ '' +\n+ '' +\n+ '' +\n+ '' +\n+ '',\n+ \"3\" : ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' 10\\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' i\\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' 1\\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' 10\\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' 1\\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' 1\\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' 100\\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' 1\\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' 100\\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' 5\\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' \\n' +\n+ ' '+\n+ ''\n+ };\n+\n \n @ViewChild('blocklyDiv') blocklyDiv: ElementRef;\n @ViewChild(Content) content: Content;\n- @ViewChild('canvasDiv') canvasDiv: ElementRef;\n \n- constructor(private screenOrientation: ScreenOrientation, private blProvider: BluetoothProvider, public navCtrl: NavController, private platform: Platform) {\n+\n+ constructor(private screenOrientation: ScreenOrientation, private blProvider: BluetoothProvider, private modalCtrl: ModalController, public navCtrl: NavController, private platform: Platform) {\n+ this.level=\"0\";\n this.setBlocks(); // define Oorobot Blocks\n+\n+ //let ref = new Webcom('https://io.datasync.orange.com/base/legorange/');\n+\n }\n \n testCode() {\n-\n let code: string = Blockly.JavaScript.workspaceToCode(this.myWorkspace);\n- this.oorobot.setCommands(code);\n-\t this.oorobot.draw();\n+ code=code.replace(/^command/, '');\n+ let canvasModal = this.modalCtrl.create(CanvasModalComponent, { code: code });\n+ canvasModal.present();\n+ }\n+\n+ levelChange(val: any) {\n+ console.log('LevelChange:', this.level, val);\n+ if (\n+ ((parseInt(this.level) == 0 || parseInt(this.level) == 1) && (parseInt(val) == 1 || parseInt(val)== 0)) ||\n+ ((parseInt(this.level) == 3 || parseInt(this.level) == 2) && (parseInt(val) == 2 || parseInt(val) == 3))\n+ ) {\n+ this.myWorkspace.updateToolbox(this.toolboxes[val]);\n+ this.level=val;\n+ }else {\n+ this.myWorkspace.dispose();\n+ this.myWorkspace = null;\n+ this.level=val;\n+ this.initWorkspace();\n+ }\n \n }\n \n generateCode() {\n let generated: string = Blockly.JavaScript.workspaceToCode(this.myWorkspace);\n-\n+ generated=generated.replace(/(#\\d+)/g, '');\n console.log(generated)\n if (generated.indexOf('command') == 0 && generated.lastIndexOf('command') == 0) {\n- this.code = \"AAW20\" + generated.substring(7, generated.length) + \"G\";\n+ this.code = \"AAW10\" + generated.substring(7, generated.length) + \"G\";\n this.blProvider.serialWritePreferedDevice(this.code).then(() => {\n \n });\n }\n }\n \n- ionViewDidEnter() {\n- this.oorobot = new OoRoBoT(this.canvasDiv.nativeElement, 500, 300, \"#33cc00\");\n-\n+ initWorkspace() {\n let blocklyDiv = this.blocklyDiv.nativeElement;\n blocklyDiv.style.height = this.content.contentHeight + \"px\";\n blocklyDiv.style.width = this.platform.width() + \"px\"; // ({\"height\": 500+\"px\",\"width\": this.platform.width()+\"px\"});\n // this.blocklyDivStyle={\"height\": 500+\"px\",\"width\": this.platform.width()+\"px\"};\n+ console.log(\"initWorkspace\", this.level);\n+ this.myWorkspace = Blockly.inject(blocklyDiv,\n+ {\n+ media: 'assets/blockly/media/',\n+ toolbox: this.toolboxes[this.level],\n+ zoom:\n+ {\n+ controls: true,\n+ wheel: true,\n+ startScale: 1.0,\n+ maxScale: 3,\n+ minScale: 0.3,\n+ scaleSpeed: 1.2\n+ },\n+ grid:\n+ {\n+ spacing: 50,\n+ length: 3,\n+ colour: '#ccc',\n+ snap: true\n+ },\n+ trashcan: true\n \n- let toolbox = '' +\n- ' ' +\n- ' ' +\n- '' +\n- '' +\n- '' +\n- ' ' +\n- ' ' +\n- ' ' +\n- ' ' +\n- ' ' +\n- '' +\n- ''\n+ });\n+ Blockly.svgResize(this.myWorkspace);\n \n+ }\n \n+ ionViewDidEnter() {\n this.screenOrientation.onChange().subscribe(\n () => {\n if (this.myWorkspace) {\n@@ -87,21 +273,7 @@ export class BlocklyPage {\n );\n \n if (!this.myWorkspace) {\n- this.myWorkspace = Blockly.inject(blocklyDiv,\n- {\n- media: 'assets/blockly/media/',\n- toolbox: toolbox,\n- grid:\n- {\n- spacing: 50,\n- length: 3,\n- colour: '#ccc',\n- snap: true\n- },\n- trashcan: true\n-\n- });\n- Blockly.svgResize(this.myWorkspace);\n+ this.initWorkspace();\n }\n }\n \n@@ -126,7 +298,7 @@ export class BlocklyPage {\n Blockly.Blocks['Start'] = {\n init: function () {\n this.jsonInit({\n- \"message0\": '%1',\n+ \"message0\": '%1 x%2 y%3',\n \"args0\": [\n \n {\n@@ -135,6 +307,16 @@ export class BlocklyPage {\n \"width\": 40,\n \"height\": 40,\n \"alt\": \"*\"\n+ },\n+ {\n+ \"type\": \"field_number\",\n+ \"name\": \"WIDTH\",\n+ \"value\": \"1000\"\n+ },\n+ {\n+ \"type\": \"field_number\",\n+ \"name\": \"HEIGHT\",\n+ \"value\": \"600\"\n }\n ],\n \"message1\": \"%1\",\n@@ -243,7 +425,7 @@ export class BlocklyPage {\n \n {\n \"type\": \"field_image\",\n- \"src\": \"assets/svg/action-undo.svg\",\n+ \"src\": \"assets/svg/left.svg\",\n \"width\": 40,\n \"height\": 40,\n \"alt\": \"*\"\n@@ -271,7 +453,7 @@ export class BlocklyPage {\n \n {\n \"type\": \"field_image\",\n- \"src\": \"assets/svg/action-redo.svg\",\n+ \"src\": \"assets/svg/right.svg\",\n \"width\": 40,\n \"height\": 40,\n \"alt\": \"*\"\n@@ -366,7 +548,7 @@ export class BlocklyPage {\n \n {\n \"type\": \"field_image\",\n- \"src\": \"assets/svg/loop-circular.svg\",\n+ \"src\": \"assets/svg/repeat.svg\",\n \"width\": 40,\n \"height\": 40,\n \"alt\": \"*\"\n@@ -436,13 +618,41 @@ export class BlocklyPage {\n }\n };\n \n+ Blockly.Blocks['PenColor'] = {\n+ init: function () {\n+ this.jsonInit({\n+ \"message0\": '%1 %2',\n+ \"args0\": [\n+\n+ {\n+ \"type\": \"field_image\",\n+ \"src\": \"assets/svg/color-picker.svg\",\n+ \"width\": 40,\n+ \"height\": 40,\n+ \"alt\": \"*\"\n+ },\n+ {\n+ \"type\": \"field_colour\",\n+ \"name\": \"FIELDNAME\",\n+ \"colour\": \"#33cc00\"\n+ }\n+ ],\n+ \"colour\": moveColor,\n+ \"tooltip\": \"\",\n+ \"helpUrl\": \"http://www.w3schools.com/jsref/jsref_length_string.asp\",\n+ \"previousStatement\": null,\n+ \"nextStatement\": null,\n+ });\n+ }\n+ };\n \n \n Blockly.JavaScript['Start'] = function (block) {\n // Search the text for a substring.\n let code = Blockly.JavaScript.statementToCode(block, 'DO');\n-\n- return \"command\" + code\n+ let width= block.getFieldValue('WIDTH');\n+ let height= block.getFieldValue('HEIGHT');\n+ return \"commandw\"+width+\"h\"+height + code;\n };\n \n Blockly.JavaScript['Up'] = function (block) {\n@@ -490,6 +700,15 @@ export class BlocklyPage {\n return code;\n };\n \n+ Blockly.JavaScript['PenColor'] = function (block) {\n+ let hexColor = block.getFieldValue('FIELDNAME');\n+ let color=\"#\";\n+ for (let i=1;i{{device.name}}\n \n \n- \n- \n- \n- \n- \n- \n- \n-\n \n+ \n+ \n+ \n \n+ \n+ \n \n-\n\\ No newline at end of file\n+ \n+ \n+"},{"sha":"e81832a02e7820adfa099e5ccd980e7bbbe41558","filename":"OoRobotIonicApp/src/pages/home/home.html","status":"modified","additions":3,"deletions":3,"changes":6,"blob_url":"https://github.com/Orange-OpenSource/oorobot/blob/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fpages%2Fhome%2Fhome.html","raw_url":"https://github.com/Orange-OpenSource/oorobot/raw/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fpages%2Fhome%2Fhome.html","contents_url":"https://api.github.com/repos/Orange-OpenSource/oorobot/contents/OoRobotIonicApp%2Fsrc%2Fpages%2Fhome%2Fhome.html?ref=22ad12a07909844a4fa49639226c569e56a05cd7","patch":"@@ -1,6 +1,6 @@\n \n \n- Home\n+ Accueil\n \n \n \n@@ -10,7 +10,7 @@\n \n \n \n- \n@@ -20,7 +20,7 @@\n \n \n \n- \n+ \n \n \n "},{"sha":"fc59f6b388c9d26c82f7197837b4d111ec62a26e","filename":"OoRobotIonicApp/src/pages/share/share.html","status":"modified","additions":1,"deletions":7,"changes":8,"blob_url":"https://github.com/Orange-OpenSource/oorobot/blob/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fpages%2Fshare%2Fshare.html","raw_url":"https://github.com/Orange-OpenSource/oorobot/raw/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fpages%2Fshare%2Fshare.html","contents_url":"https://api.github.com/repos/Orange-OpenSource/oorobot/contents/OoRobotIonicApp%2Fsrc%2Fpages%2Fshare%2Fshare.html?ref=22ad12a07909844a4fa49639226c569e56a05cd7","patch":"@@ -1,13 +1,7 @@\n-\n \n \n \n- share\n+ Partage\n \n \n "},{"sha":"92c3ef64535b56d5600e730bb77ab0a4b51caddf","filename":"OoRobotIonicApp/src/pages/share/share.ts","status":"modified","additions":4,"deletions":13,"changes":17,"blob_url":"https://github.com/Orange-OpenSource/oorobot/blob/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fpages%2Fshare%2Fshare.ts","raw_url":"https://github.com/Orange-OpenSource/oorobot/raw/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fpages%2Fshare%2Fshare.ts","contents_url":"https://api.github.com/repos/Orange-OpenSource/oorobot/contents/OoRobotIonicApp%2Fsrc%2Fpages%2Fshare%2Fshare.ts?ref=22ad12a07909844a4fa49639226c569e56a05cd7","patch":"@@ -1,26 +1,17 @@\n-import { Component } from '@angular/core';\n-import { IonicPage, NavController, NavParams } from 'ionic-angular';\n+import { Component, ViewChild, ElementRef } from '@angular/core';\n+import { LoadingController, NavController, NavParams } from 'ionic-angular';\n import { BluetoothProvider } from '../../providers/bluetooth/bluetooth';\n \n-/**\n- * Generated class for the SharePage page.\n- *\n- * See https://ionicframework.com/docs/components/#navigation for more info on\n- * Ionic pages and navigation.\n- */\n \n-@IonicPage()\n @Component({\n selector: 'page-share',\n templateUrl: 'share.html',\n })\n export class SharePage {\n \n- constructor(public navCtrl: NavController, public navParams: NavParams) {\n- }\n+ constructor(public loadingCtrl: LoadingController, public navCtrl: NavController, public navParams: NavParams, private blprovide: BluetoothProvider) {\n \n- ionViewDidLoad() {\n- console.log('ionViewDidLoad SharePage');\n }\n \n+\n }"},{"sha":"76435bf39fe4ce9197de15fdc10f9f702f6725c6","filename":"OoRobotIonicApp/src/pages/tabs/tabs.html","status":"modified","additions":4,"deletions":3,"changes":7,"blob_url":"https://github.com/Orange-OpenSource/oorobot/blob/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fpages%2Ftabs%2Ftabs.html","raw_url":"https://github.com/Orange-OpenSource/oorobot/raw/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fpages%2Ftabs%2Ftabs.html","contents_url":"https://api.github.com/repos/Orange-OpenSource/oorobot/contents/OoRobotIonicApp%2Fsrc%2Fpages%2Ftabs%2Ftabs.html?ref=22ad12a07909844a4fa49639226c569e56a05cd7","patch":"@@ -1,6 +1,7 @@\n \n- \n- \n- \n+ \n+ \n+ \n+ \n \n "},{"sha":"bdbecdd6739136333d471efad817bcdc3d4b6d18","filename":"OoRobotIonicApp/src/pages/tabs/tabs.ts","status":"modified","additions":2,"deletions":0,"changes":2,"blob_url":"https://github.com/Orange-OpenSource/oorobot/blob/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fpages%2Ftabs%2Ftabs.ts","raw_url":"https://github.com/Orange-OpenSource/oorobot/raw/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fpages%2Ftabs%2Ftabs.ts","contents_url":"https://api.github.com/repos/Orange-OpenSource/oorobot/contents/OoRobotIonicApp%2Fsrc%2Fpages%2Ftabs%2Ftabs.ts?ref=22ad12a07909844a4fa49639226c569e56a05cd7","patch":"@@ -5,6 +5,7 @@ import { AboutPage } from '../about/about';\n import { ContactPage } from '../contact/contact';\n import { HomePage } from '../home/home';\n import { BlocklyPage } from '../blockly/blockly';\n+import { SharePage } from \"../share/share\";\n \n @Component({\n templateUrl: 'tabs.html'\n@@ -15,6 +16,7 @@ export class TabsPage {\n tab2Root = AboutPage;\n tab3Root = BluetoothPage;\n tab4Root = BlocklyPage;\n+ tab5Root = SharePage;\n constructor() {\n \n }"},{"sha":"82b34e096534473b8b42b438ab7734ef260a0734","filename":"OoRobotIonicApp/src/providers/bluetooth/bluetooth.ts","status":"modified","additions":8,"deletions":7,"changes":15,"blob_url":"https://github.com/Orange-OpenSource/oorobot/blob/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fproviders%2Fbluetooth%2Fbluetooth.ts","raw_url":"https://github.com/Orange-OpenSource/oorobot/raw/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fproviders%2Fbluetooth%2Fbluetooth.ts","contents_url":"https://api.github.com/repos/Orange-OpenSource/oorobot/contents/OoRobotIonicApp%2Fsrc%2Fproviders%2Fbluetooth%2Fbluetooth.ts?ref=22ad12a07909844a4fa49639226c569e56a05cd7","patch":"@@ -3,7 +3,9 @@ import { Platform } from 'ionic-angular';\n import { Injectable } from '@angular/core';\n import { BluetoothSerial } from '@ionic-native/bluetooth-serial';\n import { Storage } from '@ionic/storage';\n-import { Observable } from 'rxjs/Observable';\n+import { ShareProvider } from '../share/share';\n+\n+//import { Observable } from 'rxjs/Observable';\n /*\n Generated class for the BluetoothProvider provider.\n \n@@ -15,11 +17,8 @@ import { Observable } from 'rxjs/Observable';\n @Injectable()\n export class BluetoothProvider {\n \n- constructor(private bluetoothSerial: BluetoothSerial, private storage: Storage, private platform: Platform) {\n+ constructor(private bluetoothSerial: BluetoothSerial, private shareProvider: ShareProvider, private storage: Storage, private platform: Platform) {\n console.log('Hello BluetoothProvider Provider');\n-\n-\n-\n }\n public btledevices;\n \n@@ -37,6 +36,7 @@ export class BluetoothProvider {\n }\n \n disconnect() {\n+ this.shareProvider.disconnect();\n return this.bluetoothSerial.disconnect();\n }\n \n@@ -56,7 +56,6 @@ export class BluetoothProvider {\n }\n else {\n this.getPreferedDevice().then((device) => {\n-\n this.connectDevice(device).subscribe((data) => {\n this.bluetoothSerial.write(command).then(() => {\n resolve();\n@@ -79,7 +78,9 @@ export class BluetoothProvider {\n }\n \n connectDevice(device) {\n- return this.bluetoothSerial.connect(device.id);\n+ const deviceId=device.id;\n+ //this.shareProvider.shareRobot(deviceId);\n+ return this.bluetoothSerial.connect(deviceId);\n }\n \n }"},{"sha":"d6909354aa2ea751324db9e86d12054e056ecb33","filename":"OoRobotIonicApp/src/providers/share/share.ts","status":"modified","additions":3,"deletions":3,"changes":6,"blob_url":"https://github.com/Orange-OpenSource/oorobot/blob/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fproviders%2Fshare%2Fshare.ts","raw_url":"https://github.com/Orange-OpenSource/oorobot/raw/22ad12a07909844a4fa49639226c569e56a05cd7/OoRobotIonicApp%2Fsrc%2Fproviders%2Fshare%2Fshare.ts","contents_url":"https://api.github.com/repos/Orange-OpenSource/oorobot/contents/OoRobotIonicApp%2Fsrc%2Fproviders%2Fshare%2Fshare.ts?ref=22ad12a07909844a4fa49639226c569e56a05cd7","patch":"@@ -1,4 +1,3 @@\n-import { HttpClient } from '@angular/common/http';\n import { Injectable } from '@angular/core';\n \n declare var Webcom: any;\n@@ -13,20 +12,21 @@ declare var Webcom: any;\n export class ShareProvider {\n ref: any\n \n- constructor(public http: HttpClient) {\n+ constructor() {\n console.log('Hello ShareProvider Provider');\n this.ref = new Webcom('https://io.datasync.orange.com/base/oorobot/');\n \n this.disconnect();\n }\n \n shareRobot(name) {\n+ this.connect();\n this.ref.child(\"robots\").child(name).child(\"state\").child('online').set(true);\n this.ref.child(\"robots\").child(name).child(\"state\").onDisconnect().child('online').set(false);\n this.ref.child(\"robots\").child(name).child(\"programs\").on(\"child_added\", (snapshot) => {\n console.log(snapshot.val());\n-\n });\n+ return true;\n }\n \n connect() {"},{"sha":"120b09969bd29316f665b497917427c9cfe5bb56","filename":"apk/oorobot.apk","status":"modified","additions":0,"deletions":0,"changes":0,"blob_url":"https://github.com/Orange-OpenSource/oorobot/blob/22ad12a07909844a4fa49639226c569e56a05cd7/apk%2Foorobot.apk","raw_url":"https://github.com/Orange-OpenSource/oorobot/raw/22ad12a07909844a4fa49639226c569e56a05cd7/apk%2Foorobot.apk","contents_url":"https://api.github.com/repos/Orange-OpenSource/oorobot/contents/apk%2Foorobot.apk?ref=22ad12a07909844a4fa49639226c569e56a05cd7"},{"sha":"cfd8196ca2112a89fe3c4888c2c97614c47cc534","filename":"arduino/init-bluetooth/init-bluetooth.ino","status":"modified","additions":1,"deletions":1,"changes":2,"blob_url":"https://github.com/Orange-OpenSource/oorobot/blob/22ad12a07909844a4fa49639226c569e56a05cd7/arduino%2Finit-bluetooth%2Finit-bluetooth.ino","raw_url":"https://github.com/Orange-OpenSource/oorobot/raw/22ad12a07909844a4fa49639226c569e56a05cd7/arduino%2Finit-bluetooth%2Finit-bluetooth.ino","contents_url":"https://api.github.com/repos/Orange-OpenSource/oorobot/contents/arduino%2Finit-bluetooth%2Finit-bluetooth.ino?ref=22ad12a07909844a4fa49639226c569e56a05cd7","patch":"@@ -1,4 +1,4 @@\n-//**********************************************\n+ //**********************************************\n // bluetooth HC06 Module configuraiton\n // based on http://nicolasz68.blogspot.fr/2012/09/module-bluetooth-jy-mcu-v104-pour.html\n //"},{"sha":"f987a0c7f5f3ed0e2d55a2bb2f09ca261c465633","filename":"arduino/oorobot/oorobot.ino","status":"modified","additions":8,"deletions":2,"changes":10,"blob_url":"https://github.com/Orange-OpenSource/oorobot/blob/22ad12a07909844a4fa49639226c569e56a05cd7/arduino%2Foorobot%2Foorobot.ino","raw_url":"https://github.com/Orange-OpenSource/oorobot/raw/22ad12a07909844a4fa49639226c569e56a05cd7/arduino%2Foorobot%2Foorobot.ino","contents_url":"https://api.github.com/repos/Orange-OpenSource/oorobot/contents/arduino%2Foorobot%2Foorobot.ino?ref=22ad12a07909844a4fa49639226c569e56a05cd7","patch":"@@ -1,6 +1,10 @@\n /*\n OoRoBoT code\n \n+ Get the following libraries (using the Arduino IDE library manager)\n+ - **AccelStepper** v1.57.1 by Mike McCauley\n+ - **LiquidCrystal I2C** v1.1.2 by Frank de Brabander\n+ \n */\n #include \n #include \n@@ -11,7 +15,7 @@\n #include \"buttons.h\"\n \n \n-#define OOROBOT_VERSION \"1.1.0\"\n+#define OOROBOT_VERSION \"1.1.1\"\n \n #define SCREEN_TIMEOUT 25\n \n@@ -80,7 +84,7 @@ char buttonsMap[] = {\n '-', 0, 'S', 'A', 0, '+', 0, 0, 0, 0, 0, 0\n };\n \n-Params params = {140, 1220, 140};\n+Params params = {140, 1430, 100};\n int previousMenu = CTRL_MENU;\n int selectedMenu = START_MENU;\n char cmd[MAX_COMMANDS + 1] = {};\n@@ -156,6 +160,7 @@ void loop() {\n } else {\n #ifdef HAVE_BLUETOOTH\n while (BTSerie.available()) {\n+ selectedMenu = CTRL_MENU;\n button = BTSerie.read();\n //Serial.println(button);\n if (button != 0) {\n@@ -164,6 +169,7 @@ void loop() {\n }\n #endif\n while (Serial.available()) {\n+ selectedMenu = CTRL_MENU;\n button = Serial.read();\n //Serial.println(button);\n if (button != 0) {"},{"sha":"8e25138578622738d40f07410be29528f9a3b404","filename":"html/blocks/assets/svg/left.svg","status":"added","additions":56,"deletions":0,"changes":56,"blob_url":"https://github.com/Orange-OpenSource/oorobot/blob/22ad12a07909844a4fa49639226c569e56a05cd7/html%2Fblocks%2Fassets%2Fsvg%2Fleft.svg","raw_url":"https://github.com/Orange-OpenSource/oorobot/raw/22ad12a07909844a4fa49639226c569e56a05cd7/html%2Fblocks%2Fassets%2Fsvg%2Fleft.svg","contents_url":"https://api.github.com/repos/Orange-OpenSource/oorobot/contents/html%2Fblocks%2Fassets%2Fsvg%2Fleft.svg?ref=22ad12a07909844a4fa49639226c569e56a05cd7","patch":"@@ -0,0 +1,56 @@\n+\n+"},{"sha":"c9d5a4fdc2f474ca1ba267ef9b8bcb94b39a5d66","filename":"html/blocks/assets/svg/repeat.svg","status":"added","additions":49,"deletions":0,"changes":49,"blob_url":"https://github.com/Orange-OpenSource/oorobot/blob/22ad12a07909844a4fa49639226c569e56a05cd7/html%2Fblocks%2Fassets%2Fsvg%2Frepeat.svg","raw_url":"https://github.com/Orange-OpenSource/oorobot/raw/22ad12a07909844a4fa49639226c569e56a05cd7/html%2Fblocks%2Fassets%2Fsvg%2Frepeat.svg","contents_url":"https://api.github.com/repos/Orange-OpenSource/oorobot/contents/html%2Fblocks%2Fassets%2Fsvg%2Frepeat.svg?ref=22ad12a07909844a4fa49639226c569e56a05cd7","patch":"@@ -0,0 +1,49 @@\n+\n+\n+\n+\n\\ No newline at end of file"},{"sha":"91ec6f25d74efe00222026d7a41d938f9e6ab4be","filename":"html/blocks/assets/svg/right.svg","status":"added","additions":56,"deletions":0,"changes":56,"blob_url":"https://github.com/Orange-OpenSource/oorobot/blob/22ad12a07909844a4fa49639226c569e56a05cd7/html%2Fblocks%2Fassets%2Fsvg%2Fright.svg","raw_url":"https://github.com/Orange-OpenSource/oorobot/raw/22ad12a07909844a4fa49639226c569e56a05cd7/html%2Fblocks%2Fassets%2Fsvg%2Fright.svg","contents_url":"https://api.github.com/repos/Orange-OpenSource/oorobot/contents/html%2Fblocks%2Fassets%2Fsvg%2Fright.svg?ref=22ad12a07909844a4fa49639226c569e56a05cd7","patch":"@@ -0,0 +1,56 @@\n+\n+"},{"sha":"26adc6c9a5aa3387e9bc5b649c29cc4f9307a4ba","filename":"html/blocks/index.html","status":"modified","additions":5,"deletions":7,"changes":12,"blob_url":"https://github.com/Orange-OpenSource/oorobot/blob/22ad12a07909844a4fa49639226c569e56a05cd7/html%2Fblocks%2Findex.html","raw_url":"https://github.com/Orange-OpenSource/oorobot/raw/22ad12a07909844a4fa49639226c569e56a05cd7/html%2Fblocks%2Findex.html","contents_url":"https://api.github.com/repos/Orange-OpenSource/oorobot/contents/html%2Fblocks%2Findex.html?ref=22ad12a07909844a4fa49639226c569e56a05cd7","patch":"@@ -91,7 +91,7 @@\n \t\t \n \t\t BlOoRoBoT\n \t\t \n-\t\t\n+\t\n \t\t\n \t\t\n \t\t