Как я могу стильные несогласованные строки? - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь сделать стильный красный цвет в каждой строке, которая не соответствует моим настройкам, но у меня почему-то не получается. Я пытался добавить if-else, но он не работает ни на этом. Как я могу это исправить? Я просто хочу сказать, если слова не совпадают, то красный цвет, если не зеленый, или что-то еще


$(document).ready( function () {
    var keywords = ['aslr', 'ida pro', 'gdb', 'windbg', 'immunity debugger', 'boofuzz', 'peach fuzzer', 'winafl', 'python', 'assembly', 'penetration testing', 'exploits', 'metasploit', 'metasploit framework', 'ethical hacker', 'pentest', 'computer security', 'hacking', 'oscp', 'osce', 'osee', 'penetration testing', 'offensive security', 'mitre att&ck', 'vulnerability research', 'vulnerability researcher', 'fuzzing', 'clang', 'llvm', 'address sanitizer', 'afl', 'fuzzers','penetration tester']
    var job_title = ['penetration tester','penetration testing', 'offensive security', 'vulnerability researcher','software','security','developer','ethical hacker','cyberSécurité','threat','it Security','application security','information security','security engineer','product security','cyber security','software engineer','security analyst','consultant cyber sécurité','ingénieur cybersécurité','penetration test consultant','Penetrationstestare']
    var table = $('#example').DataTable({
        responsive: true,
        "ajax": {
            "url": "/index_get_data",
            "dataType": "json",
            "dataSrc": "jobs",
            "contentType":"application/json"
        },
        columnDefs: [{
            targets: 0,
            render: function (data) {
              if (job_title.some(word => data.includes(word)))
                return data
              else
                return data
            }
        },{
            targets: 4,
            render: function (data) {
              if (keywords.some(word => data.includes(word)))
                return "<span class='label label-success'>FOUND</span>";
              else 
                return  "<span class='label label-danger'>NOT_FOUND</span>";

            }
        },{
          targets: 5,
            render: function (data) {
                return '<a href="'+data+'">Link</a>'
            }
        }],
        "columns": [
            {"data": "job_title"},
            {"data": "company"},
            {"data": "city"},
            {"data": "date"},
            {"data": "job_description"},
            {"data": "url"},
        ],
        rowCallback: function( row, data ) {
          let matches = 0;
          for (var i = 0; i < job_title.length; i += 1) {
            if (data.job_title.indexOf(job_title[i]) == -1) {
              matches++;
            }else{
              $(row).css({
                    'background-color': '#dff0d8'
                });
            }
          }
        }
    });
    setInterval( function () {
        table.ajax.reload( null, false );
    }, 30000 );
} );
if(matches){
  ... 
}else{
  ...
}```

1 Ответ

0 голосов
/ 17 октября 2019

Попробуйте использовать CreateRow , функцию

var matches = [];

createdRow:function( row, data, dataIndex ) {
    matches[dataindex] = 0;
    for (var i = 0; i < job_title.length; i += 1) {
        if (data.job_title.indexOf(job_title[i]) == -1) {
            matches[dataindex]++;
        }else{
            $(row).css({
                'background-color': '#dff0d8'
            });
        }
    }
}

, если хотите, чтобы if condition выполнялся после загрузки данных, поэтому вы должны использовать drawCallback

"drawCallback": function( settings ) {
   //if(matches[index]).....
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...