Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: manual tools added to the Tools Dashboard #1191

Merged
merged 26 commits into from
Jan 18, 2023
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
394b755
code first tools added
akshatnema Dec 24, 2022
08c6fef
manual tools added
akshatnema Dec 25, 2022
cb5560f
Merge branch 'master' into manual-tools
akshatnema Dec 25, 2022
1931ea8
UI improved
akshatnema Dec 25, 2022
99d56ea
manual tools added
akshatnema Dec 26, 2022
9a90375
Compare tools added
akshatnema Dec 26, 2022
84e9b42
manual tools added
akshatnema Dec 27, 2022
6ef8964
Merge branch 'master' into manual-tools
akshatnema Dec 27, 2022
786caa4
Merge branch 'master' into manual-tools
akshatnema Jan 9, 2023
25bd0d0
schema changed
akshatnema Jan 9, 2023
a55e874
buttons fixed in Filters
akshatnema Jan 11, 2023
bbd230a
Merge branch 'master' into manual-tools
akshatnema Jan 12, 2023
ac3f4ac
new tools added
akshatnema Jan 12, 2023
19c70bf
schema changed
akshatnema Jan 13, 2023
018f6a3
Merge branch 'master' into manual-tools
akshatnema Jan 16, 2023
02ff5cf
Apply suggestions from code review
akshatnema Jan 16, 2023
a5bdb2b
changes done according to review
akshatnema Jan 16, 2023
429c531
changes made
akshatnema Jan 16, 2023
77595d4
Merge branch 'master' into manual-tools
akshatnema Jan 16, 2023
129fe92
added new tools to manual list
akshatnema Jan 16, 2023
a2f6bab
Merge remote-tracking branch 'refs/remotes/origin/manual-tools' into …
akshatnema Jan 16, 2023
6d724d3
hasCommercial parameter corrected
akshatnema Jan 16, 2023
61119fc
removed token from commit
akshatnema Jan 16, 2023
da21eeb
Merge branch 'master' into manual-tools
derberg Jan 17, 2023
9e920f3
Merge branch 'master' into manual-tools
alequetzalli Jan 18, 2023
eff39d6
Merge branch 'master' into manual-tools
akshatnema Jan 18, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion components/tools/Filters.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ export default function Filters({setOpenFilter}) {
}

return (
<div className="bg-white z-10 py-4 border rounded-lg border-gray-300 shadow-md">
<div className="bg-white z-20 py-4 border rounded-lg border-gray-300 shadow-md">
<div className="flex flex-col gap-2 mx-4">
<div className="flex gap-2 items-baseline justify-between">
<div className="text-sm text-gray-500 uppercase">Pricing</div>
Expand Down
2 changes: 1 addition & 1 deletion components/tools/ToolDashboard.js
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ export default function ToolDashboard() {
<div>Filter</div>
</div>
{openFilter && (
<div className="z-10 absolute top-16 min-w-[20rem]">
<div className="z-20 absolute top-16 min-w-[20rem]">
<Filters setOpenFilter={setOpenFilter} />
</div>
)}
Expand Down
98 changes: 56 additions & 42 deletions components/tools/ToolsCard.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,21 @@ export default function ToolsCard({ toolData }) {
const descriptionRef = useRef(null)
useEffect(() => {
let divHeight = descriptionRef.current.offsetHeight;
let numberOfLines = divHeight/20;
if(numberOfLines > 3) setShowMoreDescription(true)
let numberOfLines = divHeight / 20;
if (numberOfLines > 3) setShowMoreDescription(true)
else setShowMoreDescription(false)
}, [])


let onGit = false;
const url = new URL(toolData.links.repoUrl)
if (url.host == 'github.com') onGit = true
else onGit = false
if (toolData.links.repoUrl) {
const url = new URL(toolData.links.repoUrl)
if (url.host == 'github.com') onGit = true
else onGit = false
}

return (
<div className="border shadow-md rounded-lg">
<div className="border shadow-md h-auto flex flex-col rounded-lg">
<div className="pt-8 px-6 mb-6">
<div className="flex flex-col gap-2">
<div className="flex gap-4 justify-between w-full">
Expand All @@ -32,12 +35,12 @@ export default function ToolsCard({ toolData }) {
</div>
<div className='relative'>
<Paragraph typeStyle="body-sm">
<div ref={descriptionRef} className={`w-full ${showMoreDescription ? 'cursor-pointer': '' }`} onMouseEnter={() =>(setTimeout(() => {if(showMoreDescription) setShowDescription(true)}, 500))}>
<TextTruncate
element="span"
line={3}
text={toolData.description}
/></div>
<div ref={descriptionRef} className={`w-full ${showMoreDescription ? 'cursor-pointer' : ''}`} onMouseEnter={() => (setTimeout(() => { if (showMoreDescription) setShowDescription(true) }, 500))}>
<TextTruncate
element="span"
line={3}
text={toolData.description}
/></div>
</Paragraph>
{showDescription && <div className="absolute top-0 p-2 z-10 bg-white w-full border border-gray-200 shadow-md" onMouseLeave={() => (setShowDescription(false))}>
<Paragraph typeStyle="body-sm" className=''>
Expand All @@ -48,8 +51,8 @@ export default function ToolsCard({ toolData }) {
</div>
</div>
<hr className="mx-6" />
{(toolData?.filters?.language || toolData?.filters?.technology?.length>0) &&
<div className="my-6">
<div className="grow">
{(toolData?.filters?.language || toolData?.filters?.technology?.length > 0) ? <div className="my-6">
{toolData.filters.language && <div className="flex flex-col gap-2 mx-6">
<div className="text-gray-700 text-sm font-semibold">LANGUAGES</div>
<div className="flex gap-2">
Expand All @@ -60,7 +63,7 @@ export default function ToolsCard({ toolData }) {
/>
</div>
</div>}
{toolData.filters.technology.length > 0 && <><div className="flex flex-col gap-2 my-4 mx-6">
{toolData.filters.technology.length > 0 && <div className="flex flex-col gap-2 my-4 mx-6">
<div className="text-gray-700 text-sm font-semibold">TECHNOLOGIES</div>
<div className="flex gap-2 flex-wrap">
{toolData.filters.technology.map((item, index) => (
Expand All @@ -71,37 +74,48 @@ export default function ToolsCard({ toolData }) {
/>
))}
</div>
</div></>}
</div>}
</div> :
<div className="w-full relative p-8 text-center h-full text-gray-700">
<div className='absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2'> No Content to Display </div>
derberg marked this conversation as resolved.
Show resolved Hide resolved
</div>}
{(toolData.links.repoUrl || toolData.links.websiteUrl) && <>
<hr className="" />
<div className="flex">
{onGit ?
<a className="w-full text-center py-6 hover:bg-gray-200 cursor-pointer" href={toolData.links.repoUrl} target='_blank' rel='noreferrer'>
<div className="m-auto flex w-fit gap-2">
<img src="/img/logos/github-black.svg" className="w-5" />
<div className="text-gray-700 text-sm">View on Github</div>
</div>
</a> :
<a className="w-full text-center py-6 hover:bg-gray-200 cursor-pointer" href={toolData.links.repoUrl} target='_blank' rel='noreferrer'>
<div className="m-auto flex w-fit gap-2">
<div className="text-gray-700 text-sm">View Source Code</div>
</div>
</a>
}
{toolData.links.websiteUrl && (
<>
<div className='border border-gray-200 h-auto'></div>
<a className="w-full text-center py-6 hover:bg-gray-200 cursor-pointer" href={toolData.links.repoUrl} target='_blank' rel='noreferrer'>
</div>
{(toolData.links.repoUrl || toolData.links.websiteUrl || toolData.links.docsUrl) && <>
<hr className="" />
<div className="flex">
{toolData.links.repoUrl && <>
{onGit ?
<a className="w-full text-center border-x py-6 hover:bg-gray-200 cursor-pointer" href={toolData.links.repoUrl} target='_blank' rel='noreferrer'>
<div className="m-auto flex w-fit gap-2">
<img src="/img/logos/github-black.svg" className="w-5" />
<div className="text-gray-700 text-sm">View on Github</div>
</div>
</a> :
<a className="w-full text-center border-x border-gray-200 py-6 hover:bg-gray-200 cursor-pointer" href={toolData.links.repoUrl} target='_blank' rel='noreferrer'>
<div className="m-auto flex w-fit gap-2">
<div className="text-gray-700 text-sm">View Source Code</div>
</div>
</a>
}
</>}
{toolData.links.websiteUrl && (
<a className="w-full text-center py-6 hover:bg-gray-200 border-x border-gray-200 cursor-pointer" href={toolData.links.websiteUrl} target='_blank' rel='noreferrer'>
<div className="m-auto flex w-fit gap-2">
<img src="/img/illustrations/icons/share.svg" className="w-5" />
<div className="text-gray-700 text-sm">Visit Website</div>
</div>
</a>
</>
)}
</div>
</>}
</div>
);
)}
{toolData.links.docsUrl && (
<a className="w-full text-center py-6 hover:bg-gray-200 border-x border-gray-200 cursor-pointer" href={toolData.links.websiteUrl} target='_blank' rel='noreferrer'>
<div className="m-auto flex w-fit gap-2">
<img src="/img/illustrations/icons/docs-icon.svg" className="w-5" />
<div className="text-gray-700 text-sm">Visit Docs</div>
</div>
</a>
)}
</div>
</>}
</div>
);
}
2 changes: 1 addition & 1 deletion components/tools/ToolsList.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export default function toolsList({ toolsData }) {
{toolsData[categoryName].description}
</Paragraph>
<hr className='my-8' />
<div className="lg:grid grid-cols-3 gap-8">
<div className="flex flex-col lg:grid grid-cols-3 gap-8">
{toolsData[categoryName].toolsList.map((tool, toolIndex) => (
<ToolsCard key={toolIndex} toolData={tool} />
))}
Expand Down
2 changes: 1 addition & 1 deletion config/all-tags.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"languages":[{"name":"Go","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"},{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"},{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"},{"name":"HTML","color":"bg-[#E2A291]","borderColor":"border-[#E44D26]"},{"name":"C/C++","color":"bg-[#93CDEF]","borderColor":"border-[#0080CC]"},{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"},{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"},{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"},{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"},{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"},{"name":"Markdown","color":"bg-[#BABEBF]","borderColor":"border-[#445B64]"},{"name":"YAML","color":"bg-[#FFB764]","borderColor":"border-[#F1901F]"},{"name":"R","color":"bg-[#84B5ED]","borderColor":"border-[#246BBE]"},{"name":"Ruby","color":"bg-[#FF8289]","borderColor":"border-[#FF000F]"},{"name":"Rust","color":"bg-[#FFB8AA]","borderColor":"border-[#E43716]"},{"name":"Shell","color":"bg-[#87D4FF]","borderColor":"border-[#389ED7]"},{"name":"Groovy","color":"bg-[#B6D5E5]","borderColor":"border-[#609DBC]"}],"technologies":[{"name":"Node js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Hermes","color":"bg-[#8AEEBD]","borderColor":"border-[#2AB672]"},{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"AWS","color":"bg-[#FF9F59]","borderColor":"border-[#EF6703]"},{"name":"Docker","color":"bg-[#B8E0FF]","borderColor":"border-[#2596ED]"},{"name":"Node-red","color":"bg-[#FF7474]","borderColor":"border-[#8F0101]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Saas","color":"bg-[#6AB8EC]","borderColor":"border-[#2275AD]"},{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Scala","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Azure","color":"bg-[#4B93FF]","borderColor":"border-[#015ADF]"},{"name":"Jenkins","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"WebComponents","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}]}
{"languages":[{"name":"Go","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"},{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"},{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"},{"name":"HTML","color":"bg-[#E2A291]","borderColor":"border-[#E44D26]"},{"name":"C/C++","color":"bg-[#93CDEF]","borderColor":"border-[#0080CC]"},{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"},{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"},{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"},{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"},{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"},{"name":"Markdown","color":"bg-[#BABEBF]","borderColor":"border-[#445B64]"},{"name":"YAML","color":"bg-[#FFB764]","borderColor":"border-[#F1901F]"},{"name":"R","color":"bg-[#84B5ED]","borderColor":"border-[#246BBE]"},{"name":"Ruby","color":"bg-[#FF8289]","borderColor":"border-[#FF000F]"},{"name":"Rust","color":"bg-[#FFB8AA]","borderColor":"border-[#E43716]"},{"name":"Shell","color":"bg-[#87D4FF]","borderColor":"border-[#389ED7]"},{"name":"Groovy","color":"bg-[#B6D5E5]","borderColor":"border-[#609DBC]"}],"technologies":[{"name":"Node js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Hermes","color":"bg-[#8AEEBD]","borderColor":"border-[#2AB672]"},{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"AWS","color":"bg-[#FF9F59]","borderColor":"border-[#EF6703]"},{"name":"Docker","color":"bg-[#B8E0FF]","borderColor":"border-[#2596ED]"},{"name":"Node-RED","color":"bg-[#FF7474]","borderColor":"border-[#8F0101]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Saas","color":"bg-[#6AB8EC]","borderColor":"border-[#2275AD]"},{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Scala","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Azure","color":"bg-[#4B93FF]","borderColor":"border-[#015ADF]"},{"name":"Jenkins","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Kotlin","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Markdown","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Groovy","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Shell","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}]}