From 3746200f21917dd0a70adad59ae33b37ba256de3 Mon Sep 17 00:00:00 2001 From: Indrajith K L Date: Sat, 13 Jul 2019 12:15:30 +0530 Subject: Implements Bookmarks Listing Grid Adjustments Prepare for release --- src/App.css | 18 +++++++++++ src/App.js | 104 ++++++++++++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 101 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/App.css b/src/App.css index e69de29..db20a8c 100644 --- a/src/App.css +++ b/src/App.css @@ -0,0 +1,18 @@ +button.refresh{ + float: right; + background: black; + border: none; + color: #fff; + /* padding: 6px; */ + border-radius: 3px; + width: 28px; + height: 28px; + padding-top: 3px; + cursor: pointer; +} + +.header { + text-align: center; + font-size: 17px; + color: #000; +} \ No newline at end of file diff --git a/src/App.js b/src/App.js index adbdf16..11b9321 100644 --- a/src/App.js +++ b/src/App.js @@ -1,8 +1,19 @@ /*global chrome*/ -import React from 'react'; +import React, {Component} from 'react'; import { DataTable } from 'primereact/datatable'; import { Column } from 'primereact/column'; -class App extends React.Component { +import {Button} from 'primereact/button'; +import {InputText} from 'primereact/inputtext'; +import _ from 'lodash'; +import moment from 'moment'; +import './App.css'; + +class App extends Component { + + state = { + bookMarkDataRaw: [], + bookMarks: [] + } /* Open port on popup file */ port = chrome.runtime.connect({ @@ -17,41 +28,92 @@ class App extends React.Component { listenMessages = () => { this.port.onMessage.addListener(message => { - console.log(message) + if(message.bookMarkData){ + this.setState({ + bookMarkDataRaw: message.bookMarkData[0] + }, ()=>{ + let collected = this.iterateBookMarks(this.state.bookMarkDataRaw.children, []); + collected = _.map(collected, (nodes)=>{ + if(nodes.parentId){ + let parentNode = _.find(collected, {id: nodes.parentId}); + nodes.parentNode = parentNode ? parentNode.title : ""; + } + return nodes; + }) + this.setState({ + bookMarks: collected + }) + }) + } }); + this.getBookMarks(); + } + + linkTemplate = (rowData, column) => { + return {rowData.url} + } + + dateTemplate = (rowData, column) => { + if(rowData.dateAdded){ + return {moment(rowData.dateAdded).format('MM-DD-YYYY hh:ss A')} + }else if(rowData.dateGroupModified){ + return {moment(rowData.dateAdded).format('MM-DD-YYYY hh:ss A')} + }else { + return + } } componentDidMount(){ this.listenMessages(); } + iterateBookMarks = (children, consolidatedChildrens)=>{ + let bookMarkChildren = _.each(children, (child)=>{ + if(child.children && child.children.length>0){ + let currentNode = child; + let currentNodeChildren = currentNode.children; + console.log(currentNodeChildren); + delete currentNode.children; + consolidatedChildrens.push(currentNode); + console.log(currentNodeChildren); + this.iterateBookMarks(currentNodeChildren, consolidatedChildrens); + }else{ + consolidatedChildrens.push(child); + } + }); + + return consolidatedChildrens; + } + render(){ + var header =
+ + this.setState({globalFilter: e.target.value})} placeholder="Search Bookmarks" size="50"/> + +
; return (
-

DataTable - Sort

-

Enabling sortable property on a column is enough to make a column sortable. Multiple column sorting is enabled using sortMode property and - used with metaKey.

+ {/*
-

Single Column

- {/* - - - - - - -

Multiple Columns

- - - - - - */} +

BookMarks

+ + + {/* */} + + + + + +
); -- cgit v1.2.3