Skip to content

Commit d6474ec

Browse files
committed
feat(devindex): Optimize LinkedIn URL storage and display (#9172)
- Updater.mjs: Extract and store only the LinkedIn username in the 'li' field to reduce data size. - GridContainer.mjs: Update LinkedIn column to use new 'linkedin' type. - src/grid/column/LinkedIn.mjs: New column type that handles dynamic URL reconstruction from username. - src/grid/Container.mjs: Register 'linkedin' column type. - src/grid/column/_export.mjs: Export new LinkedIn column.
1 parent 055ec35 commit d6474ec

5 files changed

Lines changed: 69 additions & 3 deletions

File tree

apps/devindex/services/Updater.mjs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -458,7 +458,12 @@ class Updater extends Base {
458458
if (company) minified.c = company;
459459
if (bio) minified.b = bio;
460460
if (followers?.totalCount > 0) minified.fl = followers.totalCount;
461-
if (linkedin_url) minified.li = linkedin_url;
461+
462+
if (linkedin_url) {
463+
// Extract username (handle trailing slash)
464+
const match = linkedin_url.match(/linkedin\.com\/in\/([^/]+)/);
465+
if (match) minified.li = match[1];
466+
}
462467

463468
// Metadata
464469
if (isHireable) minified.h = 1;

apps/devindex/view/home/GridContainer.mjs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,11 +207,10 @@ class GridContainer extends BaseGridContainer {
207207
text : 'Website',
208208
width : 65
209209
}, {
210-
type : 'iconLink',
210+
type : 'linkedin',
211211
cellAlign: 'center',
212212
dataField: 'linkedinUrl',
213213
cellCls : 'devindex-column-linkedin',
214-
iconCls : 'fa-brands fa-linkedin',
215214
text : 'LI',
216215
width : 40
217216
}, {

src/grid/Container.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ class GridContainer extends BaseContainer {
4848
icon : column.Icon,
4949
iconLink : column.IconLink,
5050
index : column.Index,
51+
linkedin : column.LinkedIn,
5152
progress : column.Progress,
5253
sparkline : column.Sparkline
5354
}

src/grid/column/LinkedIn.mjs

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import ComponentColumn from './Component.mjs';
2+
import IconLinkComponent from '../../component/IconLink.mjs';
3+
4+
/**
5+
* @class Neo.grid.column.LinkedIn
6+
* @extends Neo.grid.column.Component
7+
*/
8+
class LinkedIn extends ComponentColumn {
9+
static config = {
10+
/**
11+
* @member {String} className='Neo.grid.column.LinkedIn'
12+
* @protected
13+
*/
14+
className: 'Neo.grid.column.LinkedIn',
15+
/**
16+
* @member {Object} defaults
17+
* @protected
18+
*/
19+
defaults: {
20+
module: IconLinkComponent
21+
},
22+
/**
23+
* @member {String} hideMode='visibility'
24+
* @reactive
25+
*/
26+
hideMode: 'visibility',
27+
/**
28+
* @member {String|null} iconCls='fa-brands fa-linkedin'
29+
*/
30+
iconCls: 'fa-brands fa-linkedin',
31+
/**
32+
* @member {String} type='linkedin'
33+
* @protected
34+
*/
35+
type: 'linkedin'
36+
}
37+
38+
/**
39+
* @param {Object} config
40+
* @param {Record} record
41+
* @returns {Object}
42+
*/
43+
applyRecordConfigs(config, record) {
44+
let me = this,
45+
url = record[me.dataField];
46+
47+
if (url && !url.startsWith('http')) {
48+
url = `https://www.linkedin.com/in/${url}/`
49+
}
50+
51+
return {
52+
iconCls: me.iconCls,
53+
url,
54+
...config
55+
}
56+
}
57+
}
58+
59+
export default Neo.setupClass(LinkedIn);

src/grid/column/_export.mjs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import GitHubUser from './GitHubUser.mjs';
99
import Icon from './Icon.mjs';
1010
import IconLink from './IconLink.mjs';
1111
import Index from './Index.mjs';
12+
import LinkedIn from './LinkedIn.mjs';
1213
import Progress from './Progress.mjs';
1314
import Sparkline from './Sparkline.mjs';
1415

@@ -24,6 +25,7 @@ export {
2425
Icon,
2526
IconLink,
2627
Index,
28+
LinkedIn,
2729
Progress,
2830
Sparkline
2931
};

0 commit comments

Comments
 (0)