Commit c88a0864 authored by liuzheng712's avatar liuzheng712

feat: search in json

parent e2ef80e1
...@@ -59,7 +59,13 @@ ...@@ -59,7 +59,13 @@
} }
} }
app-search { .search {
border-left-width: 0; border-left-width: 0;
border-bottom: gold 7px inset; border-bottom: gold 2px inset;
}
.left-search {
padding-left: 14px;
width: 100%;
border: none;
} }
<div id="sidebar"> <div id="sidebar">
<app-search></app-search> <div class="search">
<input class="left-search" placeholder=" Search ..." maxlength="2048" name="q" autocomplete="off"
title="Search"
type="text" tabindex="1" spellcheck="false" autofocus [(ngModel)]="q" (keyup.enter)="Search(q)"
(ngModelChange)="modelChange($event)">
</div>
<ul class="filetree"> <ul class="filetree">
<li *ngFor="let hostGroup of HostGroups; let i = index "> <li *ngFor="let hostGroup of HostGroups ; let i = index ">
<input type="checkbox" id="hostgroup-{{i}}"> <input type="checkbox" id="hostgroup-{{i}}">
<label for="hostgroup-{{i}}">{{hostGroup.name}}</label> <label for="hostgroup-{{i}}">{{hostGroup.name}}</label>
<ul> <ul>
<li *ngFor="let host of hostGroup.children" (click)="Connect(host)">{{host.name}}</li> <li *ngFor="let host of hostGroup.children | SearchFilter: q" (click)="Connect(host)">{{host.name}}</li>
</ul> </ul>
</li> </li>
</ul> </ul>
......
...@@ -12,7 +12,8 @@ import {Logger} from 'angular2-logger/core'; ...@@ -12,7 +12,8 @@ import {Logger} from 'angular2-logger/core';
import {AppService, DataStore, HttpService} from '../../app.service'; import {AppService, DataStore, HttpService} from '../../app.service';
import {SshComponent} from '../control/ssh/ssh.component'; import {SshComponent} from '../control/ssh/ssh.component';
import {RdpComponent} from "../control/rdp/rdp.component"; import {RdpComponent} from '../control/rdp/rdp.component';
import {SearchComponent} from "../search/search.component";
declare let layer: any; declare let layer: any;
declare let jQuery: any; declare let jQuery: any;
...@@ -33,11 +34,12 @@ export class Host { ...@@ -33,11 +34,12 @@ export class Host {
selector: 'app-cleftbar', selector: 'app-cleftbar',
templateUrl: './cleftbar.component.html', templateUrl: './cleftbar.component.html',
styleUrls: ['./cleftbar.component.css'], styleUrls: ['./cleftbar.component.css'],
providers: [SshComponent, RdpComponent] providers: [SshComponent, RdpComponent, SearchComponent]
}) })
export class CleftbarComponent implements OnInit { export class CleftbarComponent implements OnInit {
DataStore = DataStore; DataStore = DataStore;
HostGroups: Array<HostGroup>; HostGroups: Array<HostGroup>;
q: string;
static Reload() { static Reload() {
} }
...@@ -52,6 +54,7 @@ export class CleftbarComponent implements OnInit { ...@@ -52,6 +54,7 @@ export class CleftbarComponent implements OnInit {
private _term: SshComponent, private _term: SshComponent,
private _rdp: RdpComponent, private _rdp: RdpComponent,
private _http: HttpService, private _http: HttpService,
private _search: SearchComponent,
private _logger: Logger) { private _logger: Logger) {
this._logger.log('nav.ts:NavComponent'); this._logger.log('nav.ts:NavComponent');
// this._appService.getnav() // this._appService.getnav()
...@@ -65,7 +68,6 @@ export class CleftbarComponent implements OnInit { ...@@ -65,7 +68,6 @@ export class CleftbarComponent implements OnInit {
}); });
} }
Connect(host) { Connect(host) {
console.log(host); console.log(host);
let username: string; let username: string;
...@@ -109,4 +111,8 @@ export class CleftbarComponent implements OnInit { ...@@ -109,4 +111,8 @@ export class CleftbarComponent implements OnInit {
} }
} }
Search(q) {
this._search.Search(q)
}
} }
<input class="left-search" placeholder=" Search ..." maxlength="2048" name="q" autocomplete="off" <input class="left-search" placeholder=" Search ..." maxlength="2048" name="q" autocomplete="off"
title="Search" title="Search"
type="text" tabindex="1" spellcheck="false" autofocus [(ngModel)]="q" (keyup.enter)="search()" type="text" tabindex="1" spellcheck="false" autofocus [(ngModel)]="q" (keyup.enter)="Search(q)"
(ngModelChange)="modelChange($event)"> (ngModelChange)="modelChange($event)">
...@@ -5,10 +5,13 @@ ...@@ -5,10 +5,13 @@
* @date 2017-11-07 * @date 2017-11-07
* @author liuzheng <liuzheng712@gmail.com> * @author liuzheng <liuzheng712@gmail.com>
*/ */
import {Component, OnChanges, Input} from '@angular/core'; import {Component, OnChanges, Input, Pipe, PipeTransform} from '@angular/core';
import {Logger} from 'angular2-logger/core'; import {Logger} from 'angular2-logger/core';
import {AppService, DataStore} from '../../app.service'; import {AppService, DataStore, HttpService} from '../../app.service';
export let Q: string = '';
@Component({ @Component({
selector: 'app-search', selector: 'app-search',
...@@ -18,23 +21,52 @@ import {AppService, DataStore} from '../../app.service'; ...@@ -18,23 +21,52 @@ import {AppService, DataStore} from '../../app.service';
export class SearchComponent implements OnChanges { export class SearchComponent implements OnChanges {
@Input() input; @Input() input;
q: string; searchrequest: any;
constructor(private _appService: AppService, constructor(private _appService: AppService,
private _http: HttpService,
private _logger: Logger) { private _logger: Logger) {
this._logger.log('LeftbarComponent.ts:SearchBar'); this._logger.log('LeftbarComponent.ts:SearchBar');
} }
ngOnChanges(changes) { ngOnChanges(changes) {
this.q = changes.input.currentValue; Q = changes.input.currentValue;
} }
modelChange($event) { modelChange($event) {
this._appService.Search(this.q) this.Search(Q)
} }
search() { public Search(q) {
this._appService.Search(this.q) if (this.searchrequest) {
this.searchrequest.unsubscribe();
}
this.searchrequest = this._http.get('/api/search?q=' + q)
.map(res => res.json())
.subscribe(
data => {
this._logger.log(data);
},
err => {
this._logger.error(err);
},
() => {
}
);
this._logger.log(q)
}
}
@Pipe({name: 'SearchFilter'})
export class SearchFilter implements PipeTransform {
transform(value: any, input: string) {
if (input) {
input = input.toLowerCase();
return value.filter(function (el: any) {
return el.name.toLowerCase().indexOf(input) > -1;
})
}
return value;
} }
} }
...@@ -24,7 +24,7 @@ import {LoginComponent} from './BasicPage/login/login.component'; ...@@ -24,7 +24,7 @@ import {LoginComponent} from './BasicPage/login/login.component';
import {FooterComponent} from './BasicPage/footer/footer.component'; import {FooterComponent} from './BasicPage/footer/footer.component';
import {IleftbarComponent} from './IndexPage/ileftbar/ileftbar.component'; import {IleftbarComponent} from './IndexPage/ileftbar/ileftbar.component';
import {SearchComponent} from './ControlPage/search/search.component'; import {SearchComponent, SearchFilter} from './ControlPage/search/search.component';
import {CleftbarComponent} from './ControlPage/cleftbar/cleftbar.component'; import {CleftbarComponent} from './ControlPage/cleftbar/cleftbar.component';
import {ControlComponent} from './ControlPage/control/control.component'; import {ControlComponent} from './ControlPage/control/control.component';
import {ControlnavComponent} from './ControlPage/control/controlnav/controlnav.component'; import {ControlnavComponent} from './ControlPage/control/controlnav/controlnav.component';
...@@ -32,8 +32,8 @@ import {RdpComponent} from './ControlPage/control/rdp/rdp.component'; ...@@ -32,8 +32,8 @@ import {RdpComponent} from './ControlPage/control/rdp/rdp.component';
import {SshComponent} from './ControlPage/control/ssh/ssh.component'; import {SshComponent} from './ControlPage/control/ssh/ssh.component';
import {ControlPageComponent} from './ControlPage/controlpage.component'; import {ControlPageComponent} from './ControlPage/controlpage.component';
import {IndexPageComponent} from './IndexPage/index-page.component'; import {IndexPageComponent} from './IndexPage/index-page.component';
import { NotFoundComponent } from './BasicPage/not-found/not-found.component'; import {NotFoundComponent} from './BasicPage/not-found/not-found.component';
import { PopupComponent } from './BasicPage/popup/popup.component'; import {PopupComponent} from './BasicPage/popup/popup.component';
@NgModule({ @NgModule({
...@@ -52,6 +52,7 @@ import { PopupComponent } from './BasicPage/popup/popup.component'; ...@@ -52,6 +52,7 @@ import { PopupComponent } from './BasicPage/popup/popup.component';
RdpComponent, RdpComponent,
SshComponent, SshComponent,
SearchComponent, SearchComponent,
SearchFilter,
IleftbarComponent, IleftbarComponent,
CleftbarComponent, CleftbarComponent,
ControlComponent, ControlComponent,
......
...@@ -179,7 +179,6 @@ export class HttpService { ...@@ -179,7 +179,6 @@ export class HttpService {
@Injectable() @Injectable()
export class AppService implements OnInit { export class AppService implements OnInit {
// user:User = user ; // user:User = user ;
searchrequest: any;
constructor(private _http: HttpService, constructor(private _http: HttpService,
private _router: Router, private _router: Router,
...@@ -264,24 +263,7 @@ export class AppService implements OnInit { ...@@ -264,24 +263,7 @@ export class AppService implements OnInit {
this._http.post('/api/browser', JSON.stringify(Browser)).map(res => res.json()).subscribe() this._http.post('/api/browser', JSON.stringify(Browser)).map(res => res.json()).subscribe()
} }
Search(q) {
if (this.searchrequest) {
this.searchrequest.unsubscribe();
}
this.searchrequest = this._http.get('/api/search?q=' + q)
.map(res => res.json())
.subscribe(
data => {
this._logger.log(data);
},
err => {
this._logger.error(err);
},
() => {
}
);
this._logger.log(q)
}
// //
// //
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment