Загрузка содержимого из папки библиотеки SharePoint по дате создания на веб-странице с использованием Javascript - PullRequest
0 голосов
/ 08 марта 2020

Я работаю с SharePoint и могу загружать контент из библиотеки и отображать его на веб-странице в виде ссылки, используя REST API. Я нашел способ упорядочить содержимое в том порядке, в котором документы загружаются в папку к «дате создания», отображая последний загруженный элемент сверху. Однако я чувствую, что есть более эффективный способ выполнить это действие. Сценарий, который я взломал вместе, похоже, иногда срабатывает. Иногда это может показаться не по порядку, но когда я обновлю браузер sh, он вернет его в элементах в последовательности желаний. Ниже приведен код, который я использую для выполнения sh этой задачи. Если есть лучший способ выполнить это действие, мы будем очень благодарны.

<ul id="column1">
    <h2 id="newsletter"><img style="width: 40px; position: relative; right: 5px; top: 7px;" src="../SiteAssets/SitePages/Test Page/icons/DCSA_Portal_Newsletter.svg" alt="logo">Newsletter<img id="arrow1" src="../SiteAssets/SitePages/Test Page/icons/arrow.png" alt="logo"></h2>
    <ol></ol>
</ul>

getFilesFromFolder("/sites/dcsa/ep/epMainFiles/News/Newsletter").done(function(data) {
    $.each(data.d.results, function(i, item) {

        var spDate = new Date(item.TimeCreated.split('T')[0]) //example: '2015-10-30T05:00:00Z'
        var newTillDate = new Date();
      spDate.setDate(spDate.getDate() + 5);

        if (spDate <= newTillDate) {

        $("#column1 ol").append('<li class="linkData newsletter" style="padding-left: 10px; padding-right: 10px;" data-date="' + item.TimeCreated.split('T')[0] + '"><a href="' + 'https://intelshare.intelink.gov' + item.ServerRelativeUrl + '" target="_blank">' + item.Name.replace(/\.[^/.]+$/, "") + " - " + '<span style="color: red;">' + item.TimeCreated.split('T')[0] + '</span>' + '</a></li>');

      } else {

         $("#column1 ol").append('<li class="linkData newsletter" style="padding-left: 10px; padding-right: 10px;" data-date="' + item.TimeCreated.split('T')[0] + '"><a href="' + 'https://intelshare.intelink.gov' + item.ServerRelativeUrl + '" target="_blank"><img class="newArrow" style="width: 60px; position: relative; right: 5px; top: 0px;"src="../SiteAssets/SitePages/Test Page/icons/arrow-with_new2.gif" alt="logo">' + item.Name.replace(/\.[^/.]+$/, "") + " - " + '<span style="color: red;">' + item.TimeCreated.split('T')[0] + '</span>' + '</a></li>');

     }
      col1_chgOrder();
    });
});

function col1_chgOrder() {
    var container = $("#column1 ol");
    var items = $("#column1 ol .linkData");

 items.each(function() {
     // Convert the string in 'data-event-date' attribute to a more
      // standardized date format
     var BCDate = $(this).attr("data-date");
     /*console.log(BCDate);
        var standardDate = BCDate[1]+" "+BCDate[0]+" "+BCDate[2];*/
     var standartDate = new Date(BCDate).getTime();
      $(this).attr("data-event-date", standartDate);
     //console.log(standartDate);
    });
 items.sort(function(a, b) {
        a = parseFloat($(a).attr("data-event-date"));
     b = parseFloat($(b).attr("data-event-date"));
        return a < b ? -1 : a > b ? 1 : 0;
    }).each(function() {
        container.prepend(this);
   });

}

function getFilesFromFolder(serverRelativeUrlToFolder) {
return $.ajax({
    url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/GetFolderByServerRelativeUrl('" + serverRelativeUrlToFolder + "')/files",
    method: "GET",
    async: false,
    headers: {
        "Accept": "application/json; odata=verbose"
    }
});
}

Ответы [ 2 ]

1 голос
/ 09 марта 2020

Вы можете включить фильтр orderby в URL-адрес конечной точки API, а не выполнять сортировку после получения ответа.

url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/GetFolderByServerRelativeUrl('" + serverRelativeUrlToFolder + "')/files?&$orderby=Created desc

т.е. вам не нужно использовать функцию col1_chgOrder(), поскольку API вернет файлы, уже отсортированные по этому параметру

0 голосов
/ 09 марта 2020

Используйте Jsom для получения файлов по запросу caml с порядком.

<script type="text/javascript">
    $(function () {
        ExecuteOrDelayUntilScriptLoaded(retrieveFiles, "sp.js");
    })
    function retrieveFiles() {
        var ctx = SP.ClientContext.get_current();
        var docLib = ctx.get_web().get_lists().getByTitle("MyDoc");
        var camlQuery = new SP.CamlQuery();
        camlQuery.set_viewXml(
            "<View Scope='RecursiveAll'><Query><OrderBy><FieldRef Name=\"Created\" Ascending=\"False\"/></OrderBy></Query></View>");
        camlQuery.set_folderServerRelativeUrl("/MyDoc/FolderA"); 
        var Files = docLib.getItems(camlQuery);
        ctx.load(Files);
        ctx.executeQueryAsync(Function.createDelegate(this, function () {
            var listItemEnumerator = Files.getEnumerator();
            while (listItemEnumerator.moveNext()) {
                var oListItem = listItemEnumerator.get_current();
                alert(oListItem.get_id());
            }
        }), Function.createDelegate(this, function () {
            alert('error');
        }));
    }
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...