Как да зададете хора като обхват за търсене / Източник на съдържание с помощта на SharePoint 2013 ПОЧИВКА API

Имах причина да работите на SharePoint 2013 API за търсене чрез почивка за първи път. Исках да търсене на хора, не документи. Ключът обучение тук е, че задавате източници на съдържание чрез своя GUID (или поне в този случай). В следните jQuery фрагмент показва как:

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

        jQuery.support.cors = вярно;

        $.Аякс({
            URL адрес: Това.CreateFullApiUrl() +
                "?querytext = "портали"&SourceId = "b09a7990-05ea-4af9-81ef-edfab16c4e31"" +
                "&selectproperties ='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 погледна нещо подобно:

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

Параметърът на sourceid е това, което работи за мен.

(Аз разбирам, че sourceid всъщност може да бъде нещо като нещо постоянно с SP, but I’ll always check anyway 🙂 ).

</край>

undefinedАбонирайте се за моя блог.

Следвайте ме на Twitter в http://www.twitter.com/pagalvin

Пример SharePoint ОСТАНАЛИТЕ повиквания

Ето един набор от примерни почивка повиквания, които работят за мен и може да ви помогне, както и. Като от 02/2014, there are two examples 🙂

  1. Адресирате колона с интервали в името си
  2. Референтен мулти-изберете колона
  3. Хората търсене чрез почивка

 

Аз ще добави към това като времето минава.

Ето някои полезни мастила, аз открих, както и:

Адресирате колона с интервали в името си

Аз създадете списък по избор с една колона, наречена "Блог автор" (пространството между блог и автор).

$select за позоваване на тази колона е:

image

Просто замени пространството с "_x0020_". Виждаме _x0020_ в много примери в internets и почивка е не се различава.

Ако не направите това, Вие сте може да получите съобщение за грешка като това:

Изразът “Автор блог” не е валиден.

Лесно достатъчно.

Референтен мулти-изберете справочна колона

Създаден:

  1. Създаване на потребителски списък, наречен категории.
  2. Добави някои категории. Добавих категории thusly:image
  3. Създайте друг потребителски списък, наречен MockBlog и добавете категории като мулти-изберете списък колона (или колона на сайт, ако това е как да хвърли).

Добавяне на някои елементи в списъка с Mockblog и сте готови.

Повикване Аякс стил, използвайки jQuery ще изглежда нещо подобно:

serverUrl  = "/_api/уеб/списъци/GetByTitle("MockBlog")/елементи" +
             "?$изберете = заглавие,Категории/заглавие,Blog_x0020_Author/заглавие" + 
             "&$разширяване = Blog_x0020_Author,Категории";

Ние сме се казва от SharePoint "ми даде заглавието за всички категории (Категории/заглавие). Получаване на действителни стойности за Заглавие от $разширяванеING списъка категории." (Моят спокоен перифразира е вероятно доста хлабав, но това как интерпретирам го).

Ако сте прави това чрез JavaScript и използвайки цигулар да погледнете на изхода, получавате нещо подобно в замяна:

 

image

(По-горе е един обект JSON)

Хората търсене чрез почивка

Аз blogged за това отделно. Ключът е да зададете параметър на sourceid, чиято стойност е GUID на източника на съдържание на местните хора. (Източници на съдържание се използва да се нарича обхвати и е Моят о ми толкова трудно да обърне всичко с обхват за мен!).

Прочетете повече за него тук: http://www.mstechblogs.com/paul/?p=10385

 

</край>

undefinedАбонирайте се за моя блог.

Следвайте ме на Twitter в http://www.twitter.com/pagalvin

Бърз и лесен: Създаване на сайт на SharePoint с помощта на почивка

Има много ресурси около които показват как да направите това, но не мога да намеря изчерпателно за излизане на връзка, така че тук сме.

Можете да създадете сайт на SharePoint с помощта на ОСТАНАЛИТЕ API.  Тук е напълно печени пример:

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

<център>
<таблица>
    <TR>
        <TD>Име на сайт:</TD>
        <TD><вход тип= "текст" Име= "Име на сайт" ИД= "Име на сайт" /></TD>
    </TR>
    <TR>
        <TD colspan= "2">
            <вход тип= "представя" ИД= "CreateSiteButton" стойност= "Създаване на сайт" />
        </TD>
    </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",
            метод: "ПОСТ",

            заглавки: {
                "приемете": "приложение/json; oData = многословно",
                "тип съдържание": "приложение/json;oData = многословно",
                "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:’, "новини:’).

"Blech и шарка!Аз казах:.

A workaround към това е да използвате JavaScript, за да намерите линк, известен в бързо стартиране и промените му поведението.

За да проверите това, Добавяне на нова връзка към вашия тест сайт thusly:

image

Аз бях jQuery. Да го решим, Махни някои JavaScript и jQuery върху страницата с любимите си техника и с линия на код като този:

 

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

    $("а:съдържа("Тест URL подмяна")").щракнете върху(функция () { предупреждение("промяна щракване поведение!"); връщане фалшиви;});

});

