EasyUI Forum
April 18, 2025, 12:45:46 PM *
Welcome, Guest. Please login or register.

Login with username, password and session length
News:
 
   Home   Help Search Login Register  
Pages: [1]
  Print  
Author Topic: Timeline text alignment  (Read 797 times)
jega
Full Member
***
Posts: 218


View Profile
« on: February 19, 2025, 05:12:36 AM »

Hi.

Have tested timeline and thought about it in sports

To add:

contentPosition : [before/after] - if before, content is right aligned and when after, it's left aligned

Take a look at the imagefile attached


<body>
    <div class="easyui-panel" style="padding:10px">
        <div class="easyui-timeline" data-options="data:data,formatter:myFormatter"></div>
    </div>

<script type="text/javascript">
      
   $(document).ready(function(){

   })

    var data = [            
      {content:'Goal',contentPosition:'before',time:'10:30',playerName:'Player #1',info:''},
      {content:'Penalty',contentPosition:'after',time:'12:00',playerName:'Player #2',info:'Yellow Card'},
      {content:'Goal',contentPosition:'before',time:'14:30',playerName:'Player #3',info:''},
      {content:'Goal',contentPosition:'after',time:'16:30',playerName:'Player #4',info:''}
   ]

    function myFormatter(row){
       var textContent = '<div>'+row.time+' - '+row.content+'</div>'
       textContent += '<div style="font-size:12px;opacity:0.5">'+row.playerName+'</div>'
       textContent += '<div style="font-size:12px;opacity:0.5">'+row.info+'</div>'
        return textContent;
    }

</script>

</body>
« Last Edit: March 31, 2025, 12:15:00 AM by jega » Logged
jega
Full Member
***
Posts: 218


View Profile
« Reply #1 on: March 23, 2025, 03:32:56 AM »

@jarry

Any solution ??
Logged
jarry
Administrator
Hero Member
*****
Posts: 2288


View Profile Email
« Reply #2 on: March 25, 2025, 12:38:25 AM »

The 'align' property is available now. Please look at this example.

https://www.jeasyui.com/demo/main/index.php?plugin=TimeLine&theme=material-teal&dir=ltr&pitem=Alternate&sort=asc
Logged
jega
Full Member
***
Posts: 218


View Profile
« Reply #3 on: March 29, 2025, 04:53:42 PM »

Thanks.

Just what i needed.

Logged
jega
Full Member
***
Posts: 218


View Profile
« Reply #4 on: March 31, 2025, 12:30:40 AM »

Hi Jarry

Have now tested it.

Well, i can see your demo sample makes an timeline with first node to the right and 2. nd node on the left side and so on. This sample i can't run on my server, it makes all nodes on the right side.

If i look at your sample, i can't see how you tell it which node should be on left and right side. What i want is, that i can choose where it should be.

As in my sample. A property contentPosition before or after

    var data = [           
      {content:'Goal',contentPosition:'before',time:'10:30',playerName:'Player #1',info:''},
      {content:'Penalty',contentPosition:'after',time:'12:00',playerName:'Player #2',info:'Yellow Card'},
      {content:'Goal',contentPosition:'before',time:'14:30',playerName:'Player #3',info:''},
      {content:'Goal',contentPosition:'after',time:'16:30',playerName:'Player #4',info:''}
   ]

And when i choose before, the node text should be right aligned and when after, it must be left aligned, og
Logged
jarry
Administrator
Hero Member
*****
Posts: 2288


View Profile Email
« Reply #5 on: April 09, 2025, 08:50:08 PM »

There are some solutions to display the alternate items.

1. Use the 'labelFormatter' and 'formatter' functions.
Code:
<!DOCTYPE html>
<html>

<head>
<meta charset="UTF-8">
<title>TimeLine - jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="https://www.jeasyui.com/easyui/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="https://www.jeasyui.com/easyui/themes/icon.css">
<script type="text/javascript" src="https://www.jeasyui.com/easyui/jquery.min.js"></script>
<script type="text/javascript" src="https://www.jeasyui.com/easyui/jquery.easyui.min.js"></script>
</head>

<body>
<div class="easyui-panel" style="padding:10px;">
<div id="tt"></div>
</div>
<script>
var data = [
{ content: 'Goal', contentPosition: 'before', time: '10:30', playerName: 'Player #1', info: '' },
{ content: 'Penalty', contentPosition: 'after', time: '12:00', playerName: 'Player #2', info: 'Yellow Card' },
{ content: 'Goal', contentPosition: 'before', time: '14:30', playerName: 'Player #3', info: '' },
{ content: 'Goal', contentPosition: 'after', time: '16:30', playerName: 'Player #4', info: '' }
]
$(function () {
const formatContent = (row) => {
return `
<div>
<div style="font-size:14px;font-weight:bold">${row.time} - ${row.content}</div>
<div style="font-size:12px;color:#666">${row.playerName}</div>
<div style="font-size:12px;color:#666">${row.info}</div>
</div>
`
}
$('#tt').timeline({
data: data,
formatter: (row) => {
if (row.contentPosition == 'after') {
return formatContent(row)
} else {
return '<div style="height:45px"></div>';
}
},
labelFormatter: (row) => {
if (row.contentPosition == 'before') {
return formatContent(row)
} else {
return '';
}
}
})
})
</script>
</body>

</html>

2. Set the 'align' property value to 'alternateReverse'.
Code:
const formatContent = (row) => {
return `
<div>
<div style="font-size:14px;font-weight:bold">${row.time} - ${row.content}</div>
<div style="font-size:12px;color:#666">${row.playerName}</div>
<div style="font-size:12px;color:#666">${row.info}</div>
</div>
`
}
$('#tt').timeline({
data: data,
align: 'alternateReverse',
formatter: formatContent
})

3. Custom the 'itemPosition' function to set the item position to 'left' or 'right'.
Code:
const formatContent = (row) => {
return `
<div>
<div style="font-size:14px;font-weight:bold">${row.time} - ${row.content}</div>
<div style="font-size:12px;color:#666">${row.playerName}</div>
<div style="font-size:12px;color:#666">${row.info}</div>
</div>
`
}
$('#tt').timeline({
data: data,
align: 'alternate',
formatter: formatContent,
itemPosition: (row,index) => {
return row.contentPosition=='after' ? 'left' : 'right';
}
})
« Last Edit: April 10, 2025, 08:16:42 PM by jarry » Logged
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!