Skip to content
This repository was archived by the owner on Nov 22, 2021. It is now read-only.

Commit 897a085

Browse files
author
Ke, Mingze
committed
Update toolbox with filter
1 parent 08ff66b commit 897a085

File tree

1 file changed

+23
-13
lines changed

1 file changed

+23
-13
lines changed

Diff for: code.js

+23-13
Original file line numberDiff line numberDiff line change
@@ -601,6 +601,8 @@ Code.HOTKEY = {
601601
UNKNOWN: -1
602602
};
603603

604+
Code.rawToolbox = null;
605+
604606
/**
605607
* List of tab names.
606608
* @private
@@ -707,15 +709,17 @@ Code.renderContent = function () {
707709
}
708710
};
709711

710-
Code.filterXML = function (toolboxXML, property, values) {
711-
var categories = slice.call(toolboxXML.querySelectorAll('category'));
712+
Code.filterXML = function (toolbox, property, values) {
713+
toolbox = document.importNode(toolbox, true);
714+
715+
var categories = slice.call(toolbox.querySelectorAll('category'));
712716
categories.forEach(function (cate) {
713717
if (cate.getAttribute(property) !== null) {
714718
filterTag(cate);
715719
}
716720
});
717721

718-
var blocks = slice.call(toolboxXML.querySelectorAll('block'));
722+
var blocks = slice.call(toolbox.querySelectorAll('block'));
719723
blocks.forEach(function (block) {
720724
if (block.getAttribute(property) !== null) {
721725
filterTag(block);
@@ -732,7 +736,7 @@ Code.filterXML = function (toolboxXML, property, values) {
732736
}
733737
}
734738

735-
return toolboxXML;
739+
return toolbox;
736740
};
737741

738742
Code.pruneNode = function (node) {
@@ -745,14 +749,15 @@ Code.pruneNode = function (node) {
745749
}
746750
};
747751

748-
Code.getToolBox = function (toolboxXML) {
749-
var categories = slice.call(toolboxXML.querySelectorAll('category')).map(function (e) {
750-
return e.id;
751-
});
752+
Code.getToolBox = function () {
753+
var toolbox = Code.filterXML(Code.rawToolbox, 'tags', Code.getTags()),
754+
categories = slice.call(toolbox.querySelectorAll('category')).map(function (e) {
755+
return e.id;
756+
});
752757
for (var i = 0, cat; cat = categories[i]; i++) {
753-
toolboxXML.querySelector('#' + cat).setAttribute('name', MSG[cat]);
758+
toolbox.querySelector('#' + cat).setAttribute('name', MSG[cat]);
754759
}
755-
return new XMLSerializer().serializeToString(toolboxXML);
760+
return toolbox;
756761
};
757762

758763
Code.getUrlParts = function () {
@@ -904,10 +909,14 @@ Code.init = function (toolbox) {
904909
filterBtn[index].className = 'filterBtn selected';
905910
var tagName = this.getAttribute('tag');
906911
if(tagName){
907-
window.history.pushState('tag', 'title', '/?tags=' + tagName);
912+
Code.queryString.set('tags', tagName);
908913
}else{
909-
window.history.pushState('tag', 'title', '/');
914+
Code.queryString.unset('tags');
910915
}
916+
Code.workspace.updateToolbox(Code.getToolBox());
917+
setTimeout(function () {
918+
Blockly.fireUiEvent(window, 'resize');
919+
}, 50);
911920
};
912921
});
913922

@@ -1600,7 +1609,8 @@ Promise.all([
16001609
]).then(function (values) {
16011610
Code.initHandlebars();
16021611
Code.renderPage(values[0].body.innerHTML);
1603-
Code.init(Code.getToolBox(Code.filterXML(values[1].body.firstChild, 'tags', Code.getTags())));
1612+
Code.rawToolbox = values[1].body.firstChild;
1613+
Code.init(Code.getToolBox());
16041614
Code.loadDemoArea();
16051615
Code.loadGa();
16061616
Code.ga();

0 commit comments

Comments
 (0)