Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
00e0c8f
rough beginnings of reworked block code
mrjacobbloom Apr 11, 2017
b97017c
add Attr constructor; transition from getOffset() to block.left() (et…
mrjacobbloom Apr 12, 2017
83a3cb6
fix bug where sometimes blocks didn’t symbolically attach to parent
mrjacobbloom Apr 12, 2017
0bfd3fa
bugfix: now you can add block to beginning of c-stack
mrjacobbloom Apr 12, 2017
60aefcf
move some event listeners around, resolve #242 in the process
mrjacobbloom Apr 12, 2017
60ca20a
fix duplicate functionality
mrjacobbloom Apr 12, 2017
6d1abd3
disable context menu on “body” element
mrjacobbloom Apr 12, 2017
a119253
resolve error when rendering blank attributes
mrjacobbloom Apr 12, 2017
6a18aa1
start on file import/export
mrjacobbloom Apr 12, 2017
0b41c56
bug fixes related to file import
mrjacobbloom Apr 12, 2017
8ea1828
I got single-file export to work :D
mrjacobbloom Apr 13, 2017
d1234f5
start fixing multiple html files
mrjacobbloom Apr 13, 2017
5e9ee30
fixed bugs in switching between multiple html files
mrjacobbloom Apr 13, 2017
00ce0e0
add CSS blocks and export
mrjacobbloom Apr 13, 2017
d316201
finish file import
mrjacobbloom Apr 13, 2017
b274b75
make change described by @iamunknown2 (close #252)
mrjacobbloom Apr 13, 2017
3f14fd8
fix bug where imported files weren’t editable
mrjacobbloom Apr 13, 2017
60e2d75
fix items sometimes reversing in order on drop (thanks @iamunknown2 f…
mrjacobbloom Apr 13, 2017
45e2cdb
clean up coords code
mrjacobbloom Apr 13, 2017
e9c62e9
fix tutorial 2
mrjacobbloom Apr 13, 2017
e3d3962
Merge branch 'gh-pages' of github.com:ElementalCode/elemental into re…
mrjacobbloom Apr 13, 2017
1d7225c
figured out the issues with CSS files
mrjacobbloom Apr 13, 2017
c02f4a4
limit context menu to blocks in script area
mrjacobbloom Apr 14, 2017
d20fb48
fix issues with loose blocks not being JSON’d correctly
mrjacobbloom Apr 14, 2017
e89a78d
rename a whole bunch of things
mrjacobbloom Apr 14, 2017
782dd42
add default blocks to new CSS files
mrjacobbloom Apr 14, 2017
7e2bc49
refactor dropdown code and add to rule block
mrjacobbloom Apr 14, 2017
8d1effb
rename Attr to BlockAttribute to match other constructors’ snooty names
mrjacobbloom Apr 14, 2017
64e095f
Merge branch 'gh-pages' of github.com:ElementalCode/elemental into re…
mrjacobbloom Apr 14, 2017
7594037
remove old files
mrjacobbloom Apr 14, 2017
80af4f2
move function blocksToJSON to block2json.js for obvious reasons
mrjacobbloom Apr 14, 2017
68dd70f
remove default scriptingArea contents since they’re always generated …
mrjacobbloom Apr 14, 2017
52bf2e2
bugfix: default blocks in new CSS files were marked inPalette
mrjacobbloom Apr 14, 2017
e5da901
clean up blocks2json a lil
mrjacobbloom Apr 14, 2017
0427ae8
update zebra to use the new system
mrjacobbloom Apr 16, 2017
3177207
tweaks
mrjacobbloom Apr 16, 2017
405eaff
switch from strings for block types to enum
mrjacobbloom Apr 16, 2017
2f25591
bug fix with enum
mrjacobbloom Apr 17, 2017
48ba312
remove a lot of old code and random nits
mrjacobbloom Apr 17, 2017
a22cf9c
remove duplicate code
mrjacobbloom Apr 17, 2017
27c61d9
element/block highlighting mockup
mrjacobbloom Apr 17, 2017
1f27da9
slightly simplify file import
mrjacobbloom Apr 17, 2017
cdafc90
a naive attempt to clog potential memory leaks
mrjacobbloom Apr 18, 2017
cf3550f
more attempt to plug memory leaks, p.s. this is miserable and I have …
mrjacobbloom Apr 18, 2017
645f8e0
tpyo
mrjacobbloom Apr 18, 2017
ec872a8
delEt aLL th1NGS
mrjacobbloom Apr 18, 2017
769003a
everything is garbage
mrjacobbloom Apr 18, 2017
fe6d86b
bugfix that I don’t understand why it’s necessary but ok
mrjacobbloom Apr 18, 2017
a4369a6
Merge branch 'rework-blocks' of github.com:ElementalCode/elemental in…
mrjacobbloom Apr 22, 2017
ba131de
Merge branch 'gh-pages' of github.com:ElementalCode/elemental into el…
mrjacobbloom May 3, 2017
44e3941
garbage collection; per request:
mrjacobbloom May 3, 2017
5fe6909
make highlighting toggleable, more garbage collection stuff
mrjacobbloom May 3, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,12 @@
<li id="saveButton">Find</li>
</ul>
</div>
<div class="menu" id="viewMenu">
<span class="menuTitle">View</span>
<ul class="menuContents">
<li id="toggleHighlight">Highlight Off</li>
</ul>
</div>
<div class="menu" id="shareMenu">
<span class="menuTitle">Share</span>
<ul class="menuContents">
Expand Down Expand Up @@ -197,5 +203,6 @@
<script src='resources/js/blocks.js'></script>
<script src='resources/js/block2json.js'></script>
<script src='resources/js/fileManagement.js'></script>
<script src='resources/js/menu.js'></script>
</body>
</html>
16 changes: 16 additions & 0 deletions resources/css/blocks.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

19 changes: 18 additions & 1 deletion resources/css/blocks.scss
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,23 @@ body {
background:#F45D5D;
}

.highlightBlock {
position: relative;
z-index: 1;
}
.highlightBlock::after {
content: "";
display: block;
background: gold;
border-radius: 5px;
position: absolute;
top: -3px;
right: -3px;
bottom: -3px;
left: -3px;
z-index: -1;
}

.remove-attr {
display:inline-block;
width:0px;
Expand Down Expand Up @@ -197,4 +214,4 @@ body {
color:black;
cursor:text;
}
}
}
18 changes: 18 additions & 0 deletions resources/css/style.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

29 changes: 23 additions & 6 deletions resources/js/block2json.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,22 +23,39 @@ function blockToCSS(blockList) {
return css;
}

function detachHtmlElem(block) {
// attempt at garbage collection
if(block.htmlElem) {
block.htmlElem.removeEventListener('mouseover', block.block_mouse_over);
block.htmlElem.removeEventListener('mouseout', block.block_mouse_out);
if(block.htmlElem.parentNode) block.htmlElem.parentNode.removeChild(block.htmlElem);
block.htmlElem = null;
}
}

function blockToHTML(block) {
var out = null;
detachHtmlElem(block)

if(block.type !== BLOCK_TYPES.stack && block.type !== BLOCK_TYPES.cblock) {
return null;
out = null;
} else if(block.name == 'text') {
return document.createTextNode(block.inputs[0].value);
out = document.createTextNode(block.inputs[0].value);
} else {
var element = document.createElement(block.name);
out = document.createElement(block.name);
for(let attr of block.attrs) {
if(attr.name.trim() && attr.value.trim()) element.setAttribute(attr.name, attr.value);
if(attr.name.trim() && attr.value.trim()) out.setAttribute(attr.name, attr.value);
}
for(let child of block.children) {
let parsedChild = blockToHTML(child);
if(parsedChild) element.appendChild(parsedChild);
if(parsedChild) out.appendChild(parsedChild);
}
return element;
block.htmlElem = out;

out.addEventListener('mouseover', block.block_mouse_over);
out.addEventListener('mouseout', block.block_mouse_out);
}
return out;
}

function blocksToJSON(fileName) {
Expand Down
23 changes: 21 additions & 2 deletions resources/js/blocks.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
var selected = null, // Object of the element to be moved
mousePos = {x: 0, y: 0}, // Stores x & y coordinates of the mouse pointer
dragOffset = {x: 0, y: 0}, // Stores offset between dragged element and mouse
highlight = true;
DEFAULT_TEXT = 'breadfish',
SCRIPTING_AREA = $('.scriptingArea')[0];
var blocksDatabase, // all blocks by ID. Not an array in case we decide to use md5's or something later
Expand Down Expand Up @@ -67,6 +68,8 @@ function BlockWrapper(inPalette) {
|| block.type == BLOCK_TYPES.cblock) {
if(block.block_context_menu) block.elem.removeEventListener('contextmenu', block.block_context_menu);
if(block.block_mouse_down) block.elem.removeEventListener('mousedown', block.block_mouse_down);
if(block.block_mouse_over) block.elem.removeEventListener('mouseover', block.block_mouse_over);
if(block.block_mouse_out) block.elem.removeEventListener('mouseout', block.block_mouse_out);
if(block.block_mouse_up) block.elem.removeEventListener('mouseup', block.block_mouse_up);
if(block.add_quicktext) block.quickText.removeEventListener('click', block.add_quicktext);
if(block.add_attr_ev) block.addAttr.removeEventListener('click', block.add_attr_ev);
Expand Down Expand Up @@ -278,8 +281,8 @@ function Block(type, name, opts) {
this.addAttr = document.createElement('span');
this.addAttr.classList.add('add-attr');
this.attrControls.appendChild(this.addAttr);
this.addAttr.addEventListener('click', block.add_attr_ev = function(e, name, value) {
var attr = new BlockAttribute(name, value);
this.addAttr.addEventListener('click', block.add_attr_ev = function(e) {
var attr = new BlockAttribute();
block.header.insertBefore(attr.elem, block.attrControls);
block.attrs.push(attr);
});
Expand Down Expand Up @@ -347,7 +350,23 @@ function Block(type, name, opts) {
return false;
}

this.elem.addEventListener('mouseover', block.block_mouse_over = function(ev) {
if(highlight && block.htmlElem) {
ev.stopPropagation();
block.elem.classList.add('highlightBlock');
block.htmlElem.style.outline = '3px solid gold';
}
});
this.elem.addEventListener('mouseout', block.block_mouse_out = function(ev) {
block.elem.classList.remove('highlightBlock');
if(block.htmlElem) {
block.htmlElem.style.outline = '';
}
});

this.elem.addEventListener('mousedown', block.block_mouse_down = function(ev) {
block.block_mouse_out();
detachHtmlElem(block)
if (ev.which == 3
|| testBlockContents(ev.target)) return;
ev.stopPropagation();
Expand Down
11 changes: 11 additions & 0 deletions resources/js/menu.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// toggle highlighting in menu-item
var toggleHighlight = document.querySelector('#toggleHighlight');
toggleHighlight.addEventListener('click', function(e) {
if(highlight) {
highlight = false;
toggleHighlight.textContent = 'Highlight On';
} else {
highlight = true;
toggleHighlight.textContent = 'Highlight Off';
}
});