|
785 | 785 | </mat-checkbox> |
786 | 786 | </div> |
787 | 787 | <div class="setting-card-row" style="padding-bottom: 6px; align-items: center; gap: 12px; flex-wrap: wrap"> |
788 | | - <div style="flex: 0 0 auto; font-size: 0.85em; min-width: 120px">Heading Line Style:</div> |
789 | | - <mat-form-field style="width: 150px"> |
790 | | - <mat-label>Length kind</mat-label> |
| 788 | + <div style="flex: 0 0 auto; min-width: 120px">Heading Line Style:</div> |
| 789 | + <mat-form-field style="width: 110px"> |
| 790 | + <mat-label>Value</mat-label> |
| 791 | + <input matInput type="number" min="0" |
| 792 | + [(ngModel)]="facade.settings.vessels.headingLineStyle.lineLength.value" |
| 793 | + (change)="persistModel()" |
| 794 | + > |
| 795 | + </mat-form-field> |
| 796 | + <mat-form-field style="width: 75px"> |
| 797 | + <mat-label>Unit</mat-label> |
791 | 798 | <mat-select |
792 | 799 | [(ngModel)]="facade.settings.vessels.headingLineStyle.lineLength.kind" |
793 | 800 | (selectionChange)="persistModel()" |
|
797 | 804 | } |
798 | 805 | </mat-select> |
799 | 806 | </mat-form-field> |
800 | | - <mat-form-field style="width: 90px"> |
801 | | - <mat-label>Value</mat-label> |
802 | | - <input matInput type="number" min="0" |
803 | | - [(ngModel)]="facade.settings.vessels.headingLineStyle.lineLength.value" |
| 807 | + <mat-form-field style="width: 70px"> |
| 808 | + <mat-label>Color</mat-label> |
| 809 | + <input matInput type="color" |
| 810 | + [(ngModel)]="facade.settings.vessels.headingLineStyle.color" |
804 | 811 | (change)="persistModel()" |
| 812 | + style="cursor: pointer; padding: 0; height: 24px" |
805 | 813 | > |
806 | | - <span matSuffix> |
807 | | - @if (facade.settings.vessels.headingLineStyle.lineLength.kind === 'time') { min } |
808 | | - @if (facade.settings.vessels.headingLineStyle.lineLength.kind === 'distance') { nmi } |
809 | | - @if (facade.settings.vessels.headingLineStyle.lineLength.kind === 'pixels') { px } |
810 | | - </span> |
811 | 814 | </mat-form-field> |
812 | | - <label style="font-size: 0.8em">Color</label> |
813 | | - <input type="color" |
814 | | - [(ngModel)]="facade.settings.vessels.headingLineStyle.color" |
815 | | - (change)="persistModel()" |
816 | | - style="width: 40px; height: 28px; padding: 2px; cursor: pointer; border: none" |
817 | | - > |
818 | | - <mat-form-field style="width: 70px"> |
| 815 | + <mat-form-field style="width: 80px"> |
819 | 816 | <mat-label>Width</mat-label> |
820 | 817 | <input matInput type="number" min="1" max="10" |
821 | 818 | [(ngModel)]="facade.settings.vessels.headingLineStyle.width" |
822 | 819 | (change)="persistModel()" |
823 | 820 | > |
824 | 821 | </mat-form-field> |
825 | | - <mat-form-field style="width: 130px"> |
| 822 | + <mat-form-field style="width: 200px"> |
826 | 823 | <mat-label>Pattern</mat-label> |
827 | 824 | <mat-select |
828 | 825 | [(ngModel)]="facade.settings.vessels.headingLineStyle.dash" |
829 | 826 | (selectionChange)="persistModel()" |
830 | 827 | > |
831 | 828 | @for(d of options.lineStyle.dashPatterns; track d[0]) { |
832 | | - <mat-option [value]="d[0]">{{d[1]}}</mat-option> |
| 829 | + <mat-option [value]="d[0]"> |
| 830 | + <svg width="48" height="10" style="vertical-align: middle; margin-right: 6px"> |
| 831 | + <line x1="0" y1="5" x2="48" y2="5" stroke="currentColor" stroke-width="2" |
| 832 | + [attr.stroke-dasharray]="options.lineStyle.dashArrays.get(d[0])"/> |
| 833 | + </svg>{{d[1]}} |
| 834 | + </mat-option> |
833 | 835 | } |
834 | 836 | </mat-select> |
835 | 837 | </mat-form-field> |
836 | 838 | </div> |
837 | 839 | <div class="setting-card-row" style="padding-bottom: 10px; align-items: center; gap: 12px; flex-wrap: wrap"> |
838 | | - <div style="flex: 0 0 auto; font-size: 0.85em; min-width: 120px">COG Line Style:</div> |
839 | | - <mat-form-field style="width: 150px"> |
840 | | - <mat-label>Length kind</mat-label> |
| 840 | + <div style="flex: 0 0 auto; min-width: 120px">COG Line Style:</div> |
| 841 | + <mat-form-field style="width: 110px"> |
| 842 | + <mat-label>Value</mat-label> |
| 843 | + <input matInput type="number" min="0" |
| 844 | + [(ngModel)]="facade.settings.vessels.cogLineStyle.lineLength.value" |
| 845 | + (change)="persistModel()" |
| 846 | + > |
| 847 | + </mat-form-field> |
| 848 | + <mat-form-field style="width: 75px"> |
| 849 | + <mat-label>Unit</mat-label> |
841 | 850 | <mat-select |
842 | 851 | [(ngModel)]="facade.settings.vessels.cogLineStyle.lineLength.kind" |
843 | 852 | (selectionChange)="persistModel()" |
|
847 | 856 | } |
848 | 857 | </mat-select> |
849 | 858 | </mat-form-field> |
850 | | - <mat-form-field style="width: 90px"> |
851 | | - <mat-label>Value</mat-label> |
852 | | - <input matInput type="number" min="0" |
853 | | - [(ngModel)]="facade.settings.vessels.cogLineStyle.lineLength.value" |
| 859 | + <mat-form-field style="width: 70px"> |
| 860 | + <mat-label>Color</mat-label> |
| 861 | + <input matInput type="color" |
| 862 | + [(ngModel)]="facade.settings.vessels.cogLineStyle.color" |
854 | 863 | (change)="persistModel()" |
| 864 | + style="cursor: pointer; padding: 0; height: 24px" |
855 | 865 | > |
856 | | - <span matSuffix> |
857 | | - @if (facade.settings.vessels.cogLineStyle.lineLength.kind === 'time') { min } |
858 | | - @if (facade.settings.vessels.cogLineStyle.lineLength.kind === 'distance') { nmi } |
859 | | - @if (facade.settings.vessels.cogLineStyle.lineLength.kind === 'pixels') { px } |
860 | | - </span> |
861 | 866 | </mat-form-field> |
862 | | - <label style="font-size: 0.8em">Color</label> |
863 | | - <input type="color" |
864 | | - [(ngModel)]="facade.settings.vessels.cogLineStyle.color" |
865 | | - (change)="persistModel()" |
866 | | - style="width: 40px; height: 28px; padding: 2px; cursor: pointer; border: none" |
867 | | - > |
868 | | - <mat-form-field style="width: 70px"> |
| 867 | + <mat-form-field style="width: 80px"> |
869 | 868 | <mat-label>Width</mat-label> |
870 | 869 | <input matInput type="number" min="1" max="10" |
871 | 870 | [(ngModel)]="facade.settings.vessels.cogLineStyle.width" |
872 | 871 | (change)="persistModel()" |
873 | 872 | > |
874 | 873 | </mat-form-field> |
875 | | - <mat-form-field style="width: 130px"> |
| 874 | + <mat-form-field style="width: 200px"> |
876 | 875 | <mat-label>Pattern</mat-label> |
877 | 876 | <mat-select |
878 | 877 | [(ngModel)]="facade.settings.vessels.cogLineStyle.dash" |
879 | 878 | (selectionChange)="persistModel()" |
880 | 879 | > |
881 | 880 | @for(d of options.lineStyle.dashPatterns; track d[0]) { |
882 | | - <mat-option [value]="d[0]">{{d[1]}}</mat-option> |
| 881 | + <mat-option [value]="d[0]"> |
| 882 | + <svg width="48" height="10" style="vertical-align: middle; margin-right: 6px"> |
| 883 | + <line x1="0" y1="5" x2="48" y2="5" stroke="currentColor" stroke-width="2" |
| 884 | + [attr.stroke-dasharray]="options.lineStyle.dashArrays.get(d[0])"/> |
| 885 | + </svg>{{d[1]}} |
| 886 | + </mat-option> |
883 | 887 | } |
884 | 888 | </mat-select> |
885 | 889 | </mat-form-field> |
|
1114 | 1118 | <mat-card class="setting-card"> |
1115 | 1119 | <mat-card-content> |
1116 | 1120 | <div class="setting-card-row" style="padding-bottom: 6px; align-items: center; gap: 12px; flex-wrap: wrap"> |
1117 | | - <div style="flex: 0 0 auto; font-size: 0.85em; min-width: 120px">Self Track Style:</div> |
1118 | | - <label style="font-size: 0.8em">Color</label> |
1119 | | - <input type="color" |
1120 | | - [(ngModel)]="facade.settings.vessels.selfTrailStyle.color" |
1121 | | - (change)="persistModel()" |
1122 | | - style="width: 40px; height: 28px; padding: 2px; cursor: pointer; border: none" |
1123 | | - > |
| 1121 | + <div style="flex: 0 0 auto; min-width: 120px">Self Track Style:</div> |
1124 | 1122 | <mat-form-field style="width: 70px"> |
| 1123 | + <mat-label>Color</mat-label> |
| 1124 | + <input matInput type="color" |
| 1125 | + [(ngModel)]="facade.settings.vessels.selfTrailStyle.color" |
| 1126 | + (change)="persistModel()" |
| 1127 | + style="cursor: pointer; padding: 0; height: 24px" |
| 1128 | + > |
| 1129 | + </mat-form-field> |
| 1130 | + <mat-form-field style="width: 80px"> |
1125 | 1131 | <mat-label>Width</mat-label> |
1126 | 1132 | <input matInput type="number" min="1" max="10" |
1127 | 1133 | [(ngModel)]="facade.settings.vessels.selfTrailStyle.width" |
1128 | 1134 | (change)="persistModel()" |
1129 | 1135 | > |
1130 | 1136 | </mat-form-field> |
1131 | | - <mat-form-field style="width: 130px"> |
| 1137 | + <mat-form-field style="width: 200px"> |
1132 | 1138 | <mat-label>Pattern</mat-label> |
1133 | 1139 | <mat-select |
1134 | 1140 | [(ngModel)]="facade.settings.vessels.selfTrailStyle.dash" |
1135 | 1141 | (selectionChange)="persistModel()" |
1136 | 1142 | > |
1137 | 1143 | @for(d of options.lineStyle.dashPatterns; track d[0]) { |
1138 | | - <mat-option [value]="d[0]">{{d[1]}}</mat-option> |
| 1144 | + <mat-option [value]="d[0]"> |
| 1145 | + <svg width="48" height="10" style="vertical-align: middle; margin-right: 6px"> |
| 1146 | + <line x1="0" y1="5" x2="48" y2="5" stroke="currentColor" stroke-width="2" |
| 1147 | + [attr.stroke-dasharray]="options.lineStyle.dashArrays.get(d[0])"/> |
| 1148 | + </svg>{{d[1]}} |
| 1149 | + </mat-option> |
1139 | 1150 | } |
1140 | 1151 | </mat-select> |
1141 | 1152 | </mat-form-field> |
|
1174 | 1185 | </div> |
1175 | 1186 | </div> |
1176 | 1187 | <div class="setting-card-row" style="padding-bottom: 6px; align-items: center; gap: 12px; flex-wrap: wrap"> |
1177 | | - <div style="flex: 0 0 auto; font-size: 0.85em; min-width: 140px">Other Vessel Track Style:</div> |
1178 | | - <label style="font-size: 0.8em">Color</label> |
1179 | | - <input type="color" |
1180 | | - [(ngModel)]="facade.settings.vessels.aisTrackStyle.color" |
1181 | | - (change)="persistModel()" |
1182 | | - style="width: 40px; height: 28px; padding: 2px; cursor: pointer; border: none" |
1183 | | - > |
| 1188 | + <div style="flex: 0 0 auto; min-width: 140px">Other Vessel Track Style:</div> |
1184 | 1189 | <mat-form-field style="width: 70px"> |
| 1190 | + <mat-label>Color</mat-label> |
| 1191 | + <input matInput type="color" |
| 1192 | + [(ngModel)]="facade.settings.vessels.aisTrackStyle.color" |
| 1193 | + (change)="persistModel()" |
| 1194 | + style="cursor: pointer; padding: 0; height: 24px" |
| 1195 | + > |
| 1196 | + </mat-form-field> |
| 1197 | + <mat-form-field style="width: 80px"> |
1185 | 1198 | <mat-label>Width</mat-label> |
1186 | 1199 | <input matInput type="number" min="1" max="10" |
1187 | 1200 | [(ngModel)]="facade.settings.vessels.aisTrackStyle.width" |
1188 | 1201 | (change)="persistModel()" |
1189 | 1202 | > |
1190 | 1203 | </mat-form-field> |
1191 | | - <mat-form-field style="width: 130px"> |
| 1204 | + <mat-form-field style="width: 200px"> |
1192 | 1205 | <mat-label>Pattern</mat-label> |
1193 | 1206 | <mat-select |
1194 | 1207 | [(ngModel)]="facade.settings.vessels.aisTrackStyle.dash" |
1195 | 1208 | (selectionChange)="persistModel()" |
1196 | 1209 | > |
1197 | 1210 | @for(d of options.lineStyle.dashPatterns; track d[0]) { |
1198 | | - <mat-option [value]="d[0]">{{d[1]}}</mat-option> |
| 1211 | + <mat-option [value]="d[0]"> |
| 1212 | + <svg width="48" height="10" style="vertical-align: middle; margin-right: 6px"> |
| 1213 | + <line x1="0" y1="5" x2="48" y2="5" stroke="currentColor" stroke-width="2" |
| 1214 | + [attr.stroke-dasharray]="options.lineStyle.dashArrays.get(d[0])"/> |
| 1215 | + </svg>{{d[1]}} |
| 1216 | + </mat-option> |
1199 | 1217 | } |
1200 | 1218 | </mat-select> |
1201 | 1219 | </mat-form-field> |
|
0 commit comments