from django import forms 
from django.forms import ValidationError
from .models import Dataset

class newDatasetForm(forms.ModelForm):
    class Meta:
        model = Dataset
        fields = ('name','manuscript','download','species','anatomicalPosition','selectedCells','dataType','age','description','species','sex','analyzer','principleInvestigator', 'data','cellTypeImage','hidden','multiImage','cellTypeImage2')
        #fields = ('name','manuscript','species','anatomicalPosition','selectedCells','dataType','ageNumber','ageType','description','species','sex','analyzer','principleInvestigator', 'data','rawData','cellTypeImage','hidden')
        widgets = {
            'name': forms.TextInput(attrs={
                'class': 'form-box'
            }),
            'manuscript': forms.Textarea(attrs={
                'class': 'form-box',
                'style':'resize:none'
            }),
            'download': forms.Textarea(attrs={
                'class': 'form-box',
                'style':'resize:none'
            }),
            'species': forms.TextInput(attrs={
                'class': 'form-box'
            }),
            'anatomicalPosition': forms.TextInput(attrs={
                'class': 'form-box'
            }),
            'selectedCells': forms.TextInput(attrs={
                'class': 'form-box'
            }),
            'dataType': forms.TextInput(attrs={
                'class': 'form-box'
            }),            
            'age': forms.TextInput(attrs={
                'class': 'form-box'
            }),
            # 'ageNumber': forms.TextInput(attrs={
            #     'class': 'form-box'
            # }), 
            'sex': forms.Select(attrs={
                'class': 'form-box'
            }), 
            'analyzer': forms.TextInput(attrs={
                'class': 'form-box'
            }),
            'principleInvestigator': forms.TextInput(attrs={
                'class': 'form-box'
            }),
            'data': forms.FileInput(attrs={
                'class': 'form-box'
            }),
            # 'rawData': forms.FileInput(attrs={
            #     'class': 'form-box'
            # }),
            'description': forms.Textarea(attrs={
                'class': 'form-box',
                'style':'resize:none'
            }),
            'cellTypeImage': forms.FileInput(attrs={
                'class': 'form-box'
            }),
            'hidden': forms.CheckboxInput(attrs={
                'class': 'form-box'
            }),
            'multiImage': forms.CheckboxInput(attrs={
                'class': 'form-box'
            }),
            'cellTypeImage2': forms.FileInput(attrs={
                'class': 'form-box'
            }),
        }

    def clean(self):
        cleaned_data = super().clean()
        multiImage = cleaned_data.get('multiImage')
        cellTypeImage2 = cleaned_data.get('cellTypeImage2')

        if multiImage and not cellTypeImage2:
            self.add_error('cellTypeImage2', 'This field is required when MultiImage is selected.')

        return cleaned_data

class EditDatasetForm(forms.ModelForm):
    class Meta:
        model = Dataset
        fields = ('name', 'description', 'data',)
        widgets = {
            'name': forms.TextInput(attrs={
                'class': 'edit-box'
            }),
            'description': forms.Textarea(attrs={
                'class': 'edit-box'
            }),
        }
class LabelForm(forms.Form):
    label = forms.CharField(
        max_length=100,
        widget=forms.TextInput(attrs={
            'autocomplete': 'off',
            'placeholder': 'Label Cluster',
            'class': 'form-box'
        })
    )
    color = forms.CharField(
        max_length=7,
        widget=forms.TextInput(attrs={
            'autocomplete': 'off',
            'type': 'color',
            'class': 'form-box'
        })
    )


class ColorForm(forms.Form):
    color = forms.CharField(
        widget=forms.TextInput(attrs={
            'type': 'color'
        })
    )



class SearchForm(forms.Form):
    query = forms.CharField(
        max_length=100,
        widget=forms.TextInput(attrs={
            'placeholder': 'Search',
            'class': 'form-box',
            'value': 'Lef1',
    
        })
    )

    def clean_query(self):
        query = self.cleaned_data['query']
        # Convert the query to the desired format (e.g., first letter capitalized, rest lowercase)
        query = query.capitalize()
        return query