Hogyan lehet megadni az emberek keresési hatókörként / Tartalomforrások SharePoint 2013 REST API

Volt az oka, hogy működjön együtt a SharePoint 2013 Via többi először Search API. Azt akartam, hogy keressen az emberek, nem dokumentumokat. A kulcs itt az, hogy a tanulás megadhatja a tartalomforrások keresztül a globálisan egyedi Azonosítóra (vagy legalábbis ebben az esetben). A következő jQuery részlet megmutatja, hogy hogyan:

    loadExpertsAsync: függvény() {

        jQuery.support.cors = igaz;

        $.Ajax({
            URL: Ez.CreateFullApiUrl() +
                "?QueryText = "portálok"&SourceId = "b09a7990-05ea-4af9-81ef-edfab16c4e31"" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Készségek,AboutMe,Érdekeit,Munkakör,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&a ROWLIMIT = 99",
            a módszer: "KAP",
            fejlécek: { "Fogadja el": "Application/json; OData = verbose" },
            gyorsítótár: hamis,
            siker: függvény (eredmény) {

Az én esetemben, Én futás a API ellen SharePoint online. Ahhoz, hogy a globálisan egyedi azonosító, Követtem a lépéseket:

  1. Hozzáférés a SharePoint admin center
  2. Válassza a "keresés", a bal oldali navigációs
  3. Válassza a "Manage eredmény források"
  4. Válassza ki a "Helyiek eredmények"
  5. Nézd meg az URL.

Az én-m URL nézett valamit, mint:

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

A sourceid paraméter mi munkás értem.

(Megértem, hogy a sourceid valójában lehet egyfajta állandó dolog-val SP, de azért mindig megnézem 🙂 ).

</vége>

undefinedSubscribe to my blog.

Kövesse nekem Twitter http://www.twitter.com/pagalvin

Példa SharePoint többi hívások

Itt van egy minta többi hívások, hogy működik nekem, és talán segít, hogy ki is. Mint a 02/2014, there are two examples 🙂

  1. Hivatkozik egy oszlopra, a nevében szóközöket tartalmazó
  2. Hivatkozás a több-Select oszlop
  3. Keresztül a többi ember lekérdezéshez

 

Majd hozzáteszik, hogy ez az idő múlásával.

Itt van néhány hasznos festékek, azt találtuk, valamint:

Hivatkozik egy oszlopra, a nevében szóközöket tartalmazó

Egyéni lista készítése "Blog szerzője" nevű oszlop (a Blog és a szerző közötti tér).

A $select való hivatkozást az oszlop van:

image

Egyszerűen cserélje ki a helyet a "_x0020_". A _x0020_ számos példa látjuk át a internets és nem különbözik a többi.

Ha ezt nem teszed, te vagy a felelős, hogy kap egy hiba üzenet mint ez:

A kifejezés “Blog szerzője” Érvénytelen.

Elég könnyű.

Hivatkozás a multi-select keresőoszlop

Beállítása:

  1. Kategória nevű egyéni lista létrehozása.
  2. Bizonyos. Én hozzá a kategóriák imigyen:image
  3. Hozzon létre egy egyéni listát, úgynevezett MockBlog, és hozzá a kategóriákat, mint a Többszörös kijelölési lista oszlopa (vagy oszlop oldalon, ha ez hogyan roll).

Egyes elemek hozzáadása a Mockblog listát, és készen áll.

Az Ajax style hívás segítségével jQuery fog kinézni:

serverUrl  = (egyenlőségjel) "/_api/web/lista/GetByTitle("MockBlog")/elemek" +
             "?$Válasszon = cím,Kategóriák/cím,Cím/Blog_x0020_Author" + 
             "&$Bontsa ki a = Blog_x0020_Author,Kategóriák";

Mesélünk SharePoint "Adj címet a kategóriák (Kategóriák/cím). Kap a tényleges értékek Cím által $Bontsa ki anek a Kategóriák listában." (Valószínűleg nagyon laza az én nyugodt parafrázisa, de ez milyen vagyok értelmezése).

Ha csinálsz ez keresztül JavaScript, és Hegedűs segítségével tekintse meg a kimeneti, cserébe kap valamit, mint ez:

 

image

(A fenti egy JSON objektumot)

Keresztül a többi ember lekérdezéshez

Én blogged erről külön-külön. A legfontosabb, hogy adja meg a sourceid paramétert, amelynek értéke a helyi emberek tartalomforrás GUID-. (Tartalomforrások hozzászokott lenni hatókörök, és a my-ó-én olyan nehéz, hogy nem hívja mindent nekem hatókör!).

Olvas több erről itt: http://www.mstechblogs.com/paul/?p=10385

 

</vége>

undefinedSubscribe to my blog.

Kövesse nekem Twitter http://www.twitter.com/pagalvin

Gyors és egyszerű: A többi SharePoint-webhely létrehozása

Vannak sok erőforrást, ezen a környéken: azt mutatják, hogyan kell ezt csinálni, de én nem tudott talál egy átfogó go-to link, Tehát itt vagyunk.

A REST API-t használó SharePoint-webhely létrehozása  Itt van egy teljes mértékben sült példa:

<!--
    SiteRequestForm.html: Információkat gyűjt, és létrehoz egy webhelyet, a felhasználó számára.
-->

<központ>
<táblázat>
    <TR>
        <TF>Hely neve:</TF>
        <TF><bemenet típus= "szöveg" név"SiteName =" azonosító"SiteName =" /></TF>
    </TR>
    <TR>
        <TF colspan"2 =">
            <bemenet típus= "submit" azonosító= "CreateSiteButton" érték= "A webhely létrehozása" />
        </TF>
    </TR>
</táblázat>
</központ>

<parancsfájl src="../Plugins/jQuery-1.11.0.min.js"></parancsfájl>

<parancsfájl>
var CreateSiteLogicContainer = {

    createSiteData: {
            "paraméterek": {
                __metadata: { "típus": "SP.WebInfoCreationInformation" },
                URL-címe: "Paultest1",
                Cím: "Paultest1",
                Leírás: "többi létrehozott web Paul!",
                Nyelv: 1033,
                A rendszer: "sts",
                UseUniquePermissions: hamis
            }
    },

    createSite: függvény () {

        jQuery.support.cors = igaz;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").val();
        
        $.Ajax({
            URL: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            a módszer: "POST",

            fejlécek: {
                "fogadd el": "application/json; OData = verbose",
                "content-type": "application/json;OData = verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").val()
            },

            adatok: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            siker: függvény () { Figyelmeztetés("a siker"); },
            hiba: függvény () { Figyelmeztetés("hiba"); }

        });
    },

    wireUpForm: függvény () {
        $("#CreateSiteButton").kattintson a(függvény () {
            Figyelmeztetés("Arról, hogy próbálja meg, és a webhely létrehozása.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</parancsfájl>

Amikor a sikeres, kapsz egy JSON csomag válasz, mint ez:

image

A fő gondolatok és tanulságait az erre:

  • Ez a megközelítés használja jQuery.  Az én esetemben, a jQuery könyvtár található ".../ plugins. "  Akkor szeretnénk változtatni, hogy a kedvenc JQ helyre.
  • Másolja, és illessze be a teljes kódrészletet a Tartalomszerkesztő kijelző egy oldalon, és ez kellet volna dolgozik csak finom.  Akkor szeretnénk változtatni API-hívás végpontja, és ellenőrizze, hogy helyesen hivatkozott JQ.
  • A URL van képest a API végpont.  Az én esetemben, -a ' teremtő alwebhely alatt https://bigapplesharepoint.com
  • Nem kell, hogy egy content-length. Néhány blogbejegyzések és MSDN dokumentum azt jelenti, hogy nem, de történt számomra automatikusan, amely feltételezem, hogy kezeli a $.ajax hívás, maga.
  • Ez vonal van szükség annak érdekében, hogy elkerüljék a "tiltott" válasz: "X-RequestDigest": $("#__REQUESTDIGEST").val().  Vannak más módjai, de ez nagyon szép.  Nekem van elveszett a link a blog, hogy ezt a parancsikont.  H/T neked, titokzatos blogger!

Sok szerencsét, és remélem, ez segít valaki.

</vége>

undefinedSubscribe to my blog.

Kövesse nekem Twitter http://www.twitter.com/pagalvin

Leküzdeni a bosszantó probléma a relatív URL-címeket a SharePoint gyors dob

Azt akartam, hogy adjunk hozzá egy linket a Gyorsindítás navigációs a minap, és SharePoint azt mondta nekem:

image

Tiszta szöveges változat, hogy az:

Biztosítja, hogy az URL-cím érvényes, és kezdődik vagy érvénytelen karakter (kettőskereszt (#) vagy perjel (/)) vagy egy érvényes támogatott protokoll (például, "http://’, "https://’, "fájl://’, "ftp://’, "mailto:’, "Hírek:’).

"Blech és kecskehimlő!"Azt mondta.

Egy workaround-hoz ez, hogy JavaScript segítségével talál egy ismert láncszem-ban gyors dob és a viselkedés felülbírálásához.

Ez a teszt, új hivatkozás hozzáadása a vizsgálati helyszín imigyen:

image

Én használt a jQuery. Kell megoldani, hogy, egy kis JavaScript és jQuery alakzatot a rajzlapra, a kedvenc technikával, és egy vonal-ból kód, mint ez:

 

$(dokumentum).kész( függvény () {

    $("egy:tartalmaz("Vizsgálati csere URL-címe")").kattintson a(függvény () { Figyelmeztetés("megváltozott kattintson a viselkedés!"); vissza hamis;});

});

És Bob a nagybátyja.

A jQuery-választó találja minden <egy> címke, amely neve "Teszt URL csere". Szabad akar-hoz talál-dallamot, hogy attól függően, hogy a link, és az ilyen.

A ha(függvény() felülbírálja, bármilyen SharePoint lett volna, amikor a felhasználó kattintott. Győződjön meg arról, hogy "return false" vagy máshol ez a dolgokat, és próbálja meg a href dolog túl, és ez szinte minden bizonnyal nem a cél.

Ez történt, és a SharePoint online környezetben teszt de kell jól működik 2010 és korábban is.

</vége>

undefinedSubscribe to my blog.

Kövesse nekem Twitter http://www.twitter.com/pagalvin

Gyors és egyszerű: SharePoint többi hívja csak visszatér 100 Rekordok

Már dolgozik a szemben lévő nyilvános webhely SharePoint gyakorlat itt a New York-i és ez használ egy csomó JavaScript és a többi felkéri a tartalom megjelenítése.

Fővonal fejlesztés során, Hozzon létre egy kis adathalmaz csak 10 vagy olyan sorokat egy egyéni listát és a többi hívások húzta ott.  Egyszer futottam a lista, hogy néhány száz adatsorok kipróbálni, a várható növekedés, Azt tapasztaltam, hogy volt szerzés pontosan 100 vissza a többi kéri a visszaadott sorok.

Ez egy nagyon egyszerű dolog, hogy foglalkozzon.  Az én esetemben (és azt hiszem, a legtöbb esetben), az alapértelmezett többi felhívja a SharePoint (és valószínűleg iparági szabvány?) vissza 100 sorok.  Vissza több, mint az alapértelmezett, használja az $top paramétert a hívás, mint a:

KAP a /Insights Dev/_api/web/lists/GetByTitle("MockBlog")/elemek?$Válasszon = azonosító,Cím,Kategóriák/cím,Cím/Blog_x0020_Author,DatePublished,BlogSummary&$Bontsa ki a = Blog_x0020_Author,Kategóriák&$Filter =&$Top = 9999

Felvettem a 9999 Ebben az esetben mivel tudom, hogy growth-wise, nem lesz több, mint 200 vagy olyan sort a listához hozzáadott egy évben.  Ha ez lesz idomtalan, Mi, végre bizonyos mértékű lapozás lefelé az úton.

</vége>

undefinedSubscribe to my blog.

Kövesse nekem Twitter http://www.twitter.com/pagalvin

Gyors és egyszerű: Oldja meg "Érvénytelen URL-paraméter” probléma-val UpdateListItems-ban lists.asmx

Amikor a dolgozó UpdateListItems via lists.asmx, könnyű a hibát:

Érvénytelen URL-paraméter.

Az URL-cím tartalmaz egy érvénytelen parancsot vagy értéket. Kérjük, ellenőrizze az URL-cím újra.

Lehet kapni ezt a hibát, amikor elfelejted, ID felvenni a mezők frissítése.  Ez, mint egy csomó a SP webes szolgáltatások, egy kicsit counterintuitive, óta ön szükség, hogy az ID az ID attribútuma a <A módszer> elemet.  És te nem frissített ID, és valószínűleg soha nem akarja az első helyen.

A SOAP-boríték működik:

<soapenv:Boríték xmlns:soapenv ="http://schemas.xmlsoap.org/SOAP/Envelope/'>
  <soapenv:Szerv>                      
    <UpdateListItems xmlns ="http://schemas.microsoft.com/SharePoint/SOAP/'>                     
      <listName>{C712E2EA-54E1-47AD-9D99-1848C7773E2F}</listName>                     
        <frissítések>                     
         <Kötegelt OnError ="Továbbra is">
          <Módszer ID ="1" Cmd ="Frissítés">
            <Mező neve ="CooperativeLock">zárt!</A mező>
            <Mező neve ="ID">1</A mező>
          </A módszer>
        </Egy tétel>                     
        </frissítések>                
      </UpdateListItems>             
  </soapenv:Szerv>         
</soapenv:Boríték>

Ha a szalag ki az ID mező hivatkozást, akkor kapsz a bosszantó üzenet "Érvénytelen URL-paraméter".

</vége>

undefinedSubscribe to my blog.

Kövesse nekem Twitter http://www.twitter.com/pagalvin

 

Szegény ember meg gyorsítótár-JavaScript

[TL;DR változat: aszinkron hívások eredményének tárolására cookie-k segítségével; Render korábbi aszinkron hívás eredményét azonnal, és akkor ellenőrzi őket után az oldal teher.]

Már dolgozik a SharePoint intranetes hely egy ügyfél amit jellegét meghatározza, egyebek, stilizált másodlagos navigációs, amelynek menüpontok kezelt keresztül rendszeres régi egyéni listát.  Az ötlet az, hogy az ügyfél kap, hogy "saját" webhely menü nem érintő, vagy befolyásolják a globális navigációs tesz ki.

(van valami hihetetlenül felforgató, egy CEWP, amit váltó-hoz egy HTML-fájlt, amely betölti néhány CSS és JS, hogy alapjaiban változtatja meg egy webhely viselkedése... szinte mindent, de ez egy másik post hozzáadásával kapcsolatban)

A kód részére ez szép egyszerű:

  • Várni a lap betöltése befejezni, és csinál egy hív-hoz teher megjelöl menüpontok segítségével a többi vagy lists.asmx, vagy bármi listájából aszinkron
  • Segítségével jQuery, dinamikusan feltöltése egy csomó, ha <Li>belül a szülő meg <UL> (Lásd Christian Pinder itt ez tecnnique egyszerű magyarázata)
  • Tenni, a formázás CSS segítségével
  • Profit!

A herpesz spot itt az, hogy minden alkalommal, amikor valaki eléri az egyik a telek oldalak, hogy a felhasználó webböngésző elérése, kap elemek a listában.  Egyszer befejeződött a dev és vizsgálat bizonyította a dolgokat, hogy stabil, és teljes, ezt a felhívást a felesleges több mint 99% az idő, mivel az étlap csak ritkán változik.  Ez is birtokol egy furcsa UI hatással, ami gyakran a szép új világban hyper ajaxy webhelyek – az oldal, és csak akkor nem jeleníti meg a menüben.  Az ideges és zavaró az én véleményem.  És ideges. Így, cache-t. 

Módosítottam a logika imigyen:

  • Keres egy süti a böngésző, hogy utoljára olvasni, ez a menü tartalmazza
    • Ha talált, hogy azonnal tegyék.  Ne várjon az oldal betöltésekor.  (Sírnod kell győződj meg a HTML stratégiailag elhelyezett itt, de ez nem nehéz megtenni).
  • Várni a lap betöltése befejezni, és csinál egy hív-hoz teher megjelöl menüpontok segítségével a többi vagy lists.asmx, vagy bármi listájából aszinkron
  • Hasonlítsa össze, mit kapott, szemben a cookie-k
    • Ha ez megegyezik, állj
    • Egyébként, segítségével jQuery, dinamikusan feltöltése egy csomó, ha <Li>meg az a <UL>
  • Tenni, a formázás CSS segítségével
  • Profit!

Néhányan azt fogják mondani, "Hé! van nem igazi cache folyik itt óta olvasod a menü egyébként minden egyes alkalommal.”  És igazad van,-nem adom, a szerver bármilyen típusú szünet.  De azért, mert a hívás aszinkron és történik után az oldal kezdeti HTML tartalom teljesen viszonoz, "érzés" jobban reagál, hogy a felhasználó.  A menü szép teszi, mint az oldal felhívja.  Ha a menüben az történik, hogy a változás, a felhasználó van kitéve egy ideges újra felhívni a menü, de csak ekkor, egy alkalommal.

Vannak néhány ways-hoz ez gyorsítótárazás hatékonyabbá tenni és segíteni a kiszolgáló egy időben:

  • Betesz egy szabály, hogy a "cookie-cache" érvényes minimum 24 órán vagy néhány más időkeret. Mindaddig, amíg van nem lejárt süti, használja a cookie-k menü pillanatképet, és soha nem hit a szerver.

Hát... ennyi jutott eszembe most :). 

Ha akárki birtokol akármi okos ötleteket itt szeretném tudni, hogy őket.

És végül – ezt a technikát lehet használni más dolgok.  Ez az ügyfél oldal számos adat-vezérelt dolog a különböző oldalak, Sokan közülük viszonylag ritkán változó (mint hetente vagy havonta egyszer).  Ha adott területen a funkcionalitás cél, egy rugalmasabb felhasználói Felületet ad húzza a tartalmat a helyi cookie boltból, visszaadás azonnal.  Érzés gyorsabb, hogy a felhasználó még akkor is, ha nem menti a kiszolgálón bármely ciklusok.  Ön lehet mentse a server ciklusok azzal a bizonyos feltételek és kiváltó, hogy érvényteleníti a helyi cookie-cache.  Ez minden szituációs és artsy cucc, és tényleg a legnagyobb élmény :). 

</vége>

undefinedSubscribe to my blog.

Kövesse nekem Twitter http://www.twitter.com/pagalvin

kézikönyv: QUnit.js és Blanket.js egység vizsgálat és teszt lefedettség beállítása egy iroda 365 SharePoint App

Intro

Már vizsgálja egység tesztelése, és a teszt lefedettség a JavaScript, mint én dolgozik-ra egy új SharePoint app SharePoint online, az irodában 365 Suite.  A nyilvánvaló kutatási út vezetett engem Qunit.js és azután, hogy jobb, a Blanket.js.

QUnit hadd beállítása unit tesztek, és csoportosítsa őket modulok.  A modul csak egy egyszerű út-hoz szervez kapcsolódó vizsgálatok. (Nem vagyok benne biztos, én használ ez a tervezettnek, de ez működik nekem eddig eddig van meghatározott kis csoportja).

Blanket.js integrálja, a Qunit, és megmutatja nekem a tényleges sornyi JavaScript-és ami még fontosabb – voltak nem ténylegesen végrehajtott vizsgálatok futtatása során.  Ez az "fedezet"-vonalak, hogy végre tartoznak a vizsgálat míg mások nem.

Jó teszt esetek felállítása és lefedettsége közötti, Mi csökkentheti annak kockázatát, hogy a kód birtokol rejtett hibák.  Jó idő.

Qunit

Feltételezve, hogy a Visual Studio projekt beállítása, Töltse le a JavaScript csomag http://qunitjs.com.  A JavaScript és a CSS megfelelő hozzáadása a megoldáshoz.  Az enyém úgy néz ki mint ez:

image

Ábra 1

Mint te tud lát, Voltam használ 1.13.0 abban az időben ezt a blogbejegyzést írtam. Ne felejtsd el letölteni, és a CSS-fájl hozzáadása.

Hogy az útból, következő lépés, hogy hozzon létre valamilyen teszt felszerszámoz és hivatkozás a Qunit bit.  Én vizsgálat egy csomó funkciók egy kézírás reszelő nevezett "QuizUtil.js", ezért hoztam létre egy HTML-lapot, az úgynevezett "QuizUtil_test.html", mint mutatott-ban:

image Ábra 2

Itt van a kód:

<!DOCTYPE HTML>
<HTML xmlns"http =://www.w3.org/ 1999/xhtml">
<fej>
    <cím>QuizUtil vizsgálat Qunit</cím>
    <Link rel= "stylesheet" href="../CSS/qunit-1.13.0.css" />
    <parancsfájl típus= text/javascript"" src="QuizUtil.js" adatok-fedél></parancsfájl>
    <a parancsfájl típus ="text/javascript" src ="qunit-1.13.0.js"></parancsfájl>
    <a parancsfájl típus ="text/javascript" src ="blanket.min.js"></parancsfájl>

    <parancsfájl>
        modul("getIDFromLookup");
        teszt("QuizUtil getIDFromLookupField", függvény () {
            var goodValue = "1;#Paul Galvin";

            egyenlő(getIDFromLookupField(goodValue) + 1, 2), "Azonosítója [" + goodValue + "] + 1 kell 2";
            egyenlő(getIDFromLookupField(nem definiált), nem definiált, "Definiálatlan bemeneti argumentum vissza undefined eredménye.");
            egyenlő(getIDFromLookupField(""), nem definiált, "Üres bemeneti argumentum kell nem definiált értéket adnak vissza.");
            egyenlő(getIDFromLookupField("gobbledigood3-thq;dkvn ada;skfja sdjfbvubvqrubqer0873407t534piutheqw;vn"), nem definiált,"Kell mindig vissza egy eredmény kabrió egy egész");
            egyenlő(getIDFromLookupField("2;#más személy"), "2", "Ellenőrzése [2;#más személy].");
            egyenlő(getIDFromLookupField("9834524;#hosszú érték"), "9834524", "Nagy érték teszt.");
            notEqual(getIDFromLookupField("5;#bárki, aki", 6), 6, "-A notEqual vizsgálat (5 nincs egyenlő 6 Ez a minta: [5;#bárki, aki]");

        });

        modul("htmlEscape");
        teszt("QuizUtil htmlEscape()", függvény () {
            egyenlő(htmlEscape("<"), "&lt;", "Menekülés a kevesebb, mint üzemeltető ('<')");
            egyenlő(htmlEscape("<div class =  "someclass">Néhány szöveg</Div>"), "&lt;div class =&quot;someclass&quot;&gt;Néhány szöveg&lt;/Div&gt;", "Bonyolultabb teszt karakterláncot.");
        });

        modul("getDateAsCaml");
        teszt("QuizUtil getDateAsCaml()", függvény () {
            egyenlő(getDateAsCaml(új Dátum("12/31/2013")), "2013-12-31T:00:00:00", "Vizsgálati fixen kódolt dátuma: [12/31/2013]");
            egyenlő(getDateAsCaml(új Dátum("01/05/2014")), "2014-01-05T:00:00:00", "Vizsgálati fixen kódolt dátuma: [01/05/2014]");
            egyenlő(getDateAsCaml(új Dátum("01/31/2014")), "2014-01-31T:00:00:00", "Vizsgálati fixen kódolt dátuma: [01/31/2014]");
            egyenlő(getTodayAsCaml(), getDateAsCaml(új Dátum()), "getTodayAsCaml() kell egyenlő getDateAsCaml(új dátum())");
            egyenlő(getDateAsCaml("képtelenség-érték"), nem definiált, "Próbálj nonszensz érték dátuma.");
            egyenlő(getDateAsCaml(nem definiált), nem definiált, "Próbálj meg időpontjában a [nem definiált] dátum.");
        });

        modul("getParameterByName");
        teszt("QuizUtil getParameterByName (a lekérdezési karakterláncban)", függvény () {
            egyenlő(getParameterByName(nem definiált), nem definiált, "Próbálj meg nem definiált paramétert kell vissza undefined.");
            egyenlő(getParameterByName("nem létezik"), nem definiált, "Megpróbál-hoz kap a paraméter értékét, ha tudjuk, hogy a paraméter nem létezik.");

        });

        modul("Cookie-k");
        teszt("QuizUtil különböző cookie-funkciók.", függvény () {
            egyenlő(setCookie("teszt", "1", -1), getCookieValue("teszt"), "Kap egy cookie-t be kell dolgozni.");
            egyenlő(setCookie("anycookie", "1", -1), igaz, "Beállítás érvényes főzés vissza"igaz".");
            egyenlő(setCookie("őrült cookie-név !@#$%"%\^&*(()?/><.,", "1", -1), igaz, "Egy rossz cookie-név beállítást vissza kell"false".");
            egyenlő(setCookie(nem definiált, "1", -1), nem definiált, "Tompított meghatározatlan, mint a cookie-név.");
            egyenlő(getCookieValue("nem létezik"), "", "Cookie nem létezik vizsgálati.");
        });

    </parancsfájl>
</fej>
<szerv>
    <Div azonosító= "qunit"></Div>
    <Div azonosító= "qunit-kellék"></Div>

</szerv>
</HTML>

Van néhány dolog történik itt:

  1. Hivatkozva az én-m kód (QuizUtil.js)
  2. Hivatkozó Qunity.js
  3. Némely elemek meghatározása (getIDFromLookup, A cookie-k, és mások)
  4. Elhelyezése a <Div> akinek azonosítás "qunit".

Majd, Csak húzza, fel ezt az oldalt és Ön kap valamit, mint ez:

image

Ábra 3

Ha megnézed, a tetején, van néhány lehetőség, melyek közül kettő is érdekes:

  • Hide teszt: Elég nyilvánvaló.  Segíthet a szem csak látni a problémás területek, és nem sok rendetlenséget teremt.
  • Modul: (legördülő): Ez kiszűri a vizsgálatok csak azok a csoportok, teszttípusokat le.

Mivel a vizsgálatokat maguk – néhány megjegyzést:

  • Magától értetődik, hogy meg kell írni a kódot, hogy tesztelhető az első helyen.  Az eszközzel segíteni érvényesíteni a fegyelem. Például, Volt egy úgynevezett "getTodayAsCaml funkció()”.  Ez nem nagyon tesztelhető, mivel nincs bemeneti argumentum tart és kipróbálni, hogy az egyenlőség, azt kell, hogy folyamatosan frissíti a teszt-kódot, hogy az tükrözze az aktuális dátumot.  Én refactored, összeadás egy adat bemeneti paramétert, majd az aktuális dátumot, ha akarom, hogy mai CAML formátumban elhaladtak.
  • Qunit keretében dokumentumokat a saját vizsgálatok, és úgy tűnik, elég erős.  Tehetünk, egyszerű dolgok, mint a tesztelés az egyenlőséget, és is birtokol támogat részére ajax style hívások (mind a "valódi", vagy a csúfolt segítségével a kedvenc mocker).
  • Megy keresztül a folyamat is arra kényszerít, hogy gondolja végig, hogy edge esetek-mi történik a "meghatározatlan", vagy null átment egy függvény.  Ez teszi halott egyszerű teszt forgatókönyvekben ki.  Jó dolog.

Blanket.js lefedettség

Blanket.js kiegészíti Qunit nyomon követése a tényleges sornyi kódot, ami fut a vizsgálat során.  Azt integrálja jobb Qunit még akkor is ha-a ' egy egész külön app, játszik szépen-ez igazán néz ki, mint egy varrás nélküli alkalmazás.

Ez a blanket.js akcióban:

image Ábra 4

image

Ábra 5

(Valójában van, hogy kattintson a "Engedélyezi a lefedettség" jelölőnégyzetre, a tetején [ábra 3] hogy ezt a lehetőséget.)

A kijelölt vonalak ábrán 5 nem hajtottak akármi-ból az én-m teszt, így kell, hogy dolgozzon ki egy teszt, hogy okoz számukra, hogy végre, ha azt akarom, hogy teljes lefedettség.

Blanket.js dolgozik, az alábbi lépéseket kap:

  1. Letölt ez-ból http://blanketjs.org/.
  2. Hozzáadása a projekthez
  3. Frissítse tesztoldalát hám (Az én esetemben QuizUtil_test.html) az alábbiak szerint:
    1. Hivatkozás a kód
    2. Díszíteni a <parancsfájl> referencia, mint ez:
    <parancsfájl típus= text/javascript"" src="QuizUtil.js" adatok-fedél></parancsfájl>

Blanket.js felveszi a "adatok-cover" attribútum, és nem a mágikus.  Ez akaszt-ba Qunit, frissíti a felhasználói felület, hogy "A lefedettség engedélyezése" lehetőséget, és voál!

Összefoglaló (TL; DR)

Használ Qunit-hoz ír a teszt esetek.

  • Letölt ez
  • Hozzáadása a projekthez
  • Írjon egy teszt felszerszámoz oldalon
  • Hozzon létre a vizsgálatok
    • Refactor, néhány, a kódot, hogy tesztelhető
    • Kreatív!  Gondolom, az őrült, lehetséges forgatókönyvek és a vizsgálati őket egyébként.

Lefedettség biztosítása blanket.js segítségével

  • Győződjön meg róla, Qunit dolgozó
  • Töltse le a blanket.js, és hozzáadása a projekthez
  • Add hozzá a tesztoldal hám:
    • Blanket.js hozzáadása
    • Adjunk hozzá egy "adat-cover" attribútumot a <parancsfájl> címke
  • Fuss a Qunit-teszt.

Soha nem tett akármi-ból ez előtt, és volt néhány kezdetleges dolog, egy maroknyi órát dolgozik. 

Boldog tesztelés!

</vége>

undefinedSubscribe to my blog.

Kövesse nekem Twitter http://www.twitter.com/pagalvin

Lesz valaha is viselek utolsó öltöny?

[Gyors Megjegyzés-Ez egy elég hosszú hozzászólást egy feladat megnyitása a saját csoport itt New Yorkban, és akkor kell élni a tri-state terület, ha érdekel.]

Csatlakozott szlalom tanácsadás több mint 18 hónappal ezelőtt és amit ideiglenes tákolmány ez a leghosszabb ideig tartó munkám, mivel 2007. Nem terveztem, hogy így. Előtt egy csomó munkát hopping, kezdődött az én ugrást a SharePoint-világ, Tizenegy évig volt egy helyen. Végül találtam egy új, tartós helyen dolgozni a hosszú távú itt Slalom.

Ez a hely növekszik, és szükségem van némely segít ellenőrzi, hogy. A fajta szükségem van segít általában nevezik a "SharePoint megoldások építész", bár azt találtuk, hogy az építész szó több mint és/vagy helytelenül használható a SharePoint-hely egy darabig most. Már küzd, hogy blog erről. Nem akarom, hogy egyszerűen oldalra dől ki egy csomó pontokba szedve kocka/Monster stílusban. Az én-m kiváló toborzási társaik van csinálás amit már :). Így, Úgy döntöttem, hogy a "nap az élet" megközelítést. Olvassa újra, és úgy:

1) Ha azt kéri és

2) Hogy tudod a csontok, hogy meg tudod csinálni.

Ha igen, lépjen kapcsolatba velem (Paul.Galvin@Slalom.com) és beszéljünk.

Ezek, mire számíthatsz a tipikus hét/hónap, mint egy megoldások építész, a csapatom:

  • Fuss a projektek, gyakran több mint egy időben. Egyes projektek nagy és így kíván saját egy projekt. "Fut" a projekt azt jelenti, hogy van tévedés, és felelős a teljes szállítási. Szinte minden esetben, akkor lesz egy PM és egy nagyon erős csapat, a devs, BAs, UX-emberek, stb., támogatására. De te leszel a fő arcát látja, az ügyfél, bizalmi kapcsolatok, stb. Van nem bujkál az árnyékban, ebben szerepet :). Majd bill ebben az időben, és a cél az, hogy tartsa meg elfoglalt ahhoz, hogy ezt 80 %-ában.
  • Segítség a papírmunkát – kocák, RFP-k, fedélzetek-minden, ami jó dolog. Azt hiszem, mi van a koca folyamat elég feszes és tömör, így meglehetősen sablonos. Ha Ön hozzászokott írás kocák ma, a folyamat nem lesz az Ön számára kihívást jelent. RFP-k – ezek egy kicsit nehezebb. Hajlamosak szabott a természet kezdődik és RFP-k általában húzza a több különböző szerzők. Ez a jó és a rossz, de jó, főleg. Ez kap scrambly ha kell bűvészkedni annak szükségességét, hogy kiváló ügyfélszolgálat, közben is megnyerni az új munka. Ön valószínűleg nem saját egy RFP, de kéri szakaszok hozzájárul.
  • Értékesítési hívásokat, de közelebbről nem. Egy hónap alatt, akkor számíthat arra, hogy megy egy pár, az értékesítési hívások értékesítési csapatunkkal. Te leszel a KKV-k, a szobában, vegye tudomásul veszi, és segíts a megoldás. Azonban, nem kérte, vagy várható, hogy kezelni az eladási ciklus-az elejétől a végéig. Nem kell "eladni,"Ön csak szükség-hoz a nyugodt hang, a szakértői oka a szobában. Ez épít bizalom és ez az, amiért te ott. természetesen, Ha úgy tetszik, értékesítés, Aztán ott van a hely, hogy itt is nő.
  • Segítség a toborzás. Van néhány fajta áttétel program, Tehát ha tudod igazán erős emberek úgy gondolja, a Közösségben részét kell szlalom, Ön igénybe így. Erre a célra toborzók (Kik azok a kiváló) hogy ez a fajta munka oroszlánrészét. Az igazi segítség az interjúra meghívott jelöltek – ezek a jó illeszkedést kulturálisan? Tudják a dolgukat? Azt, hogy * a * life könnyebb? 🙂 This comes in spurts, havonta egy-két alkalommal, Bár néhány hónapban nem tennéd meg minden.
  • Segít a legjobb gyakorlat meghatározása, építsék ki az IP, és versenyképesebbé minket a piacon. -A ' egy tapasztalt srác/csaj. Te már a tömb körül – nem csak a SharePoint, de más technológiai tapasztalattal rendelkeznek, és élt át a jó és a rossz (még rettenetes) projektek egész. Ennek eredményeként, tudod, mi működik és mi nem. Azt szeretnénk megosztani a tapasztalat velünk napi rendszerességgel taktikai értelemben (i.e. igazán jól fut a projektek) hanem stratégiailag is. "Legjobb gyakorlatok" egy kicsit elhasznált, mint a kifejezés, és habozás nélkül használni. Az alapötlet az, hogy jössz, mély és megfelelő tapasztalattal rendelkező tapasztalt személy, és azt akarjuk, hogy integrálja a legjobb tanulsággal milyen tevékenységet folytatnak, az ügyfelekkel napi rendszerességgel.
  • jó szórakozást – Mi vagyunk a nagyon integrált csomó. Azt akarom, hogy újabb sokszorosíthatóság elkerülése, de -a ' nagyon találó ebben az esetben – keményen dolgozunk (fajta) és még nehezebb játszani :). Van egy Aaron Sorkin típusú társalgást itt, a szoba mindig tele olyan okos emberekkel, Szeretjük mi inni, és szervezünk egy szép számú szórakoztató rendezvények-movie night, baseball kirándulások (akkor is, ha borzalmas, gyakorlatilag gonosz csapat).

Ha tudna Összefoglalva minden-ba egy szó, Szeretném használni a szót "vezető." Vezető projektek, vegyen egy vezető szerepet épület a gyakorlatot (IP, épület a csoportot), stb.

De várjunk csak! Van még! Miért máshol dolgozik, Slalom?

  • Figyelemre méltó egységét szándéka –, mindenki azt akarja, nő ez a dolog. "Ez a dolog", a New York-i iroda. Mindenki a fedélzeten, ezzel.
  • Irodák a vitorlák – húga szél, húga gyakorlatok – szlalom az a "teljes körű szolgáltatás" tanácsadási szervezet. Vezetni akár a SharePoint gyakorlatban (a "gyakorlat terület vezető" a szlalom zsargon). Nekem van a húga gyakorlatok 11 más szlalom irodák. Tehát még akkor is, ha én vagyok a király, mint amennyire SharePoint van szó itt a szlalom New York-i, Szakértői tanácsok a Chicago, Seattle, Dallas, Atlanta, Boston, stb. amely képes mozgósítani támogatása. -A ' igazán a legjobbat nyújtja – jelentős önállóságot itt a New York-i, de hozzáférést tonna tehetség a vállalaton.
  • Az értékesítési szél (2) – Mi több, mint a SharePoint-sokkal többet. Mi csinál a BI, CRM, UX, üzleti tanácsadás, Mobile, Egyéni fejlesztési és mások. Jó, a határokon értékesítési magunk között vagyunk, és jók vagyunk, a festő- és ami még fontosabb, szállító alapján – "teljes körű szolgáltatás" kép ügyfeleink számára. Ez különösen vonzó számomra. Már sok kisebb orgs munka SharePoint koncertek és csalódott újra és újra, mert mi volt a galamb-lyukas, mint a "SharePoint emberek." Ez nem történik meg, a szlalom, és kapunk, hogy érdekesebb munka eredményeként.
  • Helyi modell – nem utazhatnak.
  • Hosszú távú növekedés – szlalom folyik gangbusters. Rengeteg növekedés és stabilitás. Növekedése azt is jelenti, hogy mi kell a bérlet vezetők ma új csapat fejét, hozzátesszük, több ügyfeleinek és munkatársainak az ügyfelek támogatása.

Tudtam menni, de már valószínűleg már elment túl hosszú. Azt hiszem, már elfoglalták a lényege itt. Ha gondolkodik változó munkahely, és ez jól néz ki az Ön, Let's talk.

Ha elégedett a jelenlegi munkád-beszéljünk egyébként :). Már sok helyen, és nagyon "happy" volt abban az időben. Szlalom különbözik, és én üdvözlöm a lehetőséget, hogy meggyőzni, hogy.

</vége>

undefinedSubscribe to my blog.

Kövesse nekem Twitter http://www.twitter.com/pagalvin

Gyors és egyszerű: Beállítani a méretét egy elem a listában, a Windows Store app

A Windows Store App vagyok létrehozása, Azt akarom, hogy a felhasználó különböző tájékoztató üzenetek megjelenítése.  Kivettem egy oldalra dől mint a szerszám-hoz mutat ez azért ők lehet lapozni őket, és minden jó dolog. 

Az üzenetek csak tájékoztató jellegűek, így nincs szükség, hogy mindazt, amit extra whitespace körülöttük, mivel a felhasználó soha nem jelölje ki azokat a semmit.  Az alapértelmezett viselkedés eléréséhez nyújt jelentős mennyiségű padding, és szerettem volna megszabadulni tőle.  Nos.... nem az a fajta dolog a ListBox közvetlenül.  AZONBAN, meg tudod csinálni a elemek hozzáadása:

        privát Érvénytelen AddGameStateLogMessage(karakterlánc Message)
        {
            Szövegdoboz t = új Tankönyv();
            t.Text = GameStateCounter    + ": " + Message;
            t.TextWrapping = TextWrapping.Wrap;
            t.MinWidth = 400;
            ThisPadding vastagság = új Vastagsága(5, 0, 5, 0);
            t.Padding = thisPadding;
            t.FontSize = 12;

            ListBoxItem li = új ListBoxItem();
            Li.Tartalom = t;
            Li.MaxHeight = 25;
            thisPadding = új Vastagsága(5, 0, 5, 0);
            Li.Padding = thisPadding;

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

a fenti, Vagyok létre egy tankönyv, és a betűtípus beállítása, a kitöltés, stb.

Következő, Hozzon létre egy ListBoxItem, és állítsa annak tartalmát a formázott tankönyv.

Végül, Én helyezze be a ListBoxItem a oldalra dől.  (Azt akarom, hogy a tetején a lista a legutóbbi üzenetek megjelenítése, így a betét(0,Li) Ahelyett, hogy egy egyszerű hozzáadása() könyörgése.).

Én akarat kell csípés ez egy kicsit, mielőtt én vagyok igazán boldog-val a oldalra dől viselkedés, de a fenti minta már nagyon gyümölcsöző.  Remélhetőleg valaki megtalálja, hogy hasznos.

</vége>

undefinedSubscribe to my blog.

Kövesse nekem Twitter http://www.twitter.com/pagalvin