Earnings Per Share - Reconciliation of Basic and Diluted Weighted Average Shares Outstanding (Details) - USD ($) $ / shares in Units, shares in Thousands, $ in Thousands |
3 Months Ended | 6 Months Ended | ||||
|---|---|---|---|---|---|---|
Jun. 28, 2019 |
Mar. 29, 2019 |
Jun. 29, 2018 |
Mar. 30, 2018 |
Jun. 28, 2019 |
Jun. 29, 2018 |
|
| Earnings Per Share [Abstract] | ||||||
| Net income | $ 7,617 | $ 7,091 | $ 9,195 | $ 6,111 | $ 14,708 | $ 15,307 |
| Weighted average common shares outstanding (in shares) | 11,455 | 11,235 | 11,376 | 11,191 | ||
| Add: Dilutive impact of stock options (in shares) | 41 | 68 | 42 | 72 | ||
| Add: Dilutive impact of restricted stock units (in shares) | 109 | 80 | 94 | 88 | ||
| Diluted weighted average common shares outstanding (in shares) | 11,605 | 11,383 | 11,512 | 11,351 | ||
| Earnings per share | ||||||
| Basic (in dollars per share) | $ 0.66 | $ 0.82 | $ 1.29 | $ 1.37 | ||
| Diluted (in dollars per share) | $ 0.66 | $ 0.81 | $ 1.28 | $ 1.35 | ||