Як вказати людей як область пошуку / Джерела вмісту за допомогою SharePoint 2013 REST API

Я була причина, щоб працювати з SharePoint 2013 API пошуку через відпочинок в перший раз. Я хотів би шукати людей, не документів. Ключ, навчання, тут є те, що ви вказати джерела вмісту через його GUID (або, по крайней мере, в цьому випадку). Наступний фрагмент шоу jQuery як:

    loadExpertsAsync: функція() {

        jQuery.support.cors = Істина;

        $.AJAX({
            URL-адреса: Це.CreateFullApiUrl() +
                "?querytext = 'портали'&вихідного коду = "b09a7990-05ea-4af9-81ef-edfab16c4e31"" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Навички,AboutMe,Інтереси,JobTitle,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&RowLimit = 99",
            метод: "ОТРИМАТИ",
            заголовки: { "Прийняти": "застосування/json; odata = verbose" },
            кеш: ХИБНІСТЬ,
            успіх: функція (Результат) {

У моєму випадку, Я біжу API проти SharePoint онлайн. Щоб отримати ідентифікатор GUID, Я після цих кроків:

  1. Доступ до центру адміністрування SharePoint
  2. Виберіть "Пошук" з лівою рукою навігації
  3. Виберіть опцію "Впорядкувати результат джерела"
  4. Виберіть "Місцевих жителів результати"
  5. Подивіться на URL-адресу.

Мій URL виглядав таким:

https://xyzzy-admin.sharepoint.com/_layouts/15/searchadmin/EditResultSource.aspx?level=tenant&sourceid=b09a7990%2D05ea%2D4af9%2D81ef%2Dedfab16c4e31&view=1

Параметр вихідного коду є те, що працював для мене.

(Я розумію, що вихідного коду фактично може бути свого роду константа одна з СП, але я завжди буду перевіряти все одно 🙂 ).

</кінець>

undefinedПідписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin

Приклад SharePoint відпочинку дзвінки

Ось набір зразків відпочинку викликів, які робота для мене і може допомогти вам, а. Станом на 02/2014, Є два приклади 🙂

  1. Посилання стовпець із пробілами в імені
  2. Посилання множинного вибору стовпців
  3. Виконувати Пошук людей через відпочинку

 

Я додам до цього, як час проходить.

Ось деякі корисні фарб, я виявив, а також:

Посилання стовпець із пробілами в імені

Я створити Настроюваний список з стовпець з іменем "Блог автора" (простір між блогу і автор).

Є $select для посилання цього стовпця:

image

Просто замініть простір з "_x0020_". Ми бачимо _x0020_ у багатьох прикладах через Інтернет і відпочинку, нічим не відрізняється.

Якщо ви не зробите, Ви будете нести відповідальність, щоб отримати повідомлення про помилку, подібне:

Вираз “Автор блогу” неприпустимі.

Досить просто.

Посилання стовпець підстановки множинного вибору

Настроювання:

  1. Створити Настроюваний список ім'я категорії.
  2. Додати кілька категорій. Я додав категорії константи виглядає:image
  3. Створити ще один особливий список називається MockBlog і додати категорій як список із множинним стовпець (або сайту стовпця, якщо це, як ви викинули).

Додати деякі елементи до списку Mockblog, і ви готові.

Виклик стиль Ajax, використовуючи jQuery буде виглядати приблизно так:

serverUrl   = "/_api/web/списки/GetByTitle('MockBlog')/елементи" +
             "?$виберіть = заголовок,Категорії/назва,Blog_x0020_Author/назва" + 
             "&$Розгорніть = Blog_x0020_Author,Категорії";

Ми розповідаєте SharePoint "Дай назва для всіх категорій (Категорії/назва). Отримати фактичні значення для Назва на $Розгорнутиний список категорії». (Мій спокійного перефразовуючи є ймовірно досить вільно, але це те, як я перебуваю інтерпретації).

Якщо ви робите це за допомогою JavaScript і за допомогою скрипаль дивитися на виході, Ви отримаєте щось на зразок цього в обмін:

 

image

(Вище є об'єкт JSON)

Виконувати Пошук людей через відпочинку

Я blogged про це окремо. Ключ, щоб вказати параметр вихідного коду, значення якого є GUID Джерело вмісту місцеве населення. (Джерела вмісту раніше називали областей, і це my о my так важко не називати все рамки для мене!).

Дізнайтеся більше про це тут: http://www.mstechblogs.com/paul/?p=10385

 

</кінець>

undefinedПідписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin

Швидкий і простий: Створення сайту SharePoint за допомогою відпочинку

Є багато ресурсів навколо цього шоу, як це зробити, але я не міг знайти всеосяжний йти до посилання, так ми тут.

Ви можете створити сайт SharePoint за допомогою REST API.  Ось приклад повністю печена:

<!--
    SiteRequestForm.html: Збирати інформацію і створити сайт для користувача.
-->

<Центр>
<Таблиця>
    <TR>
        <TD>Ім'я сайту:</TD>
        <TD><Вхід тип= "текст" Ім’я= "Ім'я сайту" ID= "Ім'я сайту" /></TD>
    </TR>
    <TR>
        <TD ColSpan= "2">
            <Вхід тип= "надсилання" ID= "CreateSiteButton" значення= "Створити сайт" />
        </TD>
    </TR>
</Таблиця>
</Центр>

<сценарій НДЦ="../Plugins/Jquery-1.11.0.min.js"></сценарій>

<сценарій>
VAR CreateSiteLogicContainer = {

    createSiteData: {
            "Параметри": {
                __metadata: { "тип": "SP.WebInfoCreationInformation" },
                URL-адреса: "Paultest1",
                Назва: "Paultest1",
                Опис: "створив залишок веб-Пол!",
                Мова: 1033,
                WebTemplate: "СТС",
                UseUniquePermissions: ХИБНІСТЬ
            }
    },

    createSite: функція () {

        jQuery.support.cors = Істина;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").Валь();
        
        $.AJAX({
            URL-адреса: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            метод: "ПОСТ",

            заголовки: {
                «Прийняти": "застосування/json; odata = verbose",
                "content-type": "застосування/json;odata = verbose",
                «X-RequestDigest": $("#__REQUESTDIGEST").Валь()
            },

            дані: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            успіх: функція () { оповіщення("успіх"); },
            помилка: функція () { оповіщення("помилка"); }

        });
    },

    wireUpForm: функція () {
        $("#CreateSiteButton").натисніть кнопку(функція () {
            оповіщення("Близько щоб спробувати створити сайт.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</сценарій>

Коли успішного, Ви отримуєте пакет JSON у відповідь, як це:

image

Мої основні думки і learnings від цього включають:

  • Такий підхід використовує jQuery.  У моєму випадку, Моя бібліотека jQuery знаходиться в ".../ плагіни. "  Ви хочете, щоб змінити це, щоб на вашому улюбленому розташування JQ.
  • Можна скопіювати та вставити цей фрагмент всю в редактор вмісту веб-частини на сторінці, і він повинен працювати тільки штрафом.  Ви хочете змінити кінцеву точку виклику API і переконайтеся, що ви посилаєтеся JQ правильно.
  • URL-адреса є відносно кінцевої точки вашого API.  У моєму випадку, це створення дочірніх сайтів під https://bigapplesharepoint.com
  • Вам не потрібно надати довжину вмісту. Деякі повідомлення в блозі і MSDN документ має на увазі, що ви робите, але сталося для мене автоматично, який я припускаю, що притримуватися дзвінком $.ajax, самого.
  • Ця лінія необхідні для того, щоб уникнути "заборонених" відповідь: «X-RequestDigest": $("#__REQUESTDIGEST").Валь().  Є й інші способи це зробити, але це дуже приємно.  Я втратив посилання на блог, які надані цей ярлик.  H/T, щоб ви, таємничий blogger!

Удачі і сподіваємося, що це допоможе хтось.

</кінець>

undefinedПідписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin

Подолати дратує проблема з відносним URL-адреси в SharePoint швидкого запуску

Я хотів би додати посилання на швидкий запуск навігації днями і SharePoint сказав мені:

image

Це чисто текстової версії що:

Переконайтеся, що URL є дійсним і починається з або неприпустимий символ (знак номера (#) або скісна риска (/)) Чи дійсні підтримуваних протоколів (Наприклад, ' http://’, ' https://’, ' файлу://’, ' ftp://’, ' mailto:’, ' Новини:’).

"Блех і віспа!"Я сказав:.

Обхідний шлях для цього є використання JavaScript, щоб знайти відомої посилання в швидкий запуск і змінити свою поведінку.

Щоб перевірити це, додати нові посилання на ваш сайт тест константи виглядає:

image

Я використовував jQuery. Щоб вирішити цю проблему, отримати деякі JavaScript і jQuery фігуру на сторінку, використовуючи ваш улюблений техніки і лінія з таким кодом:

 

$(документ).готові( функція () {

    $("на:містить(Випробувань URL заміна)").натисніть кнопку(функція () { оповіщення("змінені натисніть поведінка!"); повернення ХИБНІСТЬ;});

});

Боб, а твій дядько.

JQuery селектор знаходить кожен <на> тег, який має "Тест URL заміна" в його назві. Ви можете знайти, налаштувати, залежно від вашого посилання і такі.

На .click(функція() скасовує будь-який інший SharePoint зробив би, якщо користувач натиснув. Переконайтеся, що ви "повернутися помилковим", інакше це зробити ваш матеріал а потім спробувати href річ занадто, який майже напевно не є ваша мета.

Це було зроблено і випробування в онлайн-середовищі SharePoint, але повинні добре працювати в 2010 а раніше теж.

</кінець>

undefinedПідписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin

Швидкий і простий: SharePoint відпочинку назвати лише повертається 100 Рекорди

Я працюю на громадських облицювальні веб-сайт для мого SharePoint практики тут, у Нью-Йорк і вона використовує багато JavaScript і РЕШТІ дзвінків для відображення вмісту.

Під час розробки шосейні, Тільки створити невеликий набір даних із 10 або так рядків у за настроюваним списком і мої дзвінки відпочинку витягнув звідти.  Одного разу я вдарився список мати кілька сотень рядки даних для очікуване зростання, Я виявив, що я отримував точно 100 рядків, які повернуто назад на мої дзвінки відпочинку.

Це дуже проста річ, щоб адреса.  У моєму випадку (і я вважаю, в більшості випадків), за промовчанням відпочинку закликає до SharePoint (і, можливо, як це промисловий стандарт?) повернення 100 рядки.  Щоб повернути більш ніж за замовчуванням, Скористайтеся параметром $top на ваш дзвінок, як і в:

ОТРИМАТИ /Insights Dev/_api/web/lists/GetByTitle('MockBlog')/елементи?$Виберіть = ID,Назва,Категорії/назва,Blog_x0020_Author/назва,DatePublished,BlogSummary&$Розгорніть = Blog_x0020_Author,Категорії&$Фільтр =&$Топ = 9999

Я вибрав 9999 При цьому з тих пір я знаю, що growth-wise, там не буде більше, ніж 200 або так рядки до цього переліку додано через рік.  Якщо з'ясується, незграбно, Ми можемо реалізувати деякі підкачки вниз по дорозі.

</кінець>

undefinedПідписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin

Швидкий і простий: Вирішити "неприпустиму URL-адресу параметра” проблема з UpdateListItems в lists.asmx

Під час роботи з UpdateListItems через lists.asmx, легко генерувати помилки:

Неприпустима URL-адреса параметра.

Надана URL-адреса містить неприпустимі команди або значення. Будь ласка, перевірте URL знову.

Ця помилка може статись, коли ви забули включити код у у списку полів для оновлення.  Це, як багато з цих SP веб-служб, Це трохи контрінтуітівним, оскільки вам необхідно включити Ідентифікатор атрибута ID на <Метод> елемент.  І ви не оновлюється ID і мабуть, ніколи не хочете, щоб в першу чергу.

Ця мила конверт робіт:

<soapenv:Конверт xmlns:soapenv =' http://schemas.xmlsoap.org/SOAP/envelope/'>
  <soapenv:Тіло>                      
    <UpdateListItems xmlns =' http://schemas.Microsoft.com/SharePoint/SOAP/'>                     
      <listName>{C712E2EA-54E1-47AD-9D99-1848C7773E2F}</listName>                     
        <оновлення>                     
         <Пакетна OnError ="Продовжити">
          <Метод ID ="1" Cmd ="Оновлення">
            <Поле ім'я ="CooperativeLock">заблокований!</Поле>
            <Поле ім'я ="ІДЕНТИФІКАТОР">1</Поле>
          </Метод>
        </Пакетний>                     
        </оновлення>                
      </UpdateListItems>             
  </soapenv:Тіло>         
</soapenv:Конверт>

Якщо ви смуги на посилання на поле ID то ви отримаєте дратівливі повідомлення "Неправильний URL параметр".

</кінець>

undefinedПідписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin

 

Бідна людина в кешування в JavaScript

[TL;DR версії: використовує кукі для зберігання результатів async дзвінків; візуалізації результатів останніх async дзвінків негайно а потім підтвердити їх після завантаження сторінки.]

Я працюю на intranet-сайті SharePoint для клієнта цієї функції, серед іншого, стилізований другорядного меню, чиї параметри меню керування через регулярні старі настроюваним списком.  Ідея полягає в тому, що клієнт одержує управління меню "своїх" сайт без зачіпають або під впливом глобальної навігації, згасити його.

(Існує щось неймовірно підривних про додавання CEWP, що вказує на файл HTML, який завантажує деякі CSS і JS докорінно змінити характер майже все про поведінку сайту..., але це на іншій посаді)

Код для цього дуже проста:

  • Чекати сторінку для завантаження і зробити async, зателефонуйте завантажувати до пунктів меню зі списку за допомогою відпочинку або lists.asmx або будь-який інший
  • Використання jQuery, динамічно заповнення букет, якщо <Лі>у всередині батьків <ul> (у Піндер християнський статті тут спрощене пояснення цього tecnnique)
  • Робити все форматування за допомогою CSS
  • Прибуток!

Хворе місце тут в тому, що кожного разу, коли хтось потрапляє одним із сторінки сайту, Цей користувач веб-браузер простягає руку отримати елементи зі списку.  Після того, як dev є повним і тестування довела речей, щоб бути стабільною і повний, цей заклик не є необхідним більше, ніж 99% часу, оскільки у меню рідко змінюється.  До нього дивні афекту користувальницький інтерфейс, який є спільним в цьому прекрасному новому світі гіпер ajaxy веб-сайтів-сторінка надає, і тільки потім меню візуалізації.  Це нервовий і відволікає, на мій погляд.  І нервовий. Так, кешування. 

Я змінив логіка константи виглядає:

  • Знайдіть файл cookie у веб-переглядачі, що містить меню, як я останній раз читав його
    • Якщо знайдено, зробити його негайно.  Чи не чекайте, сторінки завантаження.  (Ви повинні переконатися, що ваш HTML стратегічно розташованих тут, але це не важко зробити).
  • Чекати сторінку для завантаження і зробити async, зателефонуйте завантажувати до пунктів меню зі списку за допомогою відпочинку або lists.asmx або будь-який інший
  • Порівняти те, що я отримав від печива
    • Якщо він відповідає, Зупинити
    • В іншому випадку, використання jQuery, динамічно заповнення букет, якщо <Лі>в у в <ul>
  • Робити все форматування за допомогою CSS
  • Прибуток!

Деякі з ви збираєтеся сказати, "Ей! немає не реальних кешування тут відбувається так, як ви читаєте меню все одно кожен раз, коли.”  І ви маєте рацію-я не даю сервер будь-якого роду перерву.  Але тому що дзвінок async і відбувається після того, як сторінку від початкового Деструктивна HTML повністю надає, вона відчуває "себе" більш гнучкою для користувача.  Меню надає досить стільки, скільки сторінку малює.  Якщо меню відбувається до зміни, користувач піддається нервовий повторно перемальовувати меню, але що один раз.

Є кілька шляхів, щоб зробити цей кешування більш ефективним і допомогти на сервері в той же час:

  • Покласти в правило "куки кеш" дійсна протягом мінімум 24 годин або деякі інші терміни. Оскільки немає жоден файл cookie не прострочений, за допомогою файлу cookie, меню знімок і ніколи не потрапляють на сервері.

Добре..., що все, що спадає на думку прямо зараз :). 

Якщо хто має будь-які розумні ідеї тут я б із задоволенням їх знаємо.

І нарешті-ця техніка може бути використана для інших речей.  Цей клієнт сторінка має ряд динамічної речей на різних сторінках, багато хто з них відносно рідко змінюється (як раз на тиждень або раз на місяць).  Якщо ви націлюєте конкретних областях функціональності, можна надати більш гнучкою для користувача Інтерфейсу, потягнувши змісту з магазину місцевих печива й наданням негайно.  Вона відчуває себе швидше користувачеві навіть, якщо ви не записуєте сервер будь-якої циклів.  Ви можна зберегти сервер циклів, ухвалення рішення про деякі умовах і тригерів спростовувати кеш локальних файлів cookie.  Це все ситуаційні і претензійною речі і дійсно найвеселіше :). 

</кінець>

undefinedПідписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin

Як: Налаштувати Модульне тестування та тестування покриття з QUnit.js і Blanket.js для офісу 365 Застосунку SharePoint

Вступ

Я було вивчення Модульне тестування та тестування покриття для JavaScript, як я працюю над новим застосунку SharePoint для SharePoint онлайн, в офісі 365 Люкс.  Контури очевидні дослідження привели мене Qunit.js і після цього права, Щоб Blanket.js.

QUnit дозвольте мені встановити юніт-тестів і згрупувати їх на модулі.  Модуль — просто простий спосіб організування схожі тести. (Я не впевнений, я використовую його за призначенням, але вона працює для мене до цих пір з невеликий набір тестів, я до сих пір визначено).

Blanket.js інтегрується з Qunit і покаже мене фактичного ліній JavaScript, які були- і більш важливо – були не фактично виконані в ході працює тести.  Це «покриття»-ліній, які виконані покриваються тест, а інші ні.

Від створення хороші тести до перегляду покриття, Ми можемо зменшити ризик, що наш код має приховані дефекти.  Гарні часи.

Qunit

Припускаючи, що у вас Visual Studio проекту встановити, Почніть з завантаження JavaScript пакета від http://qunitjs.com.  Додати JavaScript і CSS відповідного на ваше рішення.  Шахта виглядає наступним чином:

image

Фігура 1

Як ви можете бачити, Я використовую 1.13.0 у той час я написав це повідомлення в блозі. Не забудьте завантажити й додати CSS-файл.

Що з на шляху, наступним кроком буде створити свого роду випробування упряжі і посилатися на біт Qunit.  Я тестування купу функції в сценарій файл з ім'ям "QuizUtil.js", так що я створив HTML-сторінку під назвою "QuizUtil_test.html", як показано:

image Фігура 2

Ось код:

<!DOCTYPE HTML>
<HTML xmlns= "http://www.w3.org/ 1999/xhtml">
<Голова>
    <Назва>QuizUtil тест з Qunit</Назва>
    <посилання REL= "таблиця стилів" href="../CSS/qunit-1.13.0.CSS" />
    <сценарій тип= текст/javascript"" НДЦ="QuizUtil.js" дані палітурці></сценарій>
    <скрипт типу ="текст/javascript" src ="qunit-1.13.0.js"></сценарій>
    <скрипт типу ="текст/javascript" src ="blanket.min.js"></сценарій>

    <сценарій>
        модуль("getIDFromLookup");
        тест("QuizUtil getIDFromLookupField", функція () {
            VAR goodValue = "1;#Paul Galvin";

            Рівне(getIDFromLookupField(goodValue) + 1, 2), "Ідентифікатор [" + goodValue + "] + 1 повинно бути 2";
            Рівне(getIDFromLookupField(не визначено), не визначено, "Невизначений вхідного аргументу слід повернути undefined результат.");
            Рівне(getIDFromLookupField(""), не визначено, "Порожні вхідного аргументу слід повернути невизначене значення.");
            Рівне(getIDFromLookupField("gobbledigood3-thq;dkvn Ада;skfja sdjfbvubvqrubqer0873407t534piutheqw;в. н."), не визначено,"Завжди прем'єр результат кабріолет на ціле число");
            Рівне(getIDFromLookupField("2;#деякі інші особи"), "2", "Перевірка [2;#деякі інші особи].");
            Рівне(getIDFromLookupField("9834524;#довгого вартість"), "9834524", "Велике значення тест.");
            notEqual(getIDFromLookupField("5;#хто-небудь", 6), 6, "Тестування на notEqual (5 Це не дорівнює 6 для цього зразка: [5;#хто-небудь]");

        });

        модуль("htmlEscape");
        тест("QuizUtil htmlEscape()", функція () {
            Рівне(htmlEscape("<"), "&lt;", "Втечі на менш ніж оператор ('<')");
            Рівне(htmlEscape("<DIV клас =  "someclass">Частина тексту</DIV>"), "&lt;DIV клас =&quot;SomeClass&quot;&gt;Частина тексту&lt;/DIV&gt;", "Більш складні тестовий рядок.");
        });

        модуль("getDateAsCaml");
        тест("QuizUtil getDateAsCaml()", функція () {
            Рівне(getDateAsCaml(нові Дата("12/31/2013")), "2013-12-31T:00:00:00", "Тестування жорстких закодованих дата: [12/31/2013]");
            Рівне(getDateAsCaml(нові Дата("01/05/2014")), "2014-01-05T:00:00:00", "Тестування жорстких закодованих дата: [01/05/2014]");
            Рівне(getDateAsCaml(нові Дата("01/31/2014")), "2014-01-31T:00:00:00", "Тестування жорстких закодованих дата: [01/31/2014]");
            Рівне(getTodayAsCaml(), getDateAsCaml(нові Дата()), "getTodayAsCaml() має дорівнювати getDateAsCaml(Нова дата())");
            Рівне(getDateAsCaml("дурниці значення"), не визначено, "Спробувати отримати дату дурниця значення.");
            Рівне(getDateAsCaml(не визначено), не визначено, "Спробуйте отримати дату на [не визначено] Дата.");
        });

        модуль("getParameterByName");
        тест("QuizUtil getParameterByName (від рядку запиту)", функція () {
            Рівне(getParameterByName(не визначено), не визначено, "Спробуйте отримати Невизначена параметр слід повернути невизначеною.");
            Рівне(getParameterByName("не існує"), не визначено, "Спробувати отримати значення параметра, коли ми знаємо, що не існує параметра.");

        });

        модуль(«Печиво");
        тест("QuizUtil різні функції cookie.", функція () {
            Рівне(setCookie("тест", "1", -1), getCookieValue("тест"), «Get я встановив cookie повинен працювати.");
            Рівне(setCookie("anycookie", "1", -1), Істина, "Налаштування дійсні приготування слід повернути значення" true".");
            Рівне(setCookie("crazy cookie ім'я !@#$%"%\^&*(()?/><.,", "1", -1), Істина, "Установка поганий cookie ім'я слід повернути"false".");
            Рівне(setCookie(не визначено, "1", -1), не визначено, "Проходження невизначене, як ім'я файлу cookie.");
            Рівне(getCookieValue("не існує"), "", "Cookie не існує тесту.");
        });

    </сценарій>
</Голова>
<тіло>
    <DIV ID= "qunit"></DIV>
    <DIV ID= "qunit арматур"></DIV>

</тіло>
</HTML>

Є кілька речей, що відбувається тут:

  1. Посилання на мій код (QuizUtil.js)
  2. Посилання на Qunity.js
  3. Визначення деяких модулів (getIDFromLookup, Печиво, та інші)
  4. Розміщення на <DIV> ID рівним "qunit".

Потім, Я просто підтягти цю сторінку, і ви отримаєте щось на зразок цього:

image

Фігура 3

Якщо ви подивіться через верхню, є кілька способів, дві з яких є цікавим:

  • Приховати пройшли випробування: Досить очевидно.  Може допомогти очі просто побачити проблемні області і не багато перешкод.
  • Модуль: (падіння вниз): Це буде фільтрувати тести аж до тільки ті груп випробувань, що ви хочете.

Що стосується тести, самі – кілька коментарів:

  • Само собою зрозуміло, що вам потрібно написати код, така, що це в першу чергу перевіряються.  За допомогою засобу можуть допомогти забезпечити дотримання цієї дисципліни. Наприклад, Я мав функції, яка називається "getTodayAsCaml()”.  Це не дуже перевіряються, оскільки необхідне немає вхідного аргументу і протестувати його за рівність, Ми повинні постійно оновлювати тестовим кодом з урахуванням поточної дати.  Я реструктурувати, шляхом додавання даних вхідний параметр потім проходить поточну дату, коли я хочу поточну дату у форматі CAML.
  • Qunit рамках документи свого випробування, і здається досить надійною.  Це можна зробити прості речі, як тестування за рівність і також має підтримку стилю ajax дзвінки ("реального" або mocked, використовуючи ваш улюблений насмішник).
  • Також проходять через процес змушує вас думати, через край випадках – що відбувається з "невизначені" або null передається в функції.  Це робить його мертва проста, щоб перевірити ці сценарії на.  Хороший матеріал.

Покриття з Blanket.js

Blanket.js доповнює Qunit шляхом відстеження фактичних рядків коду, що виконати в ході проведення тестів.  Вона інтегрує право в Qunit таким чином, навіть якщо це абсолютно окремий додаток, він грає красиво-дійсно схоже це один додаток безшовні.

Це blanket.js в дії:

image Фігура 4

image

Фігура 5

(Ви насправді мають натискати на прапорець "Увімкнути охоплення" у верхній [див. малюнок 3] Щоб увімкнути цю функцію.)

Виділені лінії на малюнку 5 не були виконані, будь-який з моїх тестах, тому необхідно розробити тест, що змушує їх виконання, якщо я хочу, щоб повне покриття.

Отримати blanket.js працює, виконавши такі дії.:

  1. Завантажити його з http://blanketjs.org/.
  2. Додати його до вашого проекту
  3. Оновити вашу пробну сторінку амуніція (QuizUtil_test.html в моєму випадку) наступним чином:
    1. Код посилання
    2. Прикрасити ваш <сценарій> посилання, як це:
    <сценарій тип= текст/javascript"" НДЦ="QuizUtil.js" дані палітурці></сценарій>

Blanket.js підбирає атрибут "даних палітурці" і робить свою магію.  Це гачки в Qunit, оновлює користувальницький інтерфейс, щоб додати параметр "Увімкнути охоплення" і вуаля!

Резюме (TL; Д-Р)

Використовувати Qunit, щоб написати ваш тести.

  • Завантажити його
  • Додати його до вашого проекту
  • Написати упряж тестової сторінки
  • Створення тестів
    • Деякі коду бути перевіряються рефакторінг
    • Будьте винахідливі!  Думаю, божевільні, неможливо сценарії та перевірити їх все одно.

Використовувати blanket.js, щоб забезпечити висвітлення

  • Переконайтеся, що працює Qunit
  • Завантажити blanket.js і додати його до вашого проекту
  • Додати його в вашу пробну сторінку амуніція:
    • Додати посилання на blanket.js
    • Додати атрибут "даних палітурці" до вашого <сценарій> Тег
  • Запустити Qunit випробувань.

Я ніколи не робив це раніше і деякі елементарні речі працюють в кілька годин. 

Щасливі тестування!

</кінець>

undefinedПідписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin

Останній костюм, ви ніколи не будете носити?

[Швидкий Примітка – Це досить довгий пост на роботу відкриття для моєї групи тут, в Нью-Йорку, і ви повинні жити в tri-state області, якщо ви зацікавлені.]

Я приєднався до слалом консалтинг над 18 місяців тому і що робить це моя найдовше робота з 2007. Я не збирався так. До рядка робота стрибкові, яка почалася з моєї стрибок у світі SharePoint, Я був в одному місці протягом одинадцяти років. Я знайшов новий, непохитна місце для роботи в довгостроковому плані тут в слалом.

Це місце зростає, і мені потрібно трохи допомогти, щоб контролювати, які. Такого роду мені потрібна допомога зазвичай називається "Архітектор рішень SharePoint", хоча я знайшов слово архітектор більше та/або неправильно використовуватися в просторі SharePoint досить довгий час зараз. Я боровся, як про це блозі. Я не хочу, щоб просто перерахувати на купу куля точок у кістки/монстр стиль. Моя Прекрасно вербування однолітками робить це вже :). Так, Я вирішив взяти підхід "день у житті". Читати його і розглянути:

1) Якщо вона звертається і

2) Чи ви знаєте у ваші кістки, що ви можете зробити це.

Якщо так, зв'яжіться зі мною (Paul.Galvin@slalom.com) і давайте говорити.

Це те, що ви можете очікувати в типовий тиждень/місяць як архітектор рішень в моїй команді:

  • Запускати проекти, часто більше, ніж один час. Деякі з них великі, і так ви б власником одного проекту. "Біг" проект означає, що у вас є контроль та відповідальність за загальну якість доставки. Майже в кожному випадку ви будете мати PM і дуже сильна команда розробників, Ба, UX людей, д., щоб підтримувати вас. Але ви будете основним обличчям Клієнт бачить, трасти, д. Немає не ховаються в тіні в цій ролі :). Ви будете законопроекту на цей раз і мета, щоб тримати вас зайнятий, щоб зробити це 80 відсоток часу.
  • Довідка з документи-свиноматок, RFPs, палуби-все, що хороші речі. Я думаю, у нас є наш СІЯТИ процес вниз досить міцно і твердих, так що це досить шаблонним. Якщо ви звикли написання свиноматок сьогодні, наш процес не буде проблемою для вас. RFPs-це трохи складніше. Вони, як правило, замовлення характеру з самого початку і RFPs зазвичай тягнути в декількох різних авторів. Це добре і погано, але в основному добре. Це може отримати scrambly, коли нам потрібно жонглювати необхідність високий рівень обслуговування клієнтів при також намагається виграти нові роботи. Ви, напевно, не буде власної з ППП, але вам буде запропоновано надати розділи.
  • Продаж дзвінки, але не ближче. Протягом місяця, Ви можете очікувати йти на пару дзвінків з нашого відділу продажів. Ви будете малого та середнього бізнесу в номері, Створення нотаток і допомагають формувати рішення. Однак, Ви не просили або як очікується, обробляти продажів цикл від початку до кінця. Вам не потрібно "продати,"ви тільки повинні бути спокійним голос експерт причина в номері. Таким чином, довіру і впевненість, і тому ви там. Звичайно, Якщо ви, як продаж, Тоді є кімната для вас ростуть тут теж.
  • Довідка з Рекрутинг. Ми є свого роду реферальная програма, так що якщо ви дійсно знаєте сильні люди в громаді, що ви думаєте, має бути частиною слалом, Ви можете користуватися таким чином. Ми присвятили рекрутери (хто є відмінним) Щоб зробити левову частку з такого роду робіт. Реальна допомога співбесід кандидатів – вони добре підходить культурно? Вони знають їх речі? Вони можуть зробити * мій * життя легше? 🙂 Це відбувається ривками, кілька разів на місяць, Хоча в окремі місяці ви б не зробити його на всіх.
  • Допомогти визначити кращі практики, будувати нашої IP і роблять нас більш конкурентоспроможними на ринку. Ви досвідчений хлопця/галон. Ви були навколо блоку – не тільки в SharePoint, але є досвід роботи в інших технологій і пережили дуже добре і погано (навіть страшна) проекти все. У результаті, Ви знаєте, що працює і що не робить. Ми будемо хочемо вас поділитися цей досвід з нами на день за днем в тактичний сенс (тобто. дійсно добре працювати ваші проекти) але також стратегічно. "Кращої практики" є трохи зловживати, як термін і я вагаючись використовувати його. Основна ідея, що ви приходите якості досвідчена людина з глибоким і відповідні досвід, і ми хочемо, щоб інтегрувати краще ваші learnings в те, як ми взаємодіяти з клієнтами на день за днем основі.
  • Розважатися – Ми є дуже інтегрованих букет. Я хочу, щоб уникнути ще одного platitude, але це дійсно apt в даному випадку-ми докладаємо всіх зусиль (Сортувати) і ми грати ще важче :). Існує Aaron Sorkin роду стьоб тут, у номері як завжди сповнена розумні люди, Ми, як наші пити і ми організуємо досить багато веселощів події – фільм ніч, Бейсбол поїздки (навіть якщо вони потрапило, практично зло команд).

Якщо би підводити все в одне слово, Я хотів би використовувати слово "Лідерство". Вести проекти, Візьміть провідну роль в будівлі на практиці (IP, Побудова команди), д.

Але чекати! Це ще не все! Інакше навіщо працювати в слалом?

  • Чудовий єдність намірів – кожен хоче рости цю річ на. "Ця річ", Нью-Йоркському офісі. Все це на борту з цим.
  • Вітер у вітрилах-сестра офісів, сестра практики – слалом є "повний сервіс» консалтингова організація. Я привести до практики SharePoint (на "практика область привести" в жаргоні слалом). У мене є сестра практики в 11 Інші офіси слалом. Так що хоча я король як SharePoint стурбований тут в Нью-Йорку слалом, У мене є рівний практики в Чикаго, Seattle, Dallas, Atlanta, Boston, д. з якого можна привернути за підтримки. Це справді найкраще з обох світів-істотну автономію тут, в Нью-Йорку, але доступ до тонн талант всієї організації.
  • Вітер у продажу (2) – Ми робимо більше, ніж SharePoint – набагато більш. Ми робимо бізнес-Аналітики, CRM, UX, Бізнес-консалтинг, Мобільний, Користувацькі розробки та інші. Ми добре крос-продажу серед нас, і ми добре в живопис- і що більш важливо, доставку за – "повний комплекс послуг" малюнок для наших клієнтів. Це є особливо привабливою для мене. Я був на багатьох невеликих orgs, що працюють на SharePoint концертів і розчаровані знову і знову, тому що ми були Голуб отворами як "SharePoint людей". Це не станеться з слалому і ми отримуємо зробити більш цікаву роботу в результаті.
  • Місцеві модель – немає подорожі.
  • Довгостроковій перспективі зростання-слалом триває вже цілком гідно. Багато зростання і стабільності. Зростання також означає, що ми повинні найняти лідерів сьогодні до голови нової команди, як ми додаємо більше клієнтів і співробітників, підтримка клієнтів.

Я міг би продовжувати, але я напевно вже пішли занадто довго. Я думаю, що я захопив сутність тут. Якщо ви думаєте про зміну робочих місць і це виглядає добре для вас, Давайте говорити.

Якщо ви щасливі в поточну роботу – Давайте говорити все одно :). Я був у багатьох місцях і в той час була "щаслива". Слалом різні, і я хотів би шанс, щоб переконати вас, що.

</кінець>

undefinedПідписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin

Швидкий і простий: Встановити розмір на елементи в списку в App Windows Store

В Windows Store App я створюю, Я хочу, щоб користувач різних інформаційних повідомлень.  Я взяв на елемент як інструмент, щоб показати її, так що вони можна прокручувати їх і все, що гарні речі. 

Інформаційні повідомлення, тільки, тому немає ніякої необхідності, щоб забезпечити все це додаткові пробіли навколо них, оскільки користувач може ніколи не вибирати їх для нічого.  За промовчанням список множинний забезпечує значну частину оббивка, і я хотів, щоб позбутися від нього.  Ну.... Ви не можете робити такі речі на список множинний безпосередньо.  ОДНАК, Ви можете зробити це до елементів, які додаються:

        приватні недійсними AddGameStateLogMessage(рядок theMessage)
        {
            Текстове поле t = нові Текстове поле();
            t.Text = GameStateCounter     + ": " + theMessage;
            t.TextWrapping = TextWrapping.Wrap;
            t.MinWidth = 400;
            Товщина thisPadding = нові Товщина(5, 0, 5, 0);
            t.Padding = thisPadding;
            t.FontSize = 12;

            Лі ListBoxItem = нові ListBoxItem();
            Лі.Вмісту = т;
            Лі.MaxHeight = 25;
            thisPadding = нові Товщина(5, 0, 5, 0);
            Лі.Оббивка = thisPadding;

            GameStateLog.Items.Insert(0,Лі);
        }

у вище, Я створення текстового поля і встановивши його шрифт, його оббивка, д.

Наступний, Я створити на ListBoxItem і встановити його зміст для форматованих текстового поля.

Нарешті, Я вставте в ListBoxItem в список множинний.  (Я хочу показати останні повідомлення у верхній частині списку, Отже вставки(0,Лі) Замість того, щоб просто додати() виклик.).

Я буду настройки це трохи перш, ніж я дуже щаслива з елемента поведінки, але шаблону показали вище був дуже плідним.  Ми сподіваємося хтось знаходить його корисним.

</кінець>

undefinedПідписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin