Note 4 - Stock-based Compensation (Details Textual) - USD ($) | 1 Months Ended | 3 Months Ended | 6 Months Ended | 9 Months Ended | 18 Months Ended |
Feb. 29, 2020 | Jun. 30, 2020 | Jun. 30, 2019 | Dec. 31, 2019 | Jun. 30, 2020 | Jun. 30, 2019 | Jun. 30, 2020 |
Share-based Payment Arrangement, Expense | | $ 213,361 | $ 433,438 | | $ 541,884 | $ 1,535,628 | |
Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount, Total | | 2,147,356 | | | $ 2,147,356 | | $ 2,147,356 |
Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition (Year) | | | | | 4 years 2 months 12 days | | |
Share-based Compensation Arrangement by Share-based Payment Award, Options, Grants in Period, Gross (in shares) | | | | | 121,350 | 172,000 | |
Share-based Compensation Arrangement by Share-based Payment Award, Expiration Period (Year) | | | | | 5 years 8 months 15 days | 4 years | |
Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period (Year) | | | | | 4 years 8 months 15 days | 3 years | |
Share-based Compensation Arrangements by Share-based Payment Award, Options, Grants in Period, Weighted Average Exercise Price (in dollars per share) | | | | | $ 12.43 | $ 12.17 | |
Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Weighted Average Remaining Contractual Term (Year) | | | | | 2 years 3 months 21 days | | |
Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Intrinsic Value | | $ 278,995 | | | $ 278,995 | | $ 278,995 |
Proceeds from Stock Options Exercised | | | | | $ 10,968 | $ 24 | |
Employee Stock Purchase Plan [Member] | | | | | | | |
Share-based Compensation Arrangement by Share-based Payment Award, Market Price Percentage, Offering Date | | | | | 85.00% | | |
Stock Issued During Period, Shares, Employee Stock Purchase Plans (in shares) | | | | 15,107 | | | 15,116 |
Share-based Compensation Arrangement by Share-based Payment Award, Purchase Price (in dollars per share) | | | | $ 11.23 | | | $ 11.85 |
Share-based Compensation Arrangement by Share-based Payment Award, Number of Additional Shares Authorized (in shares) | 200,000 | | | | | | |
Share-based Compensation Arrangement by Share-based Payment Award, Number of Shares Available for Grant (in shares) | | 219,623 | | | 219,623 | | 219,623 |
Minimum [Member] | | | | | | | |
Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period (Year) | | | | | 3 years | | |
Maximum [Member] | | | | | | | |
Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period (Year) | | | | | 5 years | | |
Share-based Payment Arrangement, Option [Member] | Minimum [Member] | | | | | | | |
Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period (Year) | | | | | 3 years | | |
Share-based Payment Arrangement, Option [Member] | Maximum [Member] | | | | | | | |
Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period (Year) | | | | | 5 years | | |
Restricted Stock [Member] | | | | | | | |
Share-based Compensation Arrangement by Share-based Payment Award, Equity Instruments Other than Options, Grants in Period (in shares) | | | | | 19,455 | | |
Share-based Compensation Arrangement by Share-based Payment Award, Equity Instruments Other than Options, Grants in Period, Weighted Average Grant Date Fair Value (in dollars per share) | | | | | $ 11.30 | | |
Restricted Stock [Member] | Non-employee Directors [Member] | Stock Compensation Plan 2007 [Member] | | | | | | | |
Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period (Year) | 1 year | | | | 1 year | 1 year | |
Share-based Compensation Arrangement by Share-based Payment Award, Equity Instruments Other than Options, Grants in Period (in shares) | 5,000 | | | | 5,830 | 4,340 | |
Share-based Compensation Arrangement by Share-based Payment Award, Equity Instruments Other than Options, Grants in Period, Intrinsic Value, Amount Per Share (in dollars per share) | $ 11.01 | | | | $ 10.72 | | |
Share-based Compensation Arrangement by Share-based Payment Award, Equity Instruments Other than Options, Grants in Period, Weighted Average Grant Date Fair Value (in dollars per share) | | | | | | $ 14.40 | |
Restricted Stock [Member] | Minimum [Member] | Employees [Member] | Stock Compensation Plan 2007 [Member] | | | | | | | |
Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period (Year) | | | | | 1 year | | |
Restricted Stock [Member] | Maximum [Member] | Employees [Member] | Stock Compensation Plan 2007 [Member] | | | | | | | |
Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period (Year) | | | | | 10 years | | |
Performance Shares [Member] | Non-employee Directors [Member] | Stock Compensation Plan 2007 [Member] | | | | | | | |
Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period (Year) | | | | | 1 year | | |
Share-based Compensation Arrangement by Share-based Payment Award, Equity Instruments Other than Options, Grants in Period (in shares) | | | | | 8,625 | | |
Share-based Compensation Arrangement by Share-based Payment Award, Equity Instruments Other than Options, Grants in Period, Weighted Average Grant Date Fair Value (in dollars per share) | | | | | $ 11.86 | | |
Selling, General and Administrative Expenses [Member] | | | | | | | |
Share-based Payment Arrangement, Expense | | $ 207,653 | 410,784 | | $ 526,580 | $ 1,450,489 | |
Cost of Sales [Member] | | | | | | | |
Share-based Payment Arrangement, Expense | | $ 5,708 | $ 22,654 | | $ 15,304 | $ 85,139 | |