И чичо Боб.

Избора на jQuery намира всеки <а> етикет, който е "Тест URL подмяна" в името си. Вие може да искате да намерите-мелодия, която в зависимост от вашата връзка и такива.

Кликнете(функция() отменя каквото SharePoint би направил, когато потребителят кликне. Се уверете, че сте "върне false" или пък ще направи нещата си и след това се опитайте да 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 уеб услуги, е малко counterintuitive, тъй като трябва да включва ИД в атрибут на ИД <Метод> елемент.  И не сте актуализира ИД и вероятно никога няма да искате да на първо място.

Този сапун плик работи:

<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 ="Продължи">
          <Метод ИД ="1" CMD ="Update">
            <Полето Име ="CooperativeLock">заключена!</Поле>
            <Полето Име ="ИД">1</Поле>
          </Метод>
        </Пакетно>                     
        </актуализации>                
      </UpdateListItems>             
  </soapenv:Тяло>         
</soapenv:Плик>

Ако ленти, препратка за поле ИД тогава вие ще получите досадно съобщение за "Невалиден URL параметър".

</край>

undefinedАбонирайте се за моя блог.

Следвайте ме на Twitter в http://www.twitter.com/pagalvin

 

Бедният човек на кеширане в JavaScript

[TL;Д-р версия: използва бисквитки за да съхранява резултатите от async повиквания; сравнимостта на резултатите от минали async повиквания веднага и след това ги утвърждава след зареждане на страницата.]

Съм бил на работа в интранет сайта на SharePoint за клиент, което функции, наред с други неща, стилизирана допълнителна навигация, чието меню опции се управляват чрез редовни стар списък по избор.  Идеята е, че клиентът получава за контрол на сайта "тяхната" меню без чувства или са засегнати от глобалната навигационна, изведен от нея.

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

Кодът за тази доста проста:

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

Възпалено място тук е, че всеки път, когато някой удари един от страници на сайта, този потребител уеб браузър се достига до получите елементи от списъка.  След като dev е пълна и изпитване е доказано неща, за да бъде стабилна и пълна, тази покана е необходимо повече от 99% на времето, тъй като менюто рядко промени.  Тя също има странни UI влияние, което е често срещани в този смел нов свят на хипер-ajaxy уеб сайтове – страницата се рендира и само тогава прави менюто.  Той е нервен и разсейващи по мое мнение.  И нервност. Така, кеширане. 

Аз промяна логиката thusly:

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

Някои от вас ще кажат, "Ей! Няма реален кеширане връщане тук, тъй като вие сте четене на менюто все пак всеки път.”  И вие сте прав-не съм дава сървъра всякакъв вид на почивка.  Но тъй като повикването е готино и се случва след първоначалните констатации на страницата HTML payload напълно прави, Той се "чувства" по-отзивчиви към потребителя.  Менюто прави доста много, тъй като страницата равенства.  Ако менюто се случва с промяната, потребителят е подложен на нервност водих на менюто, но само че едно време.

Има няколко начина да направите това кеширане по-ефективно и да помогне на сървъра в същото време:

  • В едно правило, че кеша на"бисквитка" е валиден за най-малко 24 часове или някои други срокове. Както дълъг както там е не издишвам бисквит, Използвайте бисквитка меню снимка и никога не хит на сървъра.

Ами..., това е всичко, което дойде на ум в момента :). 

Ако някой има някакви умни идеи тук бих искал да ги знаят.

И на последно място-тази техника може да се използва за други неща.  Този клиент страница има няколко неща, данни задвижване на различни страници, много от тях промяна сравнително рядко (като веднъж седмично или веднъж месечно).  Ако насочвате конкретни области на функционалност, Можете да дадете по-отзивчиви потребителски интерфейс чрез издърпване на съдържанието от местните бисквитка се съхранява и оказване незабавно.  Той се чувства по-бързо за потребителя дори ако не записвате сървъра всички цикли.  Вие може да запишете на сървъра цикли от вземане на решение за някои условията и предпоставките да обезсили кеш тази местна бисквитка.  Това е всички ситуационни и artsy неща и наистина най-забавно :). 

