* Insert the required TR nodes into the table for display * @param {object} oSettings dataTables settings object * @param ajaxComplete true after ajax call to complete rendering * @memberof DataTable#oApi
(oSettings, ajaxComplete)
| 3135 | * @memberof DataTable#oApi |
| 3136 | */ |
| 3137 | function _fnDraw(oSettings, ajaxComplete) { |
| 3138 | // Allow for state saving and a custom start position |
| 3139 | _fnStart(oSettings) |
| 3140 | |
| 3141 | /* Provide a pre-callback function which can be used to cancel the draw is false is returned */ |
| 3142 | var aPreDraw = _fnCallbackFire(oSettings, "aoPreDrawCallback", "preDraw", [oSettings]) |
| 3143 | if (aPreDraw.indexOf(false) !== -1) { |
| 3144 | _fnProcessingDisplay(oSettings, false) |
| 3145 | return |
| 3146 | } |
| 3147 | |
| 3148 | var anRows = [] |
| 3149 | var iRowCount = 0 |
| 3150 | var bServerSide = _fnDataSource(oSettings) == "ssp" |
| 3151 | var aiDisplay = oSettings.aiDisplay |
| 3152 | var iDisplayStart = oSettings._iDisplayStart |
| 3153 | var iDisplayEnd = oSettings.fnDisplayEnd() |
| 3154 | var columns = oSettings.aoColumns |
| 3155 | var body = $(oSettings.nTBody) |
| 3156 | |
| 3157 | oSettings.bDrawing = true |
| 3158 | |
| 3159 | /* Server-side processing draw intercept */ |
| 3160 | if (oSettings.deferLoading) { |
| 3161 | oSettings.deferLoading = false |
| 3162 | oSettings.iDraw++ |
| 3163 | _fnProcessingDisplay(oSettings, false) |
| 3164 | } else if (!bServerSide) { |
| 3165 | oSettings.iDraw++ |
| 3166 | } else if (!oSettings.bDestroying && !ajaxComplete) { |
| 3167 | // Show loading message for server-side processing |
| 3168 | if (oSettings.iDraw === 0) { |
| 3169 | body.empty().append(_emptyRow(oSettings)) |
| 3170 | } |
| 3171 | |
| 3172 | _fnAjaxUpdate(oSettings) |
| 3173 | return |
| 3174 | } |
| 3175 | |
| 3176 | if (aiDisplay.length !== 0) { |
| 3177 | var iStart = bServerSide ? 0 : iDisplayStart |
| 3178 | var iEnd = bServerSide ? oSettings.aoData.length : iDisplayEnd |
| 3179 | |
| 3180 | for (var j = iStart; j < iEnd; j++) { |
| 3181 | var iDataIndex = aiDisplay[j] |
| 3182 | var aoData = oSettings.aoData[iDataIndex] |
| 3183 | if (aoData.nTr === null) { |
| 3184 | _fnCreateTr(oSettings, iDataIndex) |
| 3185 | } |
| 3186 | |
| 3187 | var nRow = aoData.nTr |
| 3188 | |
| 3189 | // Add various classes as needed |
| 3190 | for (var i = 0; i < columns.length; i++) { |
| 3191 | var col = columns[i] |
| 3192 | var td = aoData.anCells[i] |
| 3193 | |
| 3194 | _addClass(td, _ext.type.className[col.sType]) // auto class |
no test coverage detected