Skip to content
This repository was archived by the owner on Oct 1, 2024. It is now read-only.

Fix bug: Search path for Library Manager is incomplete #166

Merged
merged 4 commits into from
Mar 20, 2017
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
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
8 changes: 6 additions & 2 deletions html/app/components/LibraryItemView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -127,9 +127,13 @@ export default class LibraryItemView extends React.Component<ILibraryProps, ILib
this.state.isUninstalling && (<div className="toolbar-mask theme-bgcolor">Removing</div>)
}
{
lib.version && (
lib.installed && (
<div className="right-side">
<Button className="operation-btn" onClick={() => this.addLibPath(lib.srcPath)}>Add to Include Path</Button>
{
lib.supported && (
<Button className="operation-btn" onClick={() => this.addLibPath(lib.srcPath)}>Add to Include Path</Button>
)
}
{
lib.versions && lib.versions.length && util.versionCompare(lib.versions[0], lib.version) > 0 && (
<Button className="operation-btn" onClick={() => this.installLibrary(lib.name, lib.versions[0])}>Update</Button>
Expand Down
19 changes: 15 additions & 4 deletions html/app/components/LibraryManager.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
*-------------------------------------------------------------------------------------------*/

import * as React from "react";
import { Button, DropdownButton, MenuItem } from "react-bootstrap";
import { Button, Checkbox, DropdownButton, MenuItem } from "react-bootstrap";
import { connect } from "react-redux";
import SearchInput, { createFilter } from "react-search-input";
import * as actions from "../actions";
Expand All @@ -28,6 +28,7 @@ interface ILibraryManagerState extends React.Props<any> {
searchTerm: string;
type: string;
topic: string;
checked: boolean;
}

const mapStateToProps = (store) => {
Expand Down Expand Up @@ -72,10 +73,12 @@ class LibraryManager extends React.Component<ILibraryManagerProps, ILibraryManag
searchTerm: "",
type: "All",
topic: "All",
checked: false,
};
this.typeUpdate = this.typeUpdate.bind(this);
this.topicUpdate = this.topicUpdate.bind(this);
this.searchUpdate = this.searchUpdate.bind(this);
this.handleCheck = this.handleCheck.bind(this);
}

public componentWillMount() {
Expand Down Expand Up @@ -103,8 +106,8 @@ class LibraryManager extends React.Component<ILibraryManagerProps, ILibraryManag
switch (topic) {
case "All":
return true;
case "Uncatogorized":
return !element.category;
case "Uncategorized":
return !element.category || element.category === topic;
default:
return element.category === topic;
}
Expand All @@ -114,7 +117,8 @@ class LibraryManager extends React.Component<ILibraryManagerProps, ILibraryManag
const filterSearch = createFilter(this.state.searchTerm, SEARCH_KEYS);
let totalCount = 0;
this.props.libraries.forEach((element) => {
if (filterType(element, this.state.type) && filterTopic(element, this.state.topic) && filterSearch(element)) {
const filterSupported = this.state.checked ? element.supported : true;
if (filterSupported && filterType(element, this.state.type) && filterTopic(element, this.state.topic) && filterSearch(element)) {
element.shouldBeDisplayed = true;
totalCount++;
} else {
Expand Down Expand Up @@ -154,6 +158,7 @@ class LibraryManager extends React.Component<ILibraryManagerProps, ILibraryManag
})}
</DropdownButton>
<SearchInput className="search-input" placeholder="Filter your search..." onChange={this.searchUpdate} />
<Checkbox className="supported-checkbox" onChange={this.handleCheck}>Only show libraries supported by current board</Checkbox>
</div>
<div className="arduinomanager-container">
{
Expand Down Expand Up @@ -187,6 +192,12 @@ class LibraryManager extends React.Component<ILibraryManagerProps, ILibraryManag
searchTerm: term,
});
}

private handleCheck() {
this.setState({
checked: !this.state.checked,
});
}
}

export default connect(mapStateToProps, mapDispatchToProps)(LibraryManager);
5 changes: 3 additions & 2 deletions html/app/reducers/libraryManagerReducer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,10 @@ export function libraryManagerReducer(state = initalState, action) {
return item.category || "Uncategorized";
});
// Sorting versions in descending order.
action.libraries.forEach((element) => {
// for loop is faster than forEach iterator.
for (let element of action.libraries) {
element.versions = element.versions ? element.versions.sort(util.versionCompare).reverse() : element.versions;
});
}
return {
...state,
libraries: action.libraries,
Expand Down
16 changes: 15 additions & 1 deletion html/app/styles/board.scss
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
}

.arduinomanager-toolbar {
height: 60px;
min-height: 60px;
padding: 15px 10px;
position: fixed;
width: 100%;
Expand Down Expand Up @@ -162,6 +162,20 @@ a {
}

.librarymanager {
.arduinomanager-toolbar {
min-height: 80px;
}

.supported-checkbox {
margin-top: -5px;
margin-bottom: 0px;
padding-left: 5px;
}

.arduinomanager-container {
padding-top: 80px;
}

.search-input {
margin-left: 380px;
padding-top: 0px;
Expand Down
14 changes: 5 additions & 9 deletions src/arduino/boardManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -283,12 +283,9 @@ export class BoardManager {
const arduinoPath = this._settings.arduinoPath;
const packageName = "arduino";
const archName = "avr";
let defaultPlatformPath = path.join(arduinoPath, "hardware");
const platform = os.platform();
if (platform === "darwin") {
let defaultPlatformPath = path.join(arduinoPath, "hardware"); // linux and win32.
if (os.platform() === "darwin") {
defaultPlatformPath = path.join(arduinoPath, "Arduino.app/Contents/Java/hardware");
} else if (platform === "linux") {
// TODO Check default platform path at linux.
}
try {
let packageBundled = fs.readFileSync(path.join(defaultPlatformPath, "package_index_bundled.json"), "utf8");
Expand Down Expand Up @@ -351,11 +348,11 @@ export class BoardManager {

private loadInstalledPlatforms(): void {
this._installedPlatforms = [];
let rootPacakgesPath = path.join(path.join(this._settings.packagePath, "packages"));
if (!util.directoryExistsSync(rootPacakgesPath)) {
let rootPackagePath = path.join(path.join(this._settings.packagePath, "packages"));
if (!util.directoryExistsSync(rootPackagePath)) {
return;
}
const dirs = util.filterJunk(fs.readdirSync(rootPacakgesPath)); // in Mac, filter .DS_Store file.
const dirs = util.filterJunk(util.readdirSync(rootPackagePath, true)); // in Mac, filter .DS_Store file.
dirs.forEach((packageName) => {
let archPath = path.join(this._settings.packagePath, "packages", packageName, "hardware");
if (!util.directoryExistsSync(archPath)) {
Expand All @@ -378,7 +375,6 @@ export class BoardManager {
}

private loadInstalledBoards(): void {
// let boards: Map<string, IBoard> = new Map<string, IBoard>();
this._boards = new Map<string, IBoard>();
this.installedPlatforms.forEach((plat) => {
let dir = plat.rootBoardPath;
Expand Down
Loading