diff --git a/README.md b/README.md index a37f647..5a796ff 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,86 @@ # RubikHelperUI PanelUI extension for RubikHelper page + +## Table of contents + +- [Overview](#overview) +- [Scramble Panel](#scramble-panel) +- [Solve Panel](#solve-panel) +- [Explain Panel](#explain-panel) +- [Highlight Panel](#highlight-panel) +- [Setup Panel](#setup-panel) + +## Overview + +## Scramble Panel +![Scramble Panel](images/ui/panel-scramble.png) + +- The user can use this tab to scramble the cube using the keyboard or the interface buttons +- It's case insensitive, so typing `f` or `F` will get the same result. +- The user can also use parenthesis for grouping moves and then close the group with `)'` to make it negative, `)i` to invert it or `)m` to mirror it (inverse rotation while swapping `L` with `R` and viceversa). + - eg: +`(FU'R)` = `FU'R` +`(FU'R)'` = `F'UR'` +`(FU'R)i` = `R'UF'` +`(FU'R)m` = `F'UL'` +`((FU'R)')m` = `FU'L` +`((FU'R)i)m` = `LU'F` +`(((FU'R)')i)m` = `L'UF'` +- Also use parenthesis to execute N times that group (eg. `(M'U)4 (MU)4`). + - eg: +`(FU'R)2` = `FU'RFU'R` +`((FU'R)i)3` = `R'UF'R'UF'R'UF'` +- Use square brackets to write down a piece and obtaining the setup pattern (or the full pattern for pieces that don't have the setup/unsetup, like `DRB`). +- Every character written or every button pressed, the final "moves" sequence will be updated (expanding pieces Setup and other patterns) showing only simple rotations (for faces/slices/cube) with `+` for clockwise and `-` for counterclockwise rotations. +- Click on **execute** button to see the cube scrambled with the given sequence. +- Using the GUI the user can write the sequence using provided buttons. +- To write a piece: + - click on **new** under "piece" + - click on face buttons (two or three of them) in order to name the piece + - note that each face button clicked disables all other face buttons that cannot be used, avoiding typo errors + - click on the resulting piece button when complete in order to add it to the sequence +- To manage groups: + - click on **(** button under "group" + - compose the sequence + - close the group clicking on any `)` button (see 3rd point of this list) + +Note: to write a negative rotation (counterclockwise) use `i`, `'`, or `-` (eg. `F'` , `Fi` , `F-` are the same, just like `F` and `F+`). + +some examples: +- scramble: `[dr] d'b (lu)' u2 (r'bu)4 [ulb]` +- scramble: `( (R U [BR])m )i F [LB] (F' [BL])'` +- `UF`: `(U2 M')2` +- `FR`: `URU'` +- `BR`: `([FR])i` +- `RU`: `x' ([BR])'` +so, the full `RU` pattern is: `x' ([BR])' M2 (x' ([BR])')i` +or, more easily: `[RU] M2 ([RU])i` + +## Solve Panel +![Solve Panel](images/ui/panel-solve.png) + +- Here the user can see the button **get pattern** which evaluate the scrambled cube and get the **M2R2 sequence** to solve it. +- Click on the **execute** button in this tab to watch it solve the cube! +- The **replay** feature currently allows the user to re-scramble the cube in order to execute the solve process once again. +- This tab accepts only pieces or faces comma separated. + - eg. `RF,UR,LD,R-,B2,FUR,BLD` +- For each piece written here, it expands its pattern as full (ie. including `Setup, M2/R2, Unsetup`) + +## Explain Panel +![Explain Panel](images/ui/panel-explain.png) + +## Highlight Panel +![Highlight Panel](images/ui/panel-highlight.png) + +This tab has teaching purposes only: it helps the user to identify pieces of the cube. + +## Setup Panel +![Setup Panel](images/ui/panel-setup.png) + +- Here the user can click on **edit cube** to setup the cube like a real one, so the tool can help the user to solve his own cube. + - while "edit cube" is active, click on a cube's piece to show its position name and its current stickers + - click on face buttons under "faces" to compose the piece name (see 9th point of [Scramble Panel](#scramble-panel)) + - note: only the same type of piece can be set (if edit an edge it will end editing after the second face clicked, for corners after the third) +- Click on **show back faces** to hide `F`,`R`,`U` faces and see only `L`,`B`,`D` back-faces (from the inside). +- Click on **get image** to save the current cube state as an image (use the browser's "save as.." command). +- The user can also choose the color for each cube's face to match the real cube (it could have colors not compliant with the original Rubik). diff --git a/bower.json b/bower.json index 903a27c..f90e150 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "RubikHelperUI", - "version": "0.1.0", + "version": "0.1.1", "homepage": "https://github.com/FabioDiMonte/RubikHelperUI", "authors": [ "Fabio Di Monte " diff --git a/images/ui/panel-explain.png b/images/ui/panel-explain.png new file mode 100644 index 0000000..c3297a8 Binary files /dev/null and b/images/ui/panel-explain.png differ diff --git a/images/ui/panel-highlight.png b/images/ui/panel-highlight.png new file mode 100644 index 0000000..9e9ad4e Binary files /dev/null and b/images/ui/panel-highlight.png differ diff --git a/images/ui/panel-scramble.png b/images/ui/panel-scramble.png new file mode 100644 index 0000000..7e375fb Binary files /dev/null and b/images/ui/panel-scramble.png differ diff --git a/images/ui/panel-setup.png b/images/ui/panel-setup.png new file mode 100644 index 0000000..747ffb4 Binary files /dev/null and b/images/ui/panel-setup.png differ diff --git a/images/ui/panel-solve.png b/images/ui/panel-solve.png new file mode 100644 index 0000000..e2a5b15 Binary files /dev/null and b/images/ui/panel-solve.png differ diff --git a/images/ui/small/panel-explain.png b/images/ui/small/panel-explain.png new file mode 100644 index 0000000..330737a Binary files /dev/null and b/images/ui/small/panel-explain.png differ diff --git a/images/ui/small/panel-highlight.png b/images/ui/small/panel-highlight.png new file mode 100644 index 0000000..6a2f90f Binary files /dev/null and b/images/ui/small/panel-highlight.png differ diff --git a/images/ui/small/panel-scramble.png b/images/ui/small/panel-scramble.png new file mode 100644 index 0000000..0885667 Binary files /dev/null and b/images/ui/small/panel-scramble.png differ diff --git a/images/ui/small/panel-setup.png b/images/ui/small/panel-setup.png new file mode 100644 index 0000000..d54efa6 Binary files /dev/null and b/images/ui/small/panel-setup.png differ diff --git a/images/ui/small/panel-solve.png b/images/ui/small/panel-solve.png new file mode 100644 index 0000000..b2d73cf Binary files /dev/null and b/images/ui/small/panel-solve.png differ diff --git a/package.json b/package.json index 0be493c..c8af8ca 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "rubikhelperui", "title": "RubikHelperUI", "description": "PanelUI extension for RubikHelper page", - "version": "0.1.0", + "version": "0.1.1", "author": { "name": "FabioDiMonte" }, diff --git a/public/0.1.1/rubikhelperui-0.1.1.min.js b/public/0.1.1/rubikhelperui-0.1.1.min.js new file mode 100644 index 0000000..8c0c249 --- /dev/null +++ b/public/0.1.1/rubikhelperui-0.1.1.min.js @@ -0,0 +1,3 @@ +/*! RubikHelperUI Package - v0.1.1 - 2015-05-04 */ +var RubikHelperUI=function(a){var b=function(){var a=function(){function a(a,b){this.name=a,this.title=b||a,this.parent=null,this.mainUI=null,this.enabled=!0,this.elements=[],this.elementsMap={},this.listeners={},this.$el=this.getElement(),this.initEvents()}return a.prototype={getElement:function(){return null},initEvents:function(){},setValue:function(){},getValue:function(){},addTo:function(a){this.parent=a,this.mainUI=a.mainUI||a,this.updateChildrenHierarchy()},addChild:function(a){this.elements.push(a);var b;if(a.components)for(var c=0;c").attr("id","ic-"+this.name).addClass("ic-"+this.type).append(a("

").text(this.title))},c}(jQuery,a),c=function(a){function b(b,c){a.call(this,b,c,"panel"),this.addComponents()}return b.prototype=Object.create(a.prototype),b.prototype.addComponents=function(){},b}(b),d=function(a){function b(b,c,d){a.call(this,b+"-"+c,d,"panel-component")}return b.prototype=Object.create(a.prototype),b}(b),e=function(a,b){function c(a){this.components=a,b.call(this,"group")}return c.prototype=Object.create(b.prototype),c.prototype.getElement=function(){for(var b=a("

").addClass("block"),c=0;c").append("