generateHtmlFromDifferences function

String generateHtmlFromDifferences(
  1. String objectNname,
  2. List<Pair<GeneratedMessage, GeneratedMessage>> messagePairs
)

Implementation

String generateHtmlFromDifferences(String objectNname,
    List<Pair<GeneratedMessage, GeneratedMessage>> messagePairs) {
  final buffer = StringBuffer();
  buffer.writeln('<!DOCTYPE html>');
  buffer.writeln('<html lang="en">');
  buffer.writeln('<head>');
  buffer.writeln('<meta charset="UTF-8">');
  buffer.writeln(
      '<meta name="viewport" content="width=device-width, initial-scale=1.0">');
  buffer.writeln('<title>Weebi Sync Local vs Cloud</title>');
  buffer.writeln('<style>');
  buffer.writeln(
      'table { width: 100%; border-collapse: collapse; margin-bottom: 20px; }');
  buffer.writeln('th, td { border: 1px solid #ddd; padding: 8px; }');
  buffer.writeln('th { background-color: #f2f2f2; text-align: left; }');
  buffer.writeln(
      'pre { background-color: #f9f9f9; padding: 10px; border: 1px solid #ddd; overflow-x: auto; }');
  buffer.writeln('</style>');
  buffer.writeln('</head>');
  buffer.writeln('<body>');
  buffer.writeln('<h1>Comparaison</h1>');

  for (var i = 0; i < messagePairs.length; i++) {
    final message1 = messagePairs[i].first;
    final message2 = messagePairs[i].second;
    final differences = compareMessages(message1, message2);

    if (differences.isNotEmpty) {
      buffer.writeln('<h2>${objectNname} id: ${message1.getField(1)}</h2>');
      buffer.writeln('<table>');
      buffer.writeln('<tr><th>Champs</th><th>Local</th><th>Cloud</th></tr>');

      for (final difference in differences) {
        print('difference.localValue');
        print(difference.localValue);
        buffer.writeln('<tr>');
        buffer.writeln('<td>${difference.fieldName}</td>');
        buffer.writeln(difference.localValue is PbList
            ? '<td><pre>${difference.localValue.join("\n")}</pre></td>'
            : '<td>${difference.localValue}</td>');
        buffer.writeln(difference.cloudValue is PbList
            ? '<td><pre>${difference.cloudValue.join("\n")}</pre></td>'
            : '<td>${difference.cloudValue}</td>');
        buffer.writeln('</tr>');
      }

      buffer.writeln('</table>');
    }
  }

  buffer.writeln('</body>');
  buffer.writeln('</html>');

  return buffer.toString();
}