'Insert some texts into D3 Rect element

I have a problem and I need your helps! I want to insert some texts into my D3 rect element and I tried many ways but they don't work.

Here is the expected element:

expected element

And here is my current element:

current element

Here is my code:

selection.append('rect')
                                        .attr('abc','testd3')
                                        .attr('crewID', '' + crewData.CrewID)
                                        .attr('class', 'crew-duty-' + crewData.UserDutyID)
                                        .attr('x',xScale(moment(item.Date)))
                                        .attr('y', 80)
                                        .attr('width', 100) 
                                        .attr('height', 20)
                                        .attr('fill', colorOnOff)
                                        .attr('ng-show', true)
                                        .attr('tooltip-type','crewRotationTooltip')
                                        .on("click",function(e){
                                            manageScheduleDialog.init({
                                                data: e,
                                                time: item.Date,
                                                rotation: item
                                            }).then(function(data){                                          $rootScope.$broadcast('eventManageScheduleDialog', data);
                                                console.log("reload page!");
                                            })
                                        }).on("mouseover", function(d){
                                        tip.show(crewData, 'crewRotationTooltip', item);
                                    }).on("mouseout", function(){
                                            tip.hide();`enter code here`
                                    });

Please show me how to insert some texts in to my element. Thank you a lot!



Solution 1:[1]

Next time edit your code and use snippet so other can clearly understand what you means

d3.select('body').append('svg')
//group it
  .append('g').attr('class','test')
  .append('rect')
                                         
                                        .attr('abc','testd3')
                            
                                        .attr('class', 'crew-duty-')
                                        .attr('x',30)
                                        .attr('y', 80)
                                        .attr('width', 100) 
                                        .attr('height', 20)
                                        .attr('fill', 'blue')
                                        .attr('ng-show', true)
                                        .attr('tooltip-type','crewRotationTooltip')
                                        //.on("click")
                                        //.on("mouseover")
                                        //.on("mouseout");

//i dont know what you are aiming for but your code generate this

//insert text on it?
//make group before create react

d3.selectAll('.test').each(function(d,i){

 d3.select(this).append('text')
  .attr('y',95)
  .attr('x',35)
  .attr('text-anchor','left')

   .attr('fill','white')
  .text('On -Full Pay')
  
})

//done

//if not you cant, it append on element but not correct appened, it will not show
d3.selectAll('.crew-duty-').each(function(d,i){

 d3.select(this).append('text')
  .attr('y',95)
  .attr('x',35)
  .attr('text-anchor','left')

   .attr('fill','white')
  .text('SOLOLOLO')
  
})
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.2.3/d3.min.js"></script>
  
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>

</body>
</html>

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 KEKUATAN