Как задать в качестве области поиска людей / Источник контента с помощью SharePoint 2013 ИНТЕРФЕЙС API REST

У меня причин для работы с SharePoint 2013 API поиска через REST в первый раз. Я хотел бы искать людей, не документы. Ключ обучения здесь является то, что вы укажите источники контента через его GUID (или по крайней мере в этом случае). В следующем фрагменте показано jQuery как:

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

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

        $.Аякс({
            URL-адрес: Это.CreateFullApiUrl() +
                "?QueryText = «порталы»&SourceID = «b09a7990-05ea-4af9-81ef-edfab16c4e31»" +
                "&Выберите пункт Свойства ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Навыки,AboutMe,Интересы,Название должности,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&RowLimit = 99",
            метод: "Получить",
            заголовки: { "Примите": "применение/json; OData = подробный" },
            кэш: ложь,
            успех: функция (результат) {

В моем случае, Я бегу 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

Параметр идентификатор sourceid является то, что работал для меня.

(Я понимаю, что sourceid фактически может быть своего рода постоянный вещь с SP, но я всегда буду проверять все равно 🙂 ).

</конец>

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

Следуй за мной по щебетать на http://www.twitter.com/pagalvin

Пример SharePoint остальные звонки

Вот набор образца отдыха звонков, которые работают для меня и может помочь вам, а. По состоянию на 02/2014, there are two examples 🙂

  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 «дайте мне название для всех категорий (Категории/название). Получить фактические значения Название от $Разверните узелING списка категории.» (Мой спокойный перефразируя вероятно довольно рыхлая, но это как интерпретации).

Если вы делаете это через JavaScript и посмотрите на результат с помощью Fiddler, Вы получите что-то подобное в ответ:

 

image

(Выше, является объектом JSON)

Выполнять поиск людей через отдых

Я blogged об этом отдельно. Суть заключается в том, чтобы указать идентификатор sourceid параметр, значением которого является идентификатор GUID источника контента местных жителей. (Источники контента используется для вызова областей, и это мой oh-my так трудно не назвать все область для меня!).

Подробнее об этом здесь: http://www.mstechblogs.com/paul/?p=10385

 

</конец>

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

Следуй за мной по щебетать на http://www.twitter.com/pagalvin

Быстро и легко: Создайте сайт SharePoint с помощью отдыха

Есть много ресурсов вокруг этого шоу, как это сделать, но я не мог найти ссылку перейти к комплексной, так что мы здесь.

Можно создать узел SharePoint, с помощью API-интерфейса REST.  Вот пример, полностью запеченные:

<!--
    SiteRequestForm.html: Сбор информации и создание сайта для пользователя.
-->

<центр>
<Таблица>
    <TR>
        <ТД>Название сайта:</ТД>
        <ТД><вход Тип= "текст" имя= "Имя_сайта" ID= "Имя_сайта" /></ТД>
    </TR>
    <TR>
        <ТД ColSpan= "2">
            <вход Тип= "отправить" ID= «CreateSiteButton" значение= "Создать сайт" />
        </ТД>
    </TR>
</Таблица>
</центр>

<сценарий src="../Plugins/jQuery-1.11.0.min.js"></сценарий>

<сценарий>
var CreateSiteLogicContainer = {

    createSiteData: {
            «параметры": {
                __metadata: { «Тип": «SP.WebInfoCreationInformation" },
                URL-адрес: «Paultest1",
                Название: «Paultest1",
                Описание: «остальные создан веб пол!",
                Язык: 1033,
                WebTemplate: «sts",
                UseUniquePermissions: ложь
            }
    },

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

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

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

            заголовки: {
                «Принимаю": «application/json; OData = подробный",
                «content-type": «application/json;OData = подробный",
                «X-RequestDigest": $(«#__REQUESTDIGEST").вал()
            },

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

            успех: функция () { предупреждение(«успех"); },
            Ошибка: функция () { предупреждение(«Ошибка"); }

        });
    },

    wireUpForm: функция () {
        $(» #CreateSiteButton").Нажмите кнопку(функция () {
            предупреждение(«О, чтобы попробовать и создать сайт.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</сценарий>

При успешном выполнении, Вы получаете пакет JSON в ответ, как это:

image

Мои ключевые мысли и знания из этого включают в себя:

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

Удачи и надеюсь что это помогает кто-то.

</конец>

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

Следуй за мной по щебетать на http://www.twitter.com/pagalvin

Преодолеть раздражает проблема с относительные URL-адреса SharePoint быстрый запуск

Я хотел бы добавить ссылку на панель быстрого запуска навигации другой день и сказал мне, SharePoint:

image

Чистая текстовой версии, является:

Убедитесь, что URL-адрес является допустимым и начинается с любой допустимый символ (знак номера (#) или косой (/)) или действительный поддерживаемый протокол (Например, ' http://’, ' https://’, ' файл://’, ' ftp://’, ' mailto:’, ' Новости:’).

«Blech и оспа!«Я сказал.

Обходной путь для этого — использовать JavaScript, чтобы найти известный ссылку в области быстрого запуска и переопределить его поведение.

Проверить это, Добавьте новую ссылку на ваш сайт тест константы выглядит так:

image

Я использовал jQuery. Для ее решения, получите некоторые JavaScript и jQuery на страницу, с помощью вашей любимой техники и с строки кода, как это:

 

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

    $("в:содержит(«Тест замена URL-адрес»)").Нажмите кнопку(функция () { предупреждение("поведение изменения щелчка!"); возвращение ложь;});

});

И Боб ваш дядя.

JQuery селектор находит каждый <в> тег, который имеет «Проверить URL замену» в его названии. Вы можете найти tune, в зависимости от вашей ссылке и такие.

Добав(функция() переопределяет все SharePoint сделали бы если пользователь нажал кнопку. Убедитесь, что вы «возвращение ложных», или же он будет делать ваши вещи и затем попытаться href вещь слишком, Это почти наверняка не ваша цель.

Это было сделано и тестирования в среде SharePoint online, но должны работать хорошо в 2010 и раньше тоже.

</конец>

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

Следуй за мной по щебетать на http://www.twitter.com/pagalvin

Быстрый и простой: Возвращает только вызов REST SharePoint 100 Записи

Я работаю на общественных облицовочная веб-сайт для моей практике SharePoint в Нью-Йорк и он использует много вызовов JavaScript и отдыха для отображения содержимого.

Во время развития магистральных, Я просто создаю небольшого набора данных с 10 или так строк в пользовательский список и мои остальные звонки вытащил оттуда.  Однажды я bumped вверх по списку, чтобы иметь несколько сотен строк данных для проверки ожидаемого роста, Я обнаружил, что я получаю именно 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Подписаться на мой блог.

Следуй за мной по щебетать на http://www.twitter.com/pagalvin

Быстрый и простой: Решить «Недопустимый URL параметр” проблема с UpdateListItems в lists.asmx

При работе с UpdateListItems через lists.asmx, Это легко генерировать ошибки:

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

Предоставляет URL-адрес содержит недопустимые команды или значение. Пожалуйста, проверьте URL-адрес снова.

Вы можете получить эту ошибку, когда вы забыли включить ID в списке полей для обновления.  Это, как много этих SP веб-служб, Это немного парадоксально, так как вам нужно включить идентификатор в атрибуте ID <Метод> элемент.  И вы не обновляется ID и вероятно никогда не хотят в первую очередь.

Этот конверт SOAP работает:

<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">к морю!</Поле>
            <Поле имя ="ID">1</Поле>
          </Метод>
        </Пакетный>                     
        </обновления>                
      </UpdateListItems>             
  </soapenv:Тело>         
</soapenv:Конверт>

Если вы вырезать ссылку на идентификатор в поле, то вы получите раздражает сообщение «Недопустимый URL параметр».

</конец>

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

Следуй за мной по щебетать на http://www.twitter.com/pagalvin

 

Бедный человек при кэшировании в JavaScript

[TL;Д-р версии: Используйте cookies для хранения результатов асинхронных вызовов; немедленно отображать результаты последних асинхронных вызовов, а затем проверить их после загрузки страницы.]

Я работаю на сайте интрасети SharePoint для клиента, что особенности, среди прочего, стилизованные вторичных навигации, чьи параметры меню управляются через регулярные старый пользовательский список.  Идея заключается в том, что клиент получает для управления меню «их» сайта не затрагивая или под воздействием глобальной навигации, потушить его.

(есть что-то невероятно подрывной о добавлении CEWP, указывающий на файл HTML, который загружает некоторые CSS и JS, чтобы коренным образом изменить почти все о сайте поведение..., но это для другой должности)

Код для этой довольно простой:

  • Ждать окончания загрузки и сделать асинхронный вызов загружать элементы меню из списка с помощью отдыха или lists.asmx или любой другой страницы
  • С помощью jQuery, динамически заполнять кучу, если <ли>в внутри родительского <UL> (Кристиан Пиндер в статье здесь упрощенное объяснение этой tecnnique)
  • Используйте CSS, чтобы делать все форматирование
  • Прибыль!

Больное место здесь является то, что каждый раз, когда кто-нибудь хитов одной из страниц сайта, веб-браузер пользователя выходит для получения элементов из списка.  После того, как dev, является полной и тестирования доказал вещи, чтобы быть стабильной и полной, Этот вызов не требуется более чем 99% времени, так как меню редко меняется.  Она также имеет странно влияют на пользовательский интерфейс, который является общим в этом дивном новом мире гипер ajaxy веб-сайтов – страница отображает и только тогда меню визуализации.  Это нервный и отвлекает на мой взгляд.  И нервный. Таким образом, кэширование. 

Я изменил логику константы выглядит так:

  • Найдите файл cookie в браузер, который содержит меню, как прошлый раз
    • Если найдено, сделать это немедленно.  Не ждите окончания загрузки страницы.  (Вам нужно убедиться, что ваш HTML стратегически размещены здесь, но это не трудно сделать).
  • Ждать окончания загрузки и сделать асинхронный вызов загружать элементы меню из списка с помощью отдыха или lists.asmx или любой другой страницы
  • Сравните, что я получил от cookie
    • Если он соответствует, ОСТАНОВКА
    • В противном случае, с помощью jQuery, динамически заполнять кучу, если <ли>в в <UL>
  • Используйте CSS, чтобы делать все форматирование
  • Прибыль!

Некоторые из вас собираетесь сказать, «Эй! Существует без реальных кэширования происходит здесь, так как вы читаете меню все равно Каждый раз.”  И вы правы-я не давая сервера любого вида отдыха.  Но поскольку вызов асинхронного и происходит после начальной страницы HTML полезной нагрузки полностью оказывает, Он «чувствует» более чутко для пользователя.  Меню предоставляет довольно много, как рисует страницы.  Если меню происходит с изменением, пользователь подвергается нервным повторно нарисуйте меню, но только что один раз.

Есть несколько способов сделать это кэширование более эффективной и в то же время помочь сервера:

  • В правиле, что «кэш cookie» действительна как минимум в 24 часов или некоторые другие сроки. Пока не истек файл cookie, Используйте снимок меню файла cookie и никогда не ударил сервера.

Ну..., вот и все, что приходит на ум прямо сейчас :). 

Если кто имеет какие-либо умные идеи здесь я бы хотел знать их.

И наконец – этот метод может использоваться для других вещей.  Этот клиент страница имеет ряд вещей с данными на различных страницах, Многие из них меняется относительно редко (как раз в неделю или раз в месяц).  Если вы имеете конкретные области функциональности, Вы можете дать более реагировать пользовательского интерфейса, потянув содержимое из хранилища локального файла cookie и рендеринга немедленно.  Он чувствует быстрее для пользователя, даже если вы не сохраняете сервере никаких циклов.  Вы можно Сохраните циклы сервера недействительным кэш локального файла cookie, решив на некоторых условий и триггеры.  Это все ситуационных и вычурные вещи и действительно самое веселое :). 

</конец>

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

Следуй за мной по щебетать на http://www.twitter.com/pagalvin

Инструкции: Настройка модульного теста и тестового покрытия с QUnit.js и Blanket.js для офиса 365 Приложение SharePoint

Интро

Я изучали модульного тестирования и испытания покрытия для JavaScript, как я работаю над новым приложением SharePoint для SharePoint online в офисе 365 Люкс.  Очевидным исследования путей привело меня к QUnit.js и сразу после, Кому Blanket.js.

QUnit позвольте мне создать модульные тесты и сгруппировать их в модули.  Модуль-это всего лишь простой способ организовать соответствующие тесты. (Я не уверен, что я использую его, как предполагалось, но это работает для меня пока небольшой набор тестов, которые я пока определили).

Blanket.js интегрируется с Qunit и он покажет мне фактической строки JavaScript, которые были – и что более важно – не были фактически выполняются в ходе выполнения тестов.  Это «покрытие» – линии, которые выполнены покрыты теста, в то время как другие являются не.

Создание хорошей тестовых случаев и просмотр покрытия, Мы можем уменьшить риск, что наш код имеет скрытые дефекты.  Хорошие времена.

QUnit

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

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" />
    <сценарий Тип= text/javascript"" src="QuizUtil.js" данные Обложка></сценарий>
    <сценарий типа =«text/javascript" src =«qunit-1.13.0.js"></сценарий>
    <сценарий типа =«text/javascript" src =«blanket.min.js"></сценарий>

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

            равных(getIDFromLookupField(goodValue) + 1, 2), «Идентификатор [" + goodValue + "] + 1 должно быть 2";
            равных(getIDFromLookupField(не определено), не определено, «Undefined входной аргумент должен возвращать неопределенный результат.");
            равных(getIDFromLookupField(""), не определено, «Пустой входной аргумент должен возвращать неопределенное значение.");
            равных(getIDFromLookupField(«gobbledigood3-thq;dkvn ада;skfja sdjfbvubvqrubqer0873407t534piutheqw;VN"), не определено,«Всегда должны возвращать результат кабриолет в целое число");
            равных(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-05Т: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("тест"), «Получить файл cookie, я должен работать.");
            равных(setCookie(«anycookie", «1", -1), Истина, «Установка действительный приготовления должен возвращать 'true'.");
            равных(setCookie(«имя сумасшедший cookie !@#$%"%\^&*(()?/><.,", «1", -1), Истина, «Плохой cookie имя параметра ли должен возвращать 'false'.");
            равных(setCookie(не определено, «1", -1), не определено, «Проходя определено как имя файла cookie.");
            равных(getCookieValue(«не существует"), "", «Сookie не существует теста.");
        });

    </сценарий>
</голова>
<тело>
    <Div ID= «qunit"></Div>
    <Div ID= «qunit светильник"></Div>

</тело>
</HTML>

Есть несколько вещей, здесь происходит:

  1. Ссылка на мой код (QuizUtil.js)
  2. Ссылки на Qunity.js
  3. Определение некоторых модулей (getIDFromLookup, Печенье, и другие)
  4. Размещение <Div> Идентификатор которого является «qunit».

Затем, Я просто подтянуть эту страницу и вы получите нечто вроде этого:

image

Рисунок 3

Если вы посмотрите в верхней, у вас есть несколько вариантов, два из которых интересны:

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

Что касается самих – несколько замечаний тестов:

  • Само собой разумеется, что необходимо написать свой код таким образом, что это в первую очередь для тестирования.  С помощью инструмента может помочь обеспечить соблюдение дисциплины. К примеру, Я имел функцию под названием "getTodayAsCaml()”.  Это не очень для тестирования, так как он принимает без ввода аргументов и для проверки на равенство, Мы должны постоянно обновлять код теста для отражения текущей даты.  Я переделать его, добавив параметр ввода данных, а затем передавая на текущую дату, когда я хочу текущая дата в формате CAML.
  • Qunit рамки документы свои собственные испытания и кажется довольно надежные.  Это можно делать простые вещи, как проверки на равенство и также имеет поддержку для вызовов ajax стиль («реальные» или издевались, используя ваш любимый насмешник).
  • Также переживает процесс заставляет вас думать через крайние случаи – что происходит с «неопределенный» или в функцию передается значение null.  Это делает его мертвым простой для тестирования этих сценариев вне.  Хорошие вещи.

Покрытие с Blanket.js

Blanket.js дополняет Qunit путем отслеживания фактических строк кода, которые выполняются во время выполнения тестов.  Она интегрирует право в Qunit даже если это совершенно отдельные приложения., Он играет красиво – это действительно выглядит, как будто это один бесшовных app.

Это blanket.js в действии:

image Рисунок 4

image

Рисунок 5

(На самом деле вы должны нажать на флажок «Включить освещение» в верхней [рис. 3] для этого.)

Выделенные линии на рисунке 5 не были выполнены любым из моих тестов, Поэтому необходимо разработать тест, который заставляет их выполнять, если я хочу полный охват.

Получить blanket.js работает, выполните следующие действия:

  1. Скачать его из http://blanketjs.org/.
  2. Добавьте его в проект
  3. Обновление тестовой страницы Упряжь (QuizUtil_test.html в моем случае) следующим:
    1. Код ссылки
    2. Украсьте ваш <сценарий> ссылка, как это:
    <сценарий Тип= text/javascript"" src="QuizUtil.js" данные Обложка></сценарий>

Blanket.js забирает атрибут «данных Обложка» и делает свое волшебство.  Крючки в Qunit, обновляет пользовательский интерфейс для добавления параметра «Включить освещение» и вуаля!

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

Использовать Qunit для написания тестовых случаев.

  • Скачать его
  • Добавьте его в проект
  • Написать тестовую страницу Упряжь
  • Создание тестов
    • Переделать некоторые из кода быть проверяемым
    • Быть творческим!  Думать ума, невозможно сценариев и проверить их все равно.

Используйте blanket.js для обеспечения охвата

  • Убедитесь, что работает Qunit
  • Скачать blanket.js и добавить его в ваш проект
  • Добавить его в тестовую страницу Упряжь:
    • Добавьте ссылку на blanket.js
    • Добавьте атрибут «данных крышка» для вашего <сценарий> Тег
  • Qunit тесты выполнять.

Я никогда не делал этого раньше и имел некоторые элементарные вещи, работающие в несколько часов. 

Счастливый тестирования!

</конец>

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

Следуй за мной по щебетать на http://www.twitter.com/pagalvin

Последний костюм, который вы будете носить, когда-либо?

[Быстрый Примечание – это довольно длинный пост на вакансии для моей группы в Нью-Йорке, и вам нужно жить в области tri-state, если вы заинтересованы.]

Я присоединился к Slalom консалтинг над 18 месяцев назад и что делает это моя долгое работа с 2007. Я не планировал его таким образом. Перед строкой работу скачкообразной, началась с моей скачок в мире SharePoint, Я был в одном месте за одиннадцать лет. Я наконец нашел новый, Несокрушимая место для работы в долгосрочной перспективе здесь в слаломе.

Это место растет, и мне нужна помощь, чтобы контролировать, что. Рода помощь, мне нужно обычно называется «Архитектор решений SharePoint», хотя я нашел архитектор слово более чем и/или неправильно использоваться в пространстве SharePoint довольно долгое время сейчас. Я был бороться о том, как об этом блоге. Я не хочу просто список из кучу пуля точек в стиле кости/монстр. Мои отличный подбор сверстники делать, уже :). Таким образом, Я решил принять подход «день в жизни». Читать его и рассмотреть:

1) Если он обращается и

2) Знаете ли вы в ваших костях что вы можете сделать это.

Если да, связаться со мной (Paul.Galvin@slalom.com) и давайте поговорим.

Это то, что вы можете ожидать делать в типичная неделя/месяц архитектором решений в моей команде:

  • Запуск проектов, часто более чем один момент. Некоторые проекты находятся большие и так бы собственной что один проект. «Запуск» проекта означает, что у вас есть контроль и ответственность за общее качество доставки. Почти в каждом случае вы будете иметь вечера и очень сильная команда разработчиков, BAs, UX человек, и др., чтобы поддержать вас. Но вы будете главным лицом, которую клиент видит, Трасты, и т.д.. Существует не скрываясь в тени в этой роли :). Вы будете законопроект на этот раз и цель заключается в том, чтобы держать вас занят, чтобы сделать это 80 % времени.
  • Помощь с оформлением документов – свиноматок, ОПП, палубы – все, что хорошие вещи. Я думаю, что у нас есть наши СЕЯТЬ процесс вниз довольно жесткой и твердой, так что это довольно шаблонными. Если вы привыкли писать свиноматок сегодня, Наш процесс не будет проблемой для вас. ЗП-это немного сложнее. Они, как правило, заказ в природе начать с и ЗП обычно тянуть в нескольких различных авторов. Это хорошие и плохие, но главным образом хорошо. Это может получить scrambly, когда нам нужно жонглировать потребность отличное обслуживание клиентов, пытаясь при этом выиграть новую работу. Вы, наверное, не будет собственной ППП, но вам будет предложено внести секций.
  • Продажи звонков, но не ближе. В течение месяца, Вы можете ожидать пойти на пару продаж звонков с нашим отделом продаж. Вы будете МСП в комнате, делать заметки и помочь сформировать решение. Однако, Вы не будете попросил или предполагается, что для обработки цикла продаж от начала до конца. Вам не нужно «продать,«Вам просто нужно быть спокойным голосом экспертов причина в комнате. Это создает доверие и уверенность, и вот почему ты здесь. Конечно, Если вам нравится продавать, Тогда есть комната для вас здесь растут слишком.
  • Помощь с набором. У нас есть какие-то реферальной программе, так что если вы знаете, действительно сильные люди в общине, что вы думаете, должно быть частью слалом, Вы можете воспользоваться таким образом. Мы посвятили вербовщиков (кто являются отличным) сделать львиную долю такого рода работы. Реальная помощь Интервьюирование кандидатов – являются ли они хорошо подходят культурно? Знают ли они свои вещи? Могут они сделать * мой * жизнь проще? 🙂 This comes in spurts, пару раз в месяц, Хотя через несколько месяцев вы бы не сделать это на всех.
  • Помочь определить наилучшей практики, строить наши IP и сделать нас более конкурентоспособным на рынке. Ты опытный парень/Гал. Вы были вокруг блока – не только в SharePoint, но у вас есть опыт работы в других технологиях и пережили хорошие и плохие (даже страшно) проекты всей. В результате, Вы знаете, что работает и что нет. Мы хотим, чтобы поделиться своим опытом с нами на ежедневной основе в тактическом смысле вы (т.е.. действительно хорошо запустить ваши проекты) но также стратегически. «Наилучшей практике» немного перегружен как термин, и я стесняйтесь использовать его. Основная идея заключается в том, что вы едете как опытный человек с глубоким и соответствующим опытом и мы хотим интегрировать лучшие из вашего знания в том, как мы взаимодействовать с клиентами на основе день в день.
  • Веселитесь – Мы являемся кучу очень интегрированной. Я хочу, чтобы избежать еще одного банальность, но это действительно apt в данном случае – мы работаем (вроде) и мы даже труднее играть :). Аарон Соркин рода стеб здесь, номер всегда полон умных людей, Мы любим наш напиток и мы организовать справедливый количество веселья события – фильм ночь, Бейсбол поездки (даже если они являются ужасные, практически зло команды).

Если я мог бы подвести все это в одно слово, Я хотел бы использовать слово «руководство.» Привести проекты, принять на себя ведущую роль в строительстве из практики (IP, Создание команды), и т.д..

Но ждать! Есть больше! Почему еще работают на слалом?

  • Замечательное единство о намерениях – каждый хочет расти эту вещь вне. ««Это Нью-Йоркское отделение. Каждый имеет на борту с этим.
  • Ветер в паруса – сестра отделения, сестра практики – Слалом является «полный сервис» консалтинг Организации. Я веду SharePoint практике («Практика области ведут» в слаломе жаргон). У меня сестра практики 11 другие отделения слалом. Так что даже несмотря на то, что я царь насколько SharePoint обеспокоен здесь в Нью-Йорке слалом, У меня есть коллегиального практики в Чикаго, Сиэтл, Даллас, Атланта, Бостон, и т.д.. из которого можно опереться поддержки. Это действительно лучшее из обоих миров – значительную автономию здесь в Нью-Йорке, но доступ к тонн талант по всей Организации.
  • Ветер в ваших продаж (2) – Мы делаем больше, чем SharePoint – гораздо более. Мы делаем BI, CRM, UX, Бизнес-консалтинг, Мобильные, Разработка на заказ и другие. Мы хороши на кросс-продажи среди нас и мы хороши в живописи – и что более важно, Доставка после – «полный сервис» изображение для наших клиентов. Это является особенно привлекательным для меня. Я был на много меньше orgs, работает на SharePoint концертов и разочарование снова и снова, потому что мы были голубь holed как «люди SharePoint». Это не случится с слалом и мы получаем сделать более интересную работу в результате.
  • Местные модель – не путешествия.
  • Долгосрочного роста – слалом продолжается уже вполне достойно. Много роста и стабильности. Рост также означает, что нам нужно нанять лидеры сегодня голову новые команды, мы добавим больше клиентов и сотрудников для поддержки тех клиентов.

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

Если вы счастливы в вашей нынешней работе – поговорим в любом случае :). Я был в много мест и в то время был очень «happy». Слалом отличается, и я хотел бы приветствовать шанс убедить вас в том, что.

</конец>

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

Следуй за мной по щебетать на http://www.twitter.com/pagalvin

Быстро и легко: Задать размер элементов в поле со списком в App Windows Store

В приложении Магазина Windows я создаю, Я хочу показать пользователю различные информационные сообщения.  Я выбрал ListBox как средство, чтобы показать его, так что они могут прокручивать их и все, что хорошие вещи. 

Только будут информационные сообщения, так что нет необходимости предоставлять все лишние пробелы вокруг них, так как пользователь не может выбрать их для что-нибыдь.  Поведение по умолчанию ListBox предоставляет значительное количество заполнения, и я хотел, чтобы избавиться от него.  Ну.... Вы не можете сделать такого рода вещи на ListBox непосредственно.  ОДНАКО, Вы можете сделать это на элементы, которые вы добавляете:

        частные void AddGameStateLogMessage(Строка theMessage)
        {
            TextBox t = Новые функции Текстовое поле();
            t.Text = GameStateCounter    + ": " + theMessage;
            t.TextWrapping = TextWrapping.Wrap;
            t.MinWidth = 400;
            Толщина thisPadding = Новые функции Толщина(5, 0, 5, 0);
            t.Padding = thisPadding;
            t.FontSize = 12;

            ListBoxItem li = Новые функции ListBoxItem();
            Li.Содержание = t;
            Li.MaxHeight = 25;
            thisPadding = Новые функции Толщина(5, 0, 5, 0);
            Li.Заполнение = thisPadding;

            GameStateLog.Items.Insert(0,ли);
        }

в приведенном выше, Я создание TextBox и установив его шрифт, ее заполнения, и т.д..

Следующая, Я создаю объект ListBoxItem и задать ее содержимое в формате текстовое поле.

Наконец, Я вставить ListBoxItem в ListBox.  (Я хочу показать последние сообщения в верхней части списка, Отсюда Вставка(0,ли) вместо простой добавить() вызов.).

Я будет настройки это немного прежде, чем я очень счастлива с ListBox поведение но шаблона, показанного выше было весьма плодотворным.  Надеюсь кто-то другой считает полезным.

</конец>

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

Следуй за мной по щебетать на http://www.twitter.com/pagalvin