This recipe is a simple HTML block that pulls staff data from 2 dataviews and presents a list of all upcoming events. You need to have a way to identify your staff from your regular members. We use the Organization group.
StaffList.jpg

Data

I wrote 2 dataviews to pull all staff with non-blank birthdate and non-blank anniversary date then use those dataview ids to create the html block.

HTML Block

Copy the code below into the code of your html block. Be sure to check RockEntity on the HTML block's properties.

<div class="row">
  <div class="col-md-6">
    {[ panel title:'Upcoming Staff Birthdays' icon:'fa fa-star' ]}
      {% person dataview:'96' where:'DaysUntilBirthday <= 21' sort:'DaysUntilBirthday' %}
        <table style="width:100%;">
          {% assign count = 0 %}
          {% for person in personItems %}
            {% assign count = count | Plus:1 %}
            <tr {% if person.DaysUntilBirthday == 0 %}style="font-weight:bold;"{%endif%}>
              {% capture bday %}{{ person.BirthDate | Date:'MMMM'}} {{person.BirthDate | Date:'d' | NumberToOrdinal }}{%endcapture%}
              <td valign="top">{{ person.FullName }}&nbsp;</td><td valign="top">{{bday}}</td>
            </tr>
          {% endfor %}
        </table>
        {% assign picwidth = 100 | DividedBy:count %}
        <table style="width:100%">
          <tr>
            {% for person in personItems %}
              <td width="{{picwidth}}%" align="center"><img src="{{ 'Global' | Attribute:'PublicApplicationRoot' }}{{ person.PhotoUrl }}" style="width:100%;max-width:100px; border-top-left-radius: 50%; border-top-right-radius: 50%; border-bottom-right-radius: 50%; border-bottom-left-radius: 50%; display: block; float: none;padding:5px;"></td>
            {% endfor %}
          </tr>
        </table>
      {% endperson %}
    {[ endpanel ]}
  </div>
  <div class="col-md-6">
    {[ panel title:'Upcoming Staff Wedding Anniversaries' icon:'fa fa-star' ]}
      {% person dataview:'97' where:'DaysUntilAnniversary <= 21' sort:'DaysUntilAnniversary' %}
        <table style="width:100%;"> 
          {% assign count = 0 %}
          {% for person in personItems %}
            {% assign count = count | Plus:1 %}
            <tr {% if person.DaysUntilAnniversary == 0 %}style="font-weight:bold;"{%endif%}>
              {% capture NumYears%}{{ person.AnniversaryDate | DateDiff:'Now','Y' }}{%endcapture%}
              {% capture AnnDay %}{{ person.AnniversaryDate | Date:'M/d/2000' }}{%endcapture%}
              {% capture Day %}{{ 'Now' | Date:'M/d/2000' }}{% endcapture %}
              {% assign NewYear = Day | DateDiff:AnnDay,'d' %}
              {%if NewYear < 0 %}
                {% assign NumYears = NumYears | Plus:1 %}
              {% endif %}
              {% capture anniversary %}<td valign="top">{{ person | FamilySalutation }}&nbsp;</td><td valign="top">{{ person.AnniversaryDate | Date:'MMMM'}} {{ person.AnniversaryDate | Date:'d' | NumberToOrdinal }} ({{ NumYears }})&nbsp;</td>{%endcapture%}
              {% if prevann == "" %}{% assign prevann = anniversary %}{% endif %}
              {% if prevann != anniversary %}
                {{anniversary}}
                {% assign prevann = anniversary %}
              {% endif %}
            </tr>
          {% endfor %}
        </table>
        {% assign picwidth = 100 | DividedBy:count %}
        <table style="width:100%">
          <tr>
            {% for person in personItems %}
              <td width="{{picwidth}}%" align="center"><img src="{{ 'Global' | Attribute:'PublicApplicationRoot' }}{{ person.PhotoUrl }}" style="width:100%;max-width:100px; border-top-left-radius: 50%; border-top-right-radius: 50%; border-bottom-right-radius: 50%; border-bottom-left-radius: 50%; display: block; float: none;padding:5px;"></td>
            {% endfor %}
          </tr>
        </table>
      {% endperson %}
    {[ endpanel ]}
  </div>
</div>