Ako zadať ľudí ako rozsah hľadania / Zdroj obsahu služby SharePoint 2013 REST API

Ja som nemal dôvod na prácu so službou SharePoint 2013 Rozhranie API vyhľadávania cez ZVYŠOK po prvýkrát. Chcel, aby vyhľadať ľudí, nie dokumentov. Kľúč učenia tu je to, že zadáte obsah zdrojov cez jeho GUID (alebo aspoň v tomto prípade). Nasledujúcich jQuery úryvok ukazuje ako:

    loadExpertsAsync: Funkcia() {

        jQuery.support.cors = pravda;

        $.AJAX({
            adresa URL: this.CreateFullApiUrl() +
                "?querytext = "portály"&sourceid = "b09a7990-05ea-4af9-81ef-edfab16c4e31"" +
                "&selectproperties = "LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Zručnosti,About,Záujmy,Funkcia,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl "" +
                "&RowLimit = 99",
            metóda: "ZÍSKAŤ",
            hlavičky: { "Prijať": "Aplikácia/json; Odata = podrobného" },
            Vyrovnávacia pamäť: FALSE,
            úspech: Funkcia (výsledok) {

V mojom prípade, Som beží API proti SharePoint online. Získať identifikátor GUID, Sledoval som tieto kroky:

  1. Prístup k službe SharePoint admin center
  2. Vyberte "Hľadať" z ľavej navigáciu
  3. Vyberte "Spravovať zdroje výsledok"
  4. Vyberte "Miestni ľudia výsledky"
  5. Pozrite sa na URL.

Moja adresa URL hľadal niečo podobné:

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

Sourceid parameter je to, čo pracoval pre mňa.

(Chápem, že Identifikácia zdroja môže byť v skutočnosti druh trvalé vec s SP, but I’ll always check anyway 🙂 ).

</koniec>

undefinedVyberajte môj blog.

Nasledujte ma na stebėtų na http://www.twitter.com/pagalvin

Príklad SharePoint ZVYŠOK hovory

Tu je súbor vzorka ZVYŠOK hovory, že práca pre mňa, a môže vám pomôcť aj. Ako 02/2014, there are two examples 🙂

  1. Odkaz na stĺpec s medzerami v jej mene
  2. Referenčné multi-výber stĺpca
  3. Vyhľadávanie ľudí cez ZVYŠOK

 

Budem pridávať do tohto ako plynie čas.

Tu sú niektoré užitočné farby som našiel aj:

Odkaz na stĺpec s medzerami v jej mene

Vytvoriť vlastný zoznam s stĺpec s názvom "Blog autora" (priestor medzi Blog a autora).

$select odkaz na tento stĺpec je:

image

Jednoducho vymeniť miesto s "_x0020_". Vidíme _x0020_ v mnohých príkladov cez internety a ZVYŠOK nie je iný.

Ak nemáte to, ste povinný chybové hlásenie, ako je tento:

Výraz “Blog autora” nie je platný.

Ľahké.

Referenčné multi-vybrať vyhľadávací stĺpec

Nastaviť:

  1. Vytvorenie vlastného zoznamu s názvom kategórie.
  2. Add some categories Pridať. Pridal som kategórie thusly:image
  3. Vytvoriť ďalší vlastný zoznam s názvom MockBlog a pridávať kategórie ako zoznam s viacerými výbermi stĺpec (alebo stĺpec lokality či je ako hodíte).

Pridať niektoré položky do zoznamu Mockblog a ste pripravení.

Ajax hovor style pomocou jQuery bude vyzerať nasledovne:

AdresaURLServera  = "/_api web, zoznamy/GetByTitle("MockBlog")/položky" +
             "?$Vyberte = názov,Kategórie/titul,Blog_x0020_Author titul" + 
             "&$rozšírenie = Blog_x0020_Author,Kategórie";

Sme ti SharePoint "mi dať názov pre všetky kategórie (Kategórie/titul). Dostať skutočné hodnoty pre Hlava Autor: $RozbaliťZoznam kategórie Ing." (Môj pohodové parafráza je pravdepodobne celkom voľná, ale ako som vyložil ho).

Ak robíte to cez JavaScript a pomocou Fiddler pozrieť na výstupe, dostanete niečo takého na oplátku:

 

image

(Vyššie uvedené je objekt JSON)

Vyhľadávanie ľudí cez ZVYŠOK

I blogged o tomto samostatne. Kľúčom k úspechu je nastaviť parameter identifikáciou zdroja ktorého hodnota identifikátora GUID zdroja obsahu miestnych ľudí. (Zdroje obsahu sa kedysi hovorilo rozsahy a je to moje-oh-my tak ťažké nebude volať všetko rozsah pre mňa!).

Prečítajte si viac o tom tu.: http://www.mstechblogs.com/paul/?p=10385

 

</koniec>

undefinedVyberajte môj blog.

Nasledujte ma na stebėtų na http://www.twitter.com/pagalvin

Rýchle a jednoduché: Vytvoriť lokalitu SharePoint pomocou prenosov REST

Existuje veľa zdrojov v okolí ukazujú, že ako na to, ale nemohol som nájsť komplexné go-na odkaz, tak sme tu.

Môžete vytvoriť lokalitu SharePoint pomocou rozhrania REST API.  Tu je úplne upečené príklad:

<!--
    SiteRequestForm.html: Zhromažďovať informácie a vytvoriť stránky pre používateľa.
-->

<centrum>
<Tabuľka>
    <TR>
        <TD>Názov lokality:</TD>
        <TD><vstup typ= "text" meno= "SiteName" Identifikácia= "SiteName" /></TD>
    </TR>
    <TR>
        <TD ColSpan= "2">
            <vstup typ= "Odoslať" Identifikácia= "CreateSiteButton" hodnota= "Vytvoriť stránky" />
        </TD>
    </TR>
</Tabuľka>
</centrum>

<skript src="../Plugins/jQuery-1.11.0.min.js"></skript>

<skript>
var CreateSiteLogicContainer = {

    createSiteData: {
            "parametre": {
                __metadata: { "typ": "SP.WebInfoCreationInformation" },
                URL: "Paultest1",
                Hlava: "Paultest1",
                Popis: "zvyšok-vytvoril web Paul!",
                Jazyk: 1033,
                WebTemplate: "sts",
                UseUniquePermissions: FALSE
            }
    },

    createSite: Funkcia () {

        jQuery.support.cors = pravda;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").Val();
        
        $.AJAX({
            adresa URL: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            metóda: "PRÍSPEVOK",

            hlavičky: {
                "Prijať": "aplikácie/json; Odata = podrobného",
                "content-type": "aplikácie/json;Odata = podrobného",
                "X-RequestDigest": $("#__REQUESTDIGEST").Val()
            },

            údaje: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            úspech: Funkcia () { Upozornenie("úspech"); },
            chyba: Funkcia () { Upozornenie("chyba"); }

        });
    },

    wireUpForm: Funkcia () {
        $("#CreateSiteButton").kliknite na tlačidlo(Funkcia () {
            Upozornenie("Asi aby sa pokúsila vytvoriť lokalitu.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</skript>

Keď úspešný, získate balíčka JSON reakciu takého:

image

Moje kľúčové myšlienky a poznatky z tejto zahŕňajú:

  • Tento prístup využíva jQuery.  V mojom prípade, knižnice jQuery sa nachádza v ".../ plugins. "  Budete chcieť zmeniť bod na vaše obľúbené miesto JQ.
  • Môžete skopírovať a vložiť tento celý útržok do webovej časti Editor obsahu na stránku a to by malo fungovať v pohode.  Budete chcieť zmeniť koncový bod API volania a overte, či odkazujete JQ správne.
  • URL je vzhľadom na svoje API koncový bod.  V mojom prípade, to je vytvoriť sub-stránky pod https://bigapplesharepoint.com
  • Nemusíte sa poskytnúť obsah-dĺžka. Niektoré príspevky blogu a MSDN dokument predpokladá, že si, ale stalo mi automaticky, čo predpokladám je spracovávaná na samotnú výzvu .ajax $.
  • Tento riadok je potrebné vyhnúť sa "zakázané" odpoveď: "X-RequestDigest": $("#__REQUESTDIGEST").Val().  Existujú iné spôsoby, ako to urobiť, ale to je celkom pekné.  Stratil som odkaz na blog, ktorý poskytuje túto skratku.  H/T na vás, tajomný blogger!

Veľa šťastia a dúfam, že to pomôže niekto.

</koniec>

undefinedVyberajte môj blog.

Nasledujte ma na stebėtų na http://www.twitter.com/pagalvin

Prekonať nepríjemný problém s relatívnymi adresami URL v SharePoint Quick Launch

Chcel som pridať odkaz na rýchle spustenie navigácie druhý deň a povedal mi, SharePoint:

image

Čisto textové verzie, ktorá je:

Zabezpečiť, že URL je platný a začína buď neplatný znak (číselný znak (#) alebo lomka (/)) alebo platný podporovaný protokol (napríklad, "http://’, "https://’, "súbor://’, "ftp://’, "mailto:’, "novinky:’).

"Blech a kiahne!"Povedal som.

Riešenie pre to je používať JavaScript nájsť známe odkaz v paneli pre rýchle spustenie a prepísať jeho správanie.

Tento test, Pridať nový odkaz na vaše stránky test thusly:

image

Použil som jQuery. To vyriešiť, získať niektoré JavaScriptom a jQuery na stranu pomocou svoje obľúbené techniky a riadok kódu takhle:

 

$(dokument).pripravený( Funkcia () {

    $("a:obsahuje("Test URL náhradné")").kliknite na tlačidlo(Funkcia () { Upozornenie("zmenil kliknite na správanie!"); return FALSE;});

});

A bôb je tvoj strýko.

JQuery volič nájde každý <a> značka, ktorá má "Test URL náhradné" vo svojom mene. Ak chcete nájsť-melódiu, ktorá váš odkaz a také.

Nepokoje(Funkcia() prepíše čo SharePoint by urobil, keď používateľ klikol. Uistite sa, že ste "return false", inak to bude robiť svoje veci a potom skúste href vec príliš, takmer určite čo nie je váš cieľ.

Toto bolo robené a test v prostredí SharePoint online ale mal by fungovať aj v 2010 a skôr príliš.

</koniec>

undefinedVyberajte môj blog.

Nasledujte ma na stebėtų na http://www.twitter.com/pagalvin

Rýchle a jednoduché: SharePoint ZVYŠOK volať len vracia 100 Záznamy

Bol som pracoval na verejných čelia webové stránky pre môj SharePoint ambulancií tu New York a to používa veľa hovorov JavaScript a ZVYŠOK Zobraziť obsah.

Počas hlavnej rozvojovej, Vytvoriť malé dataset s len 10 alebo tak riadky vlastného zoznamu a my ZVYŠOK vyzýva všetky vytiahol odtiaľ.  Raz som narazil do zoznamu majú niekoľko sto riadkov údajov na test na očakávaný rast, Zistil som, že som dostala presne 100 riadkov vrátených späť na môj odpočinok hovory.

To je veľmi jednoduchá vec riešiť.  V mojom prípade (a verím, že vo väčšine prípadov), predvolené ZVYŠOK vyzýva na lokalitu SharePoint (a možno aj ako priemyselný štandard?) return 100 riadky.  Vrátiť viac ako predvolené, Použite $top parameter na vašu výzvu, rovnako ako v:

Získajte /Insights Dev/_api/web/lists/GetByTitle("MockBlog")/položky?$vyberte = ID,Hlava,Kategórie/titul,Blog_x0020_Author titul,DatePublished,BlogSummary&$rozšírenie = Blog_x0020_Author,Kategórie&$Filter =&$hore = 9999

Som si vybral 9999 v tomto prípade odvtedy viem, že growth-wise, tam nebude viac ako 200 alebo tak riadky pridané do tohto zoznamu v roku.  Ak sa stane nemotorný, môžeme realizovať niektoré stránkovanie na ceste.

</koniec>

undefinedVyberajte môj blog.

Nasledujte ma na stebėtų na http://www.twitter.com/pagalvin

Rýchle a jednoduché: Vyriešiť "neplatná adresa URL Parameter” problém s UpdateListItems v lists.asmx

Pri práci s UpdateListItems cez lists.asmx, je to jednoduché generovanie chyby:

Neplatná adresa URL Parameter.

Poskytnutá adresa URL obsahuje neplatný príkaz alebo hodnoty. Znova skontrolujte adresu URL.

Môžete získať túto chybu, keď ste zabudli zahrnúť ID v zozname polí na aktualizáciu.  Toto, rovnako ako mnoho z týchto SP webových služieb, je trochu neintuitívne, pretože budete potrebovať zahrnúť ID atribút ID <Metóda> prvok.  A nie ste aktualizované ID a pravdepodobne nikdy chcú v prvom rade.

Táto obálka SOAP funguje:

<soapenv:Obálka xmlns:soapenv ="http://schemas.xmlsoap.org/SOAP/Envelope/ ">
  <soapenv:Orgán>                      
    <UpdateListItems xmlns ="http://schemas.Microsoft.com/SharePoint/SOAP/ ">                     
      <listnate>{C712E2EA-54E1-47AD-9D99-1848C7773E2F}</listnate>                     
        <aktualizácie>                     
         <Dávkové PriChybe ="Pokračovať">
          <Metóda ID ="1" Cmd ="Update">
            <Názov poľa ="CooperativeLock">zamknuté!</Pole>
            <Názov poľa ="ID">1</Pole>
          </Metóda>
        </Dávky>                     
        </aktualizácie>                
      </UpdateListItems>             
  </soapenv:Orgán>         
</soapenv:Obálka>

Ak ste pás ID pole odkaz potom dostanete otravné "Neplatná adresa URL parameter" správa.

</koniec>

undefinedVyberajte môj blog.

Nasledujte ma na stebėtų na http://www.twitter.com/pagalvin

 

Chudák je cache v JavaScriptu

[TL;DR verziu: používanie cookies k ukladaniu výsledky asynchrónne volania; vykreslenie Výsledky posledných asynchrónne volania okamžite a potom overiť po načítaní stránky.]

Bol som pracoval na intranetovej lokalite SharePoint pre klienta, že funkcie, okrem iného, štylizované druhej navigácii ktorého menu voľby sú riadené prostredníctvom pravidelnej starými vlastného zoznamu.  Myšlienka je, že klient dostane kontrolovať "ich" stránky menu bez ovplyvnenia alebo byť zasiahnuté globálnej navigácie vyháňaní to.

(tam je niečo neuveriteľne podvratné pridávanie CEWP, ktorý odkazuje na súbor HTML, ktorý načíta niektoré CSS a JS zásadne zmeniť takmer všetko o webe správanie... ale to je iný post)

Kód pre tento veľmi jednoduchý:

Boľavé miesto tu je, že zakaždým, keď niekto udrie jedným zo stránky, používateľa webového prehliadača je osloviť načítať položky zo zoznamu.  Po dokončení sa dev a testovanie ukázalo veci byť stabilnejší a kompletné, Táto výzva je zbytočné viac ako 99% doby, kedy v ponuke zriedka to zmení.  Má tiež podivné UI ovplyvniť, čo je bežné v tomto odvážnom novom svete hyper-AJAX webových stránok – stránky omietky a až potom v ponuke vykresliť.  Je nervózna a rušivé podľa môjho názoru.  A nervózny. Takže, ukladanie do vyrovnávacej pamäte. 

Som upravil logika thusly:

  • Pohľad na cookie v prehliadači, ktorý obsahuje ponuku ako som naposledy čítal
    • Ak sa našiel, robí to okamžite.  Nemusíte čakať na dokončenie načítania stránky.  (Budete musieť uistite sa, že HTML je strategicky umiestnené tu., ale to nie je ťažké urobiť).
  • Čakať na stránku až do konca nakládky a asynchrónne volanie naložiť menu položky zoznamu pomocou odpočinku alebo lists.asmx alebo čokoľvek, aby
  • Porovnajte čo mám proti cookie
    • Ak sa to zhoduje, zastaviť
    • Inak, pomocou jQuery, dynamicky naplniť veľa Ak <li>je v <ul>
  • Použitie CSS robiť všetko formátovanie
  • Zisk!

Niektoré z vás chcel povedať, "Hej! Neexistuje žiadny skutočný caching deje pretože čítate menu rovnako každý jednotlivý čas.”  A máš pravdu-nejsem dáva server akýkoľvek druh prestávku.  Ale pretože hovor je asynchrónna a stane po stránke počiatočné zaťaženie HTML plne omietky, "Pripadá mi to" lepšie reagovať na užívateľa.  V ponuke omietky docela ako stránku čerpá.  Ak v ponuke dôjde k zmene, používateľ sa podrobí nervózny znovu čerpať z menu, ale iba tento raz.

Existuje niekoľko spôsobov na zefektívnenie tejto cache a pomoct server v rovnakom čase:

  • Zaviesť pravidlo, že "cookie cache" je platný pre minimálne 24 hodín, alebo nejaký iný Časový. Pokiaľ neexistuje žiadna cookie vypršala, použitie cookie ponuky snímka a nikdy hit server.

No... to je všetko, čo príde na myseľ hneď :). 

Ak má niekto nejaké chytré nápady tu by chcel poznať.

A napokon – Táto technika môže byť použitá pre iné veci.  Tento klient strana má mnoho vecí, data-riadený na rôznych stránkach, Mnohé z nich mení pomerne zriedka (ako raz týždenne alebo raz za mesiac).  Ak cielite špecifické oblasti funkčnosti, si môžete dať citlivejšie UI ťahom obsah z miestnej cookie obchodu a vykresľovanie okamžite.  Pripadá mi to rýchlejšie pre užívateľa aj ak nie ukladáte server bez cyklov.  Ste môžete uložiť na server cykly pri rozhodovaní o niektorých podmienkach a spúšťa zruší tento miestnej cookie cache.  To je všetky situačná a diletantský veci a naozaj najviac zábavy :). 

</koniec>

undefinedVyberajte môj blog.

Nasledujte ma na stebėtų na http://www.twitter.com/pagalvin

ako: Nakonfigurujte jednotku Test a Test pokrytia s QUnit.js a Blanket.js pre kanceláriu 365 SharePoint App

Intro

Skúma jednotkové testovanie a test pokrytia JavaScript ako som pracovať na novej aplikácie SharePoint pre službu SharePoint online v Office 365 apartmán.  Zjavné výskum cesty ma viedli k Qunit.js a hneď po ktoré, na Blanket.js.

QUnit dajte mi nastaviť unit testov a ich zoskupujú do modulov.  Modul je len jednoduchý spôsob, ako organizovať súvisiace testy. (Nie som si istý som používať to ako určené, ale funguje to pre mňa tak ďaleko s malým sadu testov doteraz definovali).

Blanket.js integruje s Qunit a ukáže mi aktuálne riadky JavaScript boli – a dôležitejšie – nie boli skutočne vykonané v priebehu vykonávanie skúšok.  To je "pokrytie"-linky, ktoré vykonávajú sú pokryté skúšobnými zatiaľ čo iní nie.

Medzi nastavenia dobrý testovacie prípady a zobrazením pokrytie, môžeme znížiť riziko, že náš kód má skryté vady.  Dobré časy.

Qunit

Predpokladám, že máte vaše Visual Studio projektu nastaviť, Začnite stiahnutím JavaScript balík od http://qunitjs.com.  Pridajte zodpovedajúce CSS a JavaScript na vašich riešenie.  Baňa vyzerá takto:

image

Obrázok 1

Ako môžete vidieť, Bol som pomocou 1.13.0 v tej dobe som napísal tento blog post. Nezabudnite stiahnuť a pridať CSS súbor.

Ktoré z cesty, Ďalším krokom je vytvoriť nejaký druh testu postroj a referenčných Qunit kúsky.  Som testovanie banda funkcie súboru so skriptom tzv "QuizUtil.js", tak som vytvoril stránku HTML s názvom "QuizUtil_test.html" ako je uvedené:

image Obrázok 2

Tu je kód:

<!DOCTYPE HTML>
<HTML xmlns= "http://www.w3.org/ 1999/xhtml">
<vedúci>
    <názov>QuizUtil test s Qunit</názov>
    <odkaz rel= "stylesheet" href="../CSS/qunit-1.13.0.CSS" />
    <skript typ= text/javascript"" src="QuizUtil.js" údajov-kryt></skript>
    <scenár typu ="textu/javascript" src ="qunit-1.13.0.js"></skript>
    <scenár typu ="textu/javascript" src ="blanket.min.js"></skript>

    <skript>
        modul("getIDFromLookup");
        skúška("QuizUtil getIDFromLookupField", Funkcia () {
            var goodValue = "1;#Paul Galvin";

            rovnaké(getIDFromLookupField(goodValue) + 1, 2), "ID [" + goodValue + "] + 1 by mala byť 2";
            rovnaké(getIDFromLookupField(Nedefinovaný), Nedefinovaný, "Nedefinovaný vstupný argument by sa mal vrátiť Nedefinovaný výsledok.");
            rovnaké(getIDFromLookupField(""), Nedefinovaný, "Prázdne vstupný argument by sa mal vrátiť hodnotu undefined.");
            rovnaké(getIDFromLookupField("gobbledigood3-thq;dkvn ada;skfja sdjfbvubvqrubqer0873407t534piutheqw;VN"), Nedefinovaný,"Mali by vždy vrátiť výsledok kabriolet Integer");
            rovnaké(getIDFromLookupField("2;#nejakej inej osobe"), "2", "Kontrola [2;#nejakej inej osobe].");
            rovnaké(getIDFromLookupField("9834524;#dlhý hodnota"), "9834524", "Veľké hodnoty testu.");
            notEqual(getIDFromLookupField("5;#niekto", 6), 6, "Testovanie notEqual (5 nerovná sa 6 pre tento vzorka: [5;#niekto]");

        });

        modul("htmlEscape");
        skúška("QuizUtil htmlEscape()", Funkcia () {
            rovnaké(htmlEscape("<"), "&lt;", "Unikol menej ako prevádzkovateľ ('<')");
            rovnaké(htmlEscape("<div class =  "someclass">Nejaký text</DIV>"), "&lt;div triedy =&quot;someclass&quot;&gt;Nejaký text&lt;/DIV&gt;", "Zložitejšie testovací reťazec.");
        });

        modul("getDateAsCaml");
        skúška("QuizUtil getDateAsCaml()", Funkcia () {
            rovnaké(getDateAsCaml(nové Dátum("12/31/2013")), "2013-12-31T:00:00:00", "Testovanie tvrdý kódovaný dátum: [12/31/2013]");
            rovnaké(getDateAsCaml(nové Dátum("01/05/2014")), "ROKU 2014-01-05T:00:00:00", "Testovanie tvrdý kódovaný dátum: [01/05/2014]");
            rovnaké(getDateAsCaml(nové Dátum("01/31/2014")), "ROKU 2014-01-31T:00:00:00", "Testovanie tvrdý kódovaný dátum: [01/31/2014]");
            rovnaké(getTodayAsCaml(), getDateAsCaml(nové Dátum()), "getTodayAsCaml() by sa mal rovnať getDateAsCaml(nový dátum())");
            rovnaké(getDateAsCaml("nezmysel hodnota"), Nedefinovaný, "Snažte sa získať dátum s hodnotou nezmysel.");
            rovnaké(getDateAsCaml(Nedefinovaný), Nedefinovaný, "Skúste získať dátum [Nedefinovaný] dátum.");
        });

        modul("getParameterByName");
        skúška("QuizUtil getParameterByName (z reťazca dotazu)", Funkcia () {
            rovnaké(getParameterByName(Nedefinovaný), Nedefinovaný, "Snažte sa dostať Nedefinovaný parameter by sa mal vrátiť Nedefinovaný.");
            rovnaké(getParameterByName("neexistuje"), Nedefinovaný, "Skúste si hodnoty parametra, keď vieme, že parameter neexistuje.");

        });

        modul("Cookies");
        skúška("QuizUtil rôznych cookie funkcie.", Funkcia () {
            rovnaké(setCookie("skúška", "1", -1), getCookieValue("skúška"), "Získať nastaviť súbor cookie by mal fungovať.");
            rovnaké(setCookie("anycookie", "1", -1), pravda, "Nastavenie platné varenie mali vrátiť"pravda".");
            rovnaké(setCookie("blázon cookie meno !@#$%"%\^&*(()?/><.,", "1", -1), pravda, "Nastavenie názvu zlé cookie by sa vrátiť"false".");
            rovnaké(setCookie(Nedefinovaný, "1", -1), Nedefinovaný, "Absolvovanie Nedefinovaný názov cookie.");
            rovnaké(getCookieValue("neexistuje"), "", "Cookie neexistuje testu.");
        });

    </skript>
</vedúci>
<telo>
    <DIV Identifikácia= "qunit"></DIV>
    <DIV Identifikácia= "qunit-svietidlo"></DIV>

</telo>
</HTML>

Existuje niekoľko vecí sa deje tu.:

  1. Odkazovanie na môj kód (QuizUtil.js)
  2. Odkazovanie na Qunity.js
  3. Definovanie niektorých modulov (getIDFromLookup, Súbory cookie, a.i.)
  4. Umiestnenie <DIV> ktorého ID je "qunit".

Potom, Môžem len vytiahnuť túto stránku a dostanete niečo takého:

image

Obrázok 3

Ak sa pozriete cez vrchol, máte niekoľko možností, z ktorých dva sú zaujímavé:

  • Skryť prešiel testami: Docela zrejmé.  Môžete pomôcť vaše oči len vidieť problémové oblasti a nie veľa neporiadok.
  • Modul: (Rozbaľovací zoznam): To bude filtrovať testy na len tých skupín skúšok chcete.

Pokiaľ ide o samotných – pár komentárov testov:

  • Je samozrejmé, že musíte napísať svoj kód tak, aby sa testovatelné na prvom mieste.  Pomocou nástroja môže pomôcť uplatneniu tejto disciplíne. Napríklad, Mal som funkciu s názvom "getTodayAsCaml()”.  To nie je veľmi testovatelné, pretože to trvá žiadny vstupný argument a to vyskúšať pre rovnosť, budeme musieť neustále aktualizovať kód testu odrážať aktuálny dátum.  Som prepracovaný Pridanie dát vstupný parameter potom absolvovanie aktuálny dátum kedy chcem dnešného dátumu vo formáte CAML.
  • Qunit rámci dokumenty svojej vlastnej testy a sa zdá byť docela silný.  To môže robiť jednoduché veci, ako je testovanie pre rovnosť a má tiež podporu pre ajax štýle volania ("skutočné" alebo Posmívali pomocou vášho obľúbeného posměvače).
  • Prechádzajú procesom tiež núti vás premyslieť hrana prípady-čo sa stane s "nedefinované" alebo null je odovzdaný do funkcie.  Je to mŕtvy jednoduchý test týchto scenárov von.  Dobré veci.

Pokrytie s Blanket.js

Blanket.js dopĺňa Qunit sledovanie skutočného riadky kódu vykonať v priebehu beží vaše testy.  Integruje priamo do Qunit takže aj keď je úplne samostatná app, hrá pekne-naozaj vyzerá to je jeden plynulý app.

To je blanket.js v akcii:

image Obrázok 4

image

Obrázok 5

(Vlastne musíte kliknúť na "Umožniť pokrytie" políčko v hornej [Pozri obrázok 3] aby to bolo.)

Zvýraznenej čiary na obrázku 5 neboli realizované niektorý z mojich testov, Takže Musím vymyslieť test, ktorý by sa mohli spustiť ak chcem plné pokrytie.

Získajte blanket.js pracuje podľa nasledujúcich krokov:

  1. Stiahnuť z: http://blanketjs.org/.
  2. Pridajte ju do vášho projektu
  3. Aktualizovať stránku postroj testu (QuizUtil_test.html v mojom prípade) takto:
    1. Referenčný kód
    2. Ozdobte svoj <skript> odkaz takhle:
    <skript typ= text/javascript"" src="QuizUtil.js" údajov-kryt></skript>

Blanket.js zdvihne atribút "údajov-obal" a má svoje kúzlo.  Háky do Qunit, Aktualizácia používateľského rozhrania pridať možnosť "Povoliť pokrytie" a voila!

Zhrnutie (TL; DR)

Použitie Qunit písať testovacie prípady.

  • Stiahnite si ju
  • Pridajte ju do vášho projektu
  • Napísať test postroj stránku
  • Vytváranie testov
    • Niektoré kód, aby sa testovatelné refactor
    • Buďte kreatívny!  Myslím, že blázon, možné scenáre a testovať ich Každopádne.

Použitie blanket.js zabezpečiť pokrytie

  • Skontrolujte, či Qunit funguje
  • Stiahnuť blanket.js a pridajte ho do vášho projektu
  • Pridajte ju do postroja testovaciu stránku:
    • Pridať odkaz na blanket.js
    • Pridať atribút "údajov-kryt" na vašom <skript> Tag
  • Spustiť Qunit testov.

Nikdy som nič z toho predtým a mal nejaké primitívne veci pracovať v niekoľkých hodín. 

Happy testovanie!

</koniec>

undefinedVyberajte môj blog.

Nasledujte ma na stebėtų na http://www.twitter.com/pagalvin

Posledný budete niekedy nosiť oblek?

[Rýchly Poznámka-to je docela dlhý príspevok na zamestnanie otvor pre mojej skupiny tu v New Yorku a budete musieť žiť v tri oblasť štátu, ak máte záujem.]

Pripojil som Slalom Consulting nad 18 mesiacmi a že je to moja práca najdlhšie trvajúci od 2007. Nemal som v pláne to tak. Pred reťazec prácu poskakovanie, ktorá začala s môjho skok do sveta SharePoint, Bol som na jednom mieste za jedenásť rokov. Konečne som našiel nové, trvalé miesto na prácu na diaľkových na Slalom.

Toto miesto je stále a potrebujem pomoc kontrolovať, že. Druh potrebujem pomoc sa zvyčajne nazýva "Architekt pre riešenia SharePoint", hoci som našiel architekt slovo cez a/alebo nesprávne používať v priestore SharePoint pre chvílicasu teraz. Bol som zápasí o tom, ako o tomto blogu. Nechcem, aby jednoducho zoznam banda odrážok v štýle kocky/Monster. Moje vynikajúce nábor rovesníkmi robil, že už :). Takže, Som sa rozhodol prijať prístup "deň v živote". Prezrieť si to a zvážiť:

1) Ak odvolanie a

2) Či viete v kostiach, že môžete robiť to.

Ak áno, kontaktujte ma (Paul.Galvin@slalom.com) a poďme hovoriť.

Ide o to, čo môžete očakávať, že si typický týždeň/mesiac ako architekt riešenia na môj tím:

  • Spustenie projektov, často viac ako jeden po druhom. Niektoré projekty sú veľké a tak by vlastníte, že jeden projekt. "Beží" projekt znamená, že máte dohľad a zodpovednosť za celkovú kvalitu dodávky. V takmer každom prípade musíte PM a naozaj silný tím DEVS, BAs, UX ľudí, atď., na podporu vám. Ale budete mať hlavný klient vidí tvár, trustov, atď. Neexistuje žiadny schováva v tieni v tejto úlohe :). Budem účtovať tento čas a cieľom je udržať si dosť zaneprázdnený to 80 percent času.
  • Pomoc s papierovaním – prasníc, Pracuje, paluby-všetky dobré veci. Myslím, že máme náš PRASNICA proces nadol docela tesné a pevné, takže je pomerne stereotypné. Ak ste zvyknutí na písanie prasníc dnes, Náš proces nie bude výzvou pre vás. Pracuje – tieto sú trochu ťažšie. Majú tendenciu byť na zákazku v prírode začína a pracuje zvyčajne vytiahnuť vo viacerých rôznych autorov. Je to dobré aj zlé, ale hlavne dobrou. To si scrambly, keď potrebujeme, aby žonglovať potrebu vynikajúce služby zákazníkom, zároveň sa snaží získať nové pracovné. Pravdepodobne nebude vlastníte RFP, ale budete vyzvaní prispieť sekcie.
  • Obchodných hovorov, ale nie bližšie. V priebehu mesiaca, môžete očakávať, že ísť na niekoľkých obchodných hovorov s náš tím predaja. Budete mať MSP v miestnosti, Robte si poznámky a pomôcť formovať riešenie. Avšak, ste zvyknutý byť požiadal alebo očakáva, že zvládnuť predajného cyklu od začiatku do konca. Nemusíte predať ","Stačí byť pokojný hlas expert rozumu v miestnosti. To buduje dôveru a to je dôvod, prečo ste tam. samozrejme, Ak sa vám páči, predaj, potom je tu priestor pre vás rásť aj tu.
  • Pomoc s náborom. Máme nejaký druh postúpenia program, Takže ak viete, že naozaj silné ľudí v komunite, ktoré si myslíte, že by mali byť súčasťou Slalom, môžete využiť týmto spôsobom. Sme zasvätili personalistov (ktorí sú vynikajúce) robiť leví podiel na tento druh práce. Skutočnú pomoc je pohovory uchádzačov – sú dobrou voľbou kultúrno? Oni vedia svoje veci? Môžu urobiť * svoje * život jednoduchší? 🙂 This comes in spurts, pár krát za mesiac, Hoci v niektorých mesiacoch by ste nie to vôbec.
  • Pomôcť určiť najlepšiu prax, vybudovať naše IP a nás konkurencieschopnejšími na trhu. Ste skúsený človek/gal. Ste boli okolo bloku-nie len v službe SharePoint, ale máte skúsenosti v iných technológií a prežili dobré a zlé (dokonca aj hrozné) projekty po celom. V dôsledku, viete, čo funguje a čo nie. Budem vás chceme zdieľať skúsenosti s nami na každý deň základ v taktickej zmysel (tj. Beh vaše projekty naozaj dobre) ale aj strategicky. "Best practices" je trochu nadužívaniu ako výraz a váhať použiť. Základnou myšlienkou je, že ste prichádza ako skúsený človek s hlboko a relevantné skúsenosti a chceme integrovať najlepšie vaše poznatky ako môžeme zapojiť so zákazníkmi na každý deň základ.
  • baviť sa – sme veľmi integrované partia. Chcem sa vyhnúť ďalším frázy, ale je to naozaj apt v tomto prípade-sme tvrdo pracovať (druh) a hráme ešte ťažšie :). Tam je Aaron Sorkin druhu žartovanie tu., izba je vždy plná chytré ľudí, Máme radi naše pitie a organizujeme spravodlivé množstvo zábavných podujatí – filmový večer, Baseball výlety (aj keď sú hrozné, prakticky zlé tímy).

Ak by súčet to všetko do jedno slovo, By som použiť slovo "vedenie." Vedúci projektov, prevziať úlohu vedenia v budove, v praxi (IP, budovanie tímu), atď.

Ale počkajte! Tam je viac! Prečo inak pracovať na Slalom?

  • Pozoruhodné jednoty zámeru – každý, kto chce pestovať túto vec von. "Táto vec" je v New Yorku úradu. Všetci sú na palube s týmto.
  • Vietor vo vašom plachiet – sestra kancelárie, sestra praktiky-Slalom je "full service" poradenstvo organizácie. Aj viesť až prax SharePoint ("prax oblasti viesť" v slalome žargón). Mám sestru praktík v 11 iné úrady Slalom. Takže aj keď som kráľ pokiaľ SharePoint je znepokojený tu Slalom New York, Mám peer praktiky v Chicagu, Seattle, Dallas, Atlanta, Boston, atď. z ktorých môžete čerpať podporu. Je to naozaj to najlepšie z oboch svetov – značnú autonómiu tu v New Yorku, ale prístup k ton talent celej organizácii.
  • Vietor v predajnom (2) -Robíme viac než SharePoint – oveľa viac. Robíme BI, CRM, UX, podnikateľské poradenstvo, Mobile, Zákaznícky vývoj a iné. Sme dobrí krížový predaj medzi sebou a my sme dobrý obraz – a čo je dôležitejšie, poskytovanie po-"full service" obrázok pre našich klientov. To je zvlášť lákavé pre mňa. Bol som na mnohých menšie orgs pracovať na SharePoint koncertov a frustrovaní znova a znova, pretože sme boli holub dierovaného ako "SharePoint ľudí." To sa nestane s Slalom a dostaneme na ďalšie zaujímavé prácu v dôsledku.
  • Miestny model-žiadne Cestovanie.
  • Dlhodobého rastu – Slalom bol bude gangbusters. Spousta rastu a stability. Rast znamená aj to, že musíme najať lídri dnes hlavu nové tímy ako sme pridať viac klientov a zamestnancov na podporu týchto klientov.

Mohol som ísť na, ale som už pravdepodobne preč na dlhú dobu. Myslím, že som zachytil v podstate tu. Ak uvažujete o zmene pracovných miest, a to vyzerá dobre na vás, Poďme si pohovoriť.

Ak ste spokojní vo svojej súčasnej práci-hovorme rovnako :). Bol v mnohých miestach, a bol veľmi "radi" v čase. Slalom je iný a uvítal by možnosť presvedčiť, že.

</koniec>

undefinedVyberajte môj blog.

Nasledujte ma na stebėtų na http://www.twitter.com/pagalvin

Rýchle a jednoduché: Nastaviť veľkosť položiek v zozname v predajni Windows Store App

V Windows Store App vytváram, Chcem ukázať užívateľovi rôzne informačné správy.  Zdvihol som ListBox ako nástroj najavo tak, že môžete prechádzať ich a všetky dobré veci. 

Správy sú len informatívne, Takže nie je potrebné poskytovať všetky, ktoré extra prázdne okolo nich, pretože používateľ môže nikdy vybrať pre čokoľvek.  Predvolené správanie ListBox poskytuje značné množstvo polstrovanie a chcel sa toho zbaviť.  No.... nemôžete urobiť niečo takého na ListBox priamo.  AVŠAK, Môžete to urobiť na položky pridať:

        súkromné neplatné AddGameStateLogMessage(reťazec theMessage)
        {
            TextBox t = nové TextBox();
            t.Text = GameStateCounter    + ": " + theMessage;
            t.TextWrapping = TextWrapping.Wrap;
            t.MinWidth = 400;
            Hrúbka thisPadding = nové Hrúbka(5, 0, 5, 0);
            t.Padding = thisPadding;
            t.FontSize = 12;

            ListBoxItem li = nové ListBoxItem();
            li.Obsah = t;
            li.MaxHeight = 25;
            thisPadding = nové Hrúbka(5, 0, 5, 0);
            li.Padding = thisPadding;

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

vo vyššie uvedenom, Som vytvorenie textového poľa a nastavenie jeho písmo, jej výplň, atď.

Ďalšie, Vytvoriť ListBoxItem a nastavte jej obsah formátovaného textového poľa.

Nakoniec, ListBoxItem vložiť do zoznamu.  (Chcem ukázať najnovšie správy v hornej časti zoznamu, preto vložka(0,li) namiesto jednoduché pridať() vyvolanie.).

Budem ladením to trochu skôr, ako som naozaj spokojný s ListBox správanie ale vzor vyššie bolo veľmi plodné.  Dúfajme, že niekto nájde to užitočné.

</koniec>

undefinedVyberajte môj blog.

Nasledujte ma na stebėtų na http://www.twitter.com/pagalvin