export type VitruvioComponentDoc = {
   component: string;
   summary: string;
   status: "draft" | "review" | "ready";
   context: {
      module: string;
      family: string;
      mappedFrom: string[];
      occurrences: {
         total: number;
         paineis: number;
         processos: number;
      };
   };
   sections: {
      purpose: string;
      basicUsage: string;
      properties: string[];
      propertyValues: { [property: string]: string[] };
      propertyValueTypes: { [property: string]: "boolean" | "enum" | "numeric" | "text" | "mixed" };
      events: string[];
      examples: string[];
      notes: string[];
   };
};

const DateFieldDoc: VitruvioComponentDoc = {
   component: "DateField",
   summary: "Documentacao do componente DateField mapeada a partir de exemplos reais de XML.",
   status: "draft",
   context: {
      module: "Vitruvio",
      family: "EntradaDeDados",
      mappedFrom: ["Vitruvio/Paineis", "Vitruvio/Processos"],
      occurrences: { total: 2197, paineis: 1598, processos: 599 }
   },
   sections: {
      purpose: "Componente de captura e edicao de dados em formularios e filtros.",
      basicUsage: "Usar DateField no contexto adequado da tela; as propriedades abaixo foram observadas em exemplos reais do projeto.",
      properties: [
         "align",
         "caption",
         "description",
         "editDisposition",
         "enabled",
         "expandRatio",
         "format",
         "id",
         "immediate",
         "readOnly",
         "required",
         "requiredMessage",
         "resolution",
         "spacing",
         "truncDateByResolution",
         "type",
         "updatable",
         "visible",
         "width"
      ],
      propertyValues: {
         "align": ["BOTTOM_LEFT", "BOTTOM_RIGHT", "MIDDLE_CENTER", "MIDDLE_LEFT", "MIDDLE_RIGHT", "TOP_CENTER", "TOP_LEFT", "TOP_RIGHT"],
         "caption": [" Até", " Data Abertura - Final ", " Data Abertura - Inicio ", " De", " Final ", " Inicio ", "1º - Período Final", "1º - Período Inicial", "2º - Período Final", "2º - Período Inicial", "A partir de", "Aberto a partir de", "Abertura da Pasta", "Admissão", "Ano", "__TRUNCADO__"],
         "description": ["Atribui data limite para amostragem dos resultados", "Atribui data singular/inicial para amostragem dos resultados", "Data da ultima apuração realizada", "Data de atualização da Normativa", "Data de emissão da conta!", "Data de finalização da promoção", "Data de finalização do contrato", "Data de inicio da promoção", "Data de inicio do contrato", "Data de início vigência do contrato.", "Data de referência da contagem", "Data de término vigência do contrato.", "Data de vencimento da conta!", "Data do dia cheio", "Data do dia da folga compensatória", "__TRUNCADO__"],
         "editDisposition": ["MODAL"],
         "enabled": ["false", "true"],
         "expandRatio": [".1", ".15", ".2", ".25", ".3", ".4", ".5", ".6", ".75", ".8", "0", "0.0", "0.07", "0.1", "0.15", "__TRUNCADO__"],
         "format": ["dd/MM/yy", "dd/MM/yyyy", "dd/MM/yyyy HH:00", "dd/MM/yyyy HH:mm", "dd/MM/yyyy hh:mm", "dd/MM/yyyy HH:mm:ss", "dd/MM/yyyy hh:mm:ss", "HH:mm", "HH:mm dd/MM/yyyy", "MM/yyyy", "yyyy"],
         "id": ["abre", "ano", "ativacao", "bloqueioFinal", "bloqueioInicial", "competencia", "competencia_novo", "COMPETENCIA_WIN", "competenciaFin", "contrato_vigenciafim", "criacao", "Data", "data", "DATA", "Data1", "__TRUNCADO__"],
         "immediate": ["false", "true"],
         "readOnly": ["true"],
         "required": ["false", "true"],
         "requiredMessage": ["Necessário informar data limite para a compra.", "É obrigatório informar uma data Final", "É obrigatório informar uma data inicial"],
         "resolution": ["DAY", "HOUR", "MINUTE", "MONTH", "YEAR"],
         "spacing": ["true"],
         "truncDateByResolution": ["false"],
         "type": ["date", "number", "string"],
         "updatable": ["true"],
         "visible": ["false", "true"],
         "width": ["10%", "100%", "110px", "125", "125px", "140px", "150px", "155px", "160px", "20%", "200px", "25%", "30%", "35%", "40%", "__TRUNCADO__"]
      },
      propertyValueTypes: {
         "align": "enum",
         "caption": "text",
         "description": "text",
         "editDisposition": "enum",
         "enabled": "boolean",
         "expandRatio": "text",
         "format": "mixed",
         "id": "text",
         "immediate": "boolean",
         "readOnly": "boolean",
         "required": "boolean",
         "requiredMessage": "text",
         "resolution": "enum",
         "spacing": "boolean",
         "truncDateByResolution": "boolean",
         "type": "enum",
         "updatable": "boolean",
         "visible": "boolean",
         "width": "numeric"
      },
      events: [

      ],
      examples: [
         "Vitruvio/Paineis/imp - Pônica - aux - Ações(Previsão_Real).xml:373",
         "Vitruvio/Paineis/imp - Pônica - aux - Ações(Previsão_Real).xml:375",
         "Vitruvio/Paineis/imp - Pônica - aux - Ações(Previsão_Real).xml:377",
         "Vitruvio/Paineis/Impressão de etiqueta LJ06 WS.xml:462",
         "Vitruvio/Paineis/Impressão de etiqueta LJ06 WS.xml:490",
         "Vitruvio/Paineis/Cadastro - Metas.xml:197",
         "Vitruvio/Paineis/Cadastro - Metas.xml:500",
         "Vitruvio/Paineis/Kanban - Cadastro de Projetos.xml:486",
         "Vitruvio/Paineis/Kanban - Cadastro de Projetos.xml:487",
         "Vitruvio/Paineis/Kanban - Cadastro de Projetos.xml:488",
         "Vitruvio/Paineis/Kanban - Cadastro de Projetos.xml:489",
         "Vitruvio/Paineis/Kanban - Cadastro de Projetos.xml:490"
      ],
      notes: [
         "Mapeamento automatico baseado em uso observado nos XMLs de paineis e processos.",
         "Valores ruidosos/textos muito longos sao filtrados para facilitar consulta.",
         "propertyValueTypes classifica o perfil observado da propriedade (boolean, enum, numeric, text ou mixed).",
         "Validar com documentacao oficial do Vitruvio quando houver divergencia funcional."
      ]
   }
};

export default DateFieldDoc;
