Список Sharepoint 2013 - как условно раскрасить java сценарий вычисляемых полей в списке sharepoint? - PullRequest
0 голосов
/ 04 мая 2020

У меня есть сценарий, над которым я работаю в списке Sharepoint 2013, он принципиально проверяет некоторые критерии по списку и возвращает «Ожидание», «Завершено», «Просрочено» или «Отсутствует срок исполнения».

Чтобы проверить текущую дату, я использовал найденный в сети сценарий Java и изменил его для работы со своим списком. Единственная проблема заключается в том, что я также пытаюсь раскрасить текст:

Красный, если значение «Просрочено»

Зеленый, если значение «Завершено»

черный для всех остальных случаев.

Код возвращает значения правильно и цвета «Завершено» зеленого цвета, но я не могу получить значения «Просрочено» для красного цвета.

Вот мой код:

="<div style='text-align:left; color:"

&IF([Completed Date]="",""

&"<img src='/_layouts/images/blank.gif' onload=""{"

&"var SPday=new Date();"

&"SPday.setFullYear("&YEAR(DueDate)&","&MONTH(DueDate)-1&","&DAY(DueDate)&");"

&"var Days=Math.round((SPday.getTime()-new Date().getTime())/86400000);"

&"this.parentNode.innerHTML=((Days<0)?'red':'black');"

&"}"""

&"","green")

&"'>"



&IF([Completed Date]="",IF(ISBLANK(DueDate),"Missing Due date","<img src='/_layouts/images/blank.gif' onload=""{"

&"var SPday=new Date();"&"SPday.setFullYear("&YEAR(DueDate)&","&MONTH(DueDate)-1&","&DAY(DueDate)&");"

&"var Days=Math.round((SPday.getTime()-new Date().getTime())/86400000);"

&"this.parentNode.innerHTML=((Days<0)?'Overdue':'Pending');"

&"}"">"),"Complete")

&"</div>" 

Можно ли это сделать таким образом или я должен попробовать другой способ?

1 Ответ

0 голосов
/ 05 мая 2020

Для таких сложных логи c лучше использовать CSR.

(function () {
    'use strict';

    var CustomCtx = {};

    /**
     * Initialization
     */
    function init() {

        CustomCtx.Templates = {};

        CustomCtx.Templates.Fields = {
            // update ChangeCompleted as your filed static name
            'ChangeCompleted': {
                'View': customDisplay
            }
        };

        // Register the custom template
        SPClientTemplates.TemplateManager.RegisterTemplateOverrides(CustomCtx);
    }

    /**
     * Rendering template
     */
    function customDisplay(ctx) {
        //your logic here
    }   

    // Run our intiialization
    init();

})();

Ссылки для справки.

https://social.msdn.microsoft.com/Forums/office/en-US/154c3ed9-9e22-4fda-aba2-b7b12cc4a509/changing-text-color-in-sharepoint-based-on-column-value?forum=sharepointdevelopment

https://www.codeproject.com/Articles/620110/SharePoint-Client-Side-Rendering-List-Views

...