</край>

undefinedАбонирайте се за моя блог.

Следвайте ме на Twitter в http://www.twitter.com/pagalvin

Как да: Конфигуриране на единица тест и тест покритие с QUnit.js и Blanket.js за офис 365 SharePoint App

Интро

Аз съм бил проучване на единица тестване и тест покритие за 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</заглавие>
    <връзка отн= "стилове" HREF="../CSS/qunit-1.13.0.CSS" />
    <скрипт тип= текст/javascript"" SRC="QuizUtil.js" данни-корица></скрипт>
    <скрипт тип ="текст/javascript" SRC ="qunit-1.13.0.js"></скрипт>
    <скрипт тип ="текст/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 клас =&как много;SomeClass&как много;&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 различни бисквитка функции.", функция () {
            равни(setCookie("тест", "1", -1), getCookieValue("тест"), "Get бисквитка задам трябва да работи.");
            равни(setCookie("anycookie", "1", -1), вярно, "Определяне на валиден готвене трябва да се върне"истина".");
            равни(setCookie("луд Бисквитеното име !@#$%"%\^&*(()?/><.,", "1", -1), вярно, "Въвеждане на лош бисквитка име трябва да се върне"неистина".");
            равни(setCookie(неопределен, "1", -1), неопределен, "Минаваща неопределени като името на бисквитката.");
            равни(getCookieValue("не съществува"), "", "Бисквитката не съществува тест.");
        });

    </скрипт>
</главата>
<тяло>
    <DIV ИД= "qunit"></DIV>
    <DIV ИД= "qunit-приспособление"></DIV>

</тяло>
</HTML>

Има няколко неща, случва тук:

  1. Съотнасяне ми код (QuizUtil.js)
  2. Съотнасяне Qunity.js
  3. Определяне на някои модули (getIDFromLookup, Бисквитки, и други)
  4. Поставяне <DIV> чието име е "qunit".

След това, Аз просто дръпнете тази страница и да получите нещо подобно:

image

Фигура 3

Ако погледнете в началото, имате няколко опции, две от които са интересни:

  • Скрий преминали тестове: Доста очевидно.  Може да помогне на очите си просто вижте на проблемните области и не е много елементарно.
  • Модул: (падащо меню): Това ще филтрира тестовете до само тези групи тестове искате.

Що се отнася до тестовете се – няколко коментари:

  • Разбира се че трябва да напишете кода си, така че на първо място е проверимо.  С помощта на инструмента може да ви помогне да наложат тази дисциплина. Например, Имах функция, наречена "getTodayAsCaml()”.  Това не е много проверимо, тъй като тя отнема не входен аргумент и да го тестват за равенство, Ние ще трябва да обновяваме изпитване код, за да отрази текущата дата.  Аз го refactored чрез добавяне на параметър за въвеждане на данни след това преминаване на текущата дата, когато искате днешна дата в CAML формат.
  • Qunit рамка документи собствените си изследвания и изглежда доста здрав.  Тя може да направи прости неща като проверка за равенство и също така има поддръжка за Аякс стил повиквания ("истински" или подиграване използването любимите си mocker).
  • Преминава през процеса и ви принуждава да мисли чрез крайни случаи – какво се случва с "неопределен" или 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"" SRC="QuizUtil.js" данни-корица></скрипт>

Blanket.js взима атрибута "данни-корица" и прави своята магия.  Куките в Qunit, актуализира интерфейс, за да добавите опцията "Разреши покритие" и готово!

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

Използвайте Qunit, за да напишете вашия тест случаи.

  • Изтеглете го
  • Го добавите към вашия проект
  • Пишете тест впрегне страница
  • Създайте си тестове
    • Някои от вашите код да бъде проверими refactor
    • Бъдете креативни!  Мисля на луд, невъзможно сценарии и ги тест все пак.

Използвайте blanket.js, за да осигури покритие

  • Проверете дали Qunit работи
  • Изтегляне blanket.js и да го добавите към вашия проект
  • Го добавите към вашия тест впрегне страница:
    • Добавяне на препратка към blanket.js
    • Добавяне на "данни-корица" атрибут към вашия <скрипт> етикет
  • Направи свой тестове за Qunit.

Аз никога не е направил това преди и има някои елементарен неща работи в няколко часа. 

Честит тестове!

</край>

undefinedАбонирайте се за моя блог.

Следвайте ме на Twitter в http://www.twitter.com/pagalvin

Последните костюм ще носите някога?

[Бързо Забележка-Това е доста дълъг пост за работа откриване за моята група тук в Ню Йорк и трябва да живеят в tri членка област, ако проявявате интерес.]

Аз се присъединиха слалом консултиране през 18 месеци преди и че това прави работата ми-продължителен насам 2007. Аз не я план по този начин. Преди низ от работа подскача, която започна с моите скок в света на SharePoint, Бях на едно място за единадесет години. Аз най-накрая открих един нов, трайно място за работа за дълги разстояния тук в слалом.

Това място се разраства и имам нужда от помощ да контролира това. Вид помощ трябва обикновено се нарича "SharePoint решения архитект", въпреки че аз открих архитект думата се над и/или неправилно използвани в SharePoint пространство за доста известно време сега. Аз бях се бори за това как да блог за това. Не искам да просто списък вън няколко точки куршум в зара/чудовище стил. Колегите ми отлично набиране са били прави, че вече :). Така, Реших да предприема подход "ден в живота". Я прочетете отново и Помислете:

1) Ако тя отправя призив и

2) Дали знаете в костите ви, че можете да го направите.

Ако отговорът е да, свържете се с мен (Paul.galvin@slalom.com) и нека поговорим.

Това са това, което можете да очаквате да се направи в типичен седмица/месец като решения архитект на моя екип:

  • Изпълнение на проекти, често повече от един по един. Някои проекти са големи и така да притежавате този един проект. "Running" проект означава, че имате контрол и отговорност за цялостното качество на доставката. В почти всеки случай ще имате ч и наистина силен екип от devs, Бан, UX хора, и др., да ви подкрепят. Но ще бъде основната лицето клиента вижда, тръстове, н. Няма не се крие в сенките в тази роля :). Ще таксуваме този път и целта е да ви достатъчно зает, за да направите това 80 процента от времето.
  • Помощ с документи – свине майки, Проектна документация, палуби-всички добри неща. Мисля, че ние имаме нашите свиня процес доста здраво и твърдо, така че е доста бланкетни. Ако сте свикнали да пишете майки днес, Нашият процес няма да бъде предизвикателство за вас. Проектна документация – това са малко по-трудно. Те са склонни да бъдат по поръчка в природата да се започне с и проектна документация обикновено вървят в множество различни автори. Той е добър и лош, но главно добър. Това може да се scrambly, когато имаме нужда да жонглирам необходимостта отлично обслужване докато също се опитва да спечели нова работа. Вероятно няма да притежавате RFP, но вие ще бъдете помолени да допринесе раздели.
  • Обаждания за продажби, но не по-отблизо. През месец, Можете да очаквате да отида на няколко обаждания за продажби с нашия търговски екип. Вие ще бъдете МСП в стаята, Водете си бележки и допринасят за изграждането на решението. Въпреки това, Вие няма да се попита или очаква да се справят на цикъла на продажба от начало до край. Не е нужно да "продава,"просто трябва да бъде спокоен глас на експерт причина в стаята. Това изгражда доверие и затова сте там. Разбира се, Ако ви харесва продажба, след това има място за вас да растат тук твърде.
  • Помогне с наемането на. Ние имаме някакъв вид на сезиране програма, така ако знаете наистина силни хора в Общността, които мислите, че трябва да бъде част от слалом, Можете да се възползвате по този начин. Ние посветихме работодатели (които са отлични) да направят лъвския пай от този вид работа. Реалната помощ е интервюиране на кандидати – те са подходящи културно? Те знаят своите неща? Могат да те направят * ми * живота по-лесно? Comes Това идва в скокове, няколко пъти на месец, Въпреки че през някои месеци да не го направите изобщо.
  • Помогне за определяне на най-добрите практики, изграждане на нашите IP и ни правят по-конкурентоспособни на пазара. Вие сте опитен човек/Гал. Вие сте били около блока – не само в SharePoint, но имате опит в други технологии и живял през добри и лоши (дори ужасно) проекти над всички. Като резултат, Знаеш ли какво работи и какво не. Ще искаме да споделят този опит с нас на ден за ден основа в тактически смисъл (т.е.. тече си проекти много добре) но стратегически. "Добри практики" е малко употребявани като термин и аз се колебайте да го използвате. Основната идея е, че идват като опитен човек с дълбока и съответния опит и ние искаме да се интегрира най-доброто от вашия learnings в как ние се ангажира с клиенти на ден за ден основа.
  • Забавлявай се — Ние сме много интегрирана китка. Искам да се избегне още една изтъркана фраза, но това е наистина подходящо в този случай-ние работим усилено (сортиране на) и ние играем още по-трудно :). Налице е Аарон Соркин вид шеги тук, стаята е винаги пълен с умни хора, Ние обичаме нашите напитки и организираме справедлив брой забавни събития – филмова вечер, Бейзбол пътувания (дори ако те са ужасно, практически злото отбори).

Ако може да обобщим, че всичко в една дума, Аз ще използвам думата "лидерство." Олово проекти, да играе водеща роля в изграждането на практиката (IP, изграждане на екип), н.

Но изчакайте! Има и още! Защо иначе работи в слалом?

  • Забележителен единството на намерения-всеки иска да расте това нещо навън. "Това нещо" е Ню Йорк офис. Всеки е на борда с това.
  • Вятър в платната-сестра офиси, сестра практики-слалом е "пълно обслужване" консултантска организация. Аз да доведе до SharePoint практика ("практиката област доведе" слалом жаргон). Имам сестра практики в 11 други слалом офиси. Така че въпреки че съм крал, доколкото SharePoint е загрижено тук слалом Ню Йорк, Имам партньорска практики в Чикаго, Сиатъл, Далас, Атланта, Бостън, н. от които да черпим поддръжка. Това е наистина най-доброто от двата свята – значителна автономност тук в Ню Йорк, но достъп до тона на талант в организацията.
  • Вятър в продажбите си (2) -Правим повече от SharePoint – много повече. Правим BI, CRM, UX, бизнес консултации, Мобилен, потребителски развитие и други. Ние сме добри в кръстосаната между себе си и ние сме добри в живопис – и по-важното, доставяне при – "пълно обслужване" картина за нашите клиенти. Това е особено привлекателен за мен. Аз съм бил в много по-малките orgs работа на SharePoint концерти и разочарован отново и отново, защото бяхме гълъб окопали като "SharePoint хора." Това не се случи със слалом и ние се да направя по-интересна работа като резултат.
  • Местен модел-пътуване.
  • Дългосрочен растеж-слалом е осъществявала gangbusters. Много растеж и стабилност. Растеж означава също, че трябва да наемат лидери днес да оглавява нови екипи, като добавим повече клиенти и персонал, за да подкрепят тези клиенти.

Мога да отида на, но вероятно вече сте отишли прекалено дълго. Мисля, че съм заловен същността тук. Ако си мислиш за смяна на работни места и това изглежда добре за вас, Нека поговорим.

Ако сте доволни в сегашната си работа-да поговорим все пак :). Аз съм бил в много места и е много "щастлив" по това време. Слалом е различно и аз ще приветства шанс да убеди че.

</край>

undefinedАбонирайте се за моя блог.

Следвайте ме на Twitter в http://www.twitter.com/pagalvin

Бърз и лесен: Задаване на размера на елементите в списъчно поле в ап магазина на Windows

В Windows хранилище ап аз съм създаване, Искам да покаже на потребителя различни информационни съобщения.  Вдигнах списък като инструмент, за да го покаже, така че те да преминете през тях и всички добри неща. 

Съобщенията са информационни само, така че не е необходимо да се осигури че всички допълнителни интервали около тях, тъй като потребителят никога не може да ги избирате за нищо.  Поведението по подразбиране на списък предоставя значителна сума на облицовка и аз исках да се отървете от него.  Ами.... можете не може да направи този вид на нещо на списъчното директно.  ВЪПРЕКИ ТОВА, Можете да го направите на артикулите, можете да добавите:

        частни невалидни 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 li = нов ListBoxItem();
            Li.Съдържание = t;
            Li.MaxHeight = 25;
            thisPadding = нов Дебелина(5, 0, 5, 0);
            Li.Подложка = thisPadding;

            GameStateLog.Items.Insert(0,Li);
        }

в по-горе, Аз съм създаване на текстово поле и настройка на шрифта му, неговото запълване, н.

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

Най-накрая, Аз Поставете ListBoxItem в падащ списък.  (Искам да покаже най-новите съобщения в горната част на списъка, Следователно Вмъкване(0,Li) вместо един прост добавяте() Позоваването.).

Аз ще бъда ощипвам това малко преди това, аз съм много щастлив с поведението на падащ списък, но на модел, показан по-горе е било много плодотворно.  Надявам се някой друг счита за полезна.

</край>

undefinedАбонирайте се за моя блог.

Следвайте ме на Twitter в http://www.twitter.com/pagalvin