Sut i Nodwch Pobl fel Cwmpas Chwilio / Cynnwys Ffynhonnell Defnyddio SharePoint 2013 REST API

Cefais reswm i weithio gyda y SharePoint 2013 API chwilio drwy weddill am y tro cyntaf. Yr oeddwn yn chwilio am bobl, Nid dogfennau. Allweddol dysgu yma yw Nodwch ffynonellau cynnwys drwy ei GUID (neu o leiaf yn yr achos hwn). Y sioeau beintiwyd jQuery canlynol sut:

    loadExpertsAsync: swyddogaeth() {

        jQuery.support.cors = wir;

        $.AJAX({
            url: hwn.CreateFullApiUrl() +
                "?querytext = 'pyrth'&sourceid = 'b09a7990-05ea-4af9-81ef-edfab16c4e31'" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Sgiliau,AboutMe,Buddiannau,Teitl y swydd,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&rowlimit = 99",
            dull: "GAEL",
            Penynnau: { "Derbyn": "cais/json; odata = amleiriog" },
            storfa: ffug,
            llwyddiant: swyddogaeth (arwain) {

Yn fy achos, Yr wyf yn rhedeg y API erbyn SharePoint ar-lein. I gael y GUID, Dilynais y camau hyn:

  1. Mynediad i'r ganolfan gweinyddol SharePoint
  2. Dewiswch "chwilio" o'r mordwyo chwith
  3. Dewiswch "Canlyniad ffynonellau reoli'r"
  4. Dewiswch "Canlyniadau pobl leol"
  5. Edrychwch ar yr URL.

Fy URL edrych rhywbeth fel:

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

Paramedr sourceid yw hyn wedi gweithio i mi.

(Deallaf y gall y sourceid mewn gwirionedd yn rhyw fath o peth parhaol gyda SP, ond byddaf bob amser yn gwirio beth bynnag 🙂 ).

</diwedd>

undefinedTanysgrifio i fy mlog.

Dilynwch fi ar Twitter yn http://www.twitter.com/pagalvin

Galwadau Enghraifft SharePoint REST

Dyma set sampl galwadau gweddill y gwaith i mi a allai eich helpu yn ogystal. Fel y 02/2014, ceir dwy enghraifft 🙂

  1. Cyfeirnod Colofn gyda mannau yn ei enw
  2. Cyfeiriad Colofn aml-ddewis
  3. Yn cynnal chwiliad pobl drwy weddill

 

Byddwn yn ychwanegu at hyn wrth i amser fynd heibio.

Dyma rhai inciau defnyddiol a Rydw i wedi cael cystal:

Cyfeirnod Colofn gyda mannau yn ei enw

Rwyf yn creu rhestr bersonol gyda Colofn "Blog awdur" a enwir (gofod rhwng Blog ac awdur).

Yn y $select cyfeirio at y golofn honno:

image

Disodli y gofod â "_x0020_". Gwelwn y _x0020_ mewn llawer o enghreifftiau ar draws y internets a'r gweddill yn wahanol.

Os nad ydych yn gwneud hynny, ydych chi'n atebol yn derbyn neges camgymeriad fel hyn:

Y mynegiant “Awdur blog” ddim yn ddilys.

Ddigon hawdd.

Cyfeirio at daflenni aml-ddewis

Sefydlu:

  1. Creu rhestr bersonol categorïau a enwyd.
  2. Ychwanegu rhai categorïau. Ychwanegais categorïau thusly:image
  3. Creu rhestr bersonol arall o'r enw MockBlog ac ychwanegu categorïau fel colofn rhestr aml-ddewis (neu safle Colofn os mai dyna sut y mae eich cyflwyno).

Ychwanegu eitemau at eich rhestr Mockblog a fyddwch yn barod.

Bydd galwad arddull Ajax yn defnyddio jQuery edrych rhywbeth fel hyn:

serverUrl  = "/_api/we/rhestrau/GetByTitle('MockBlog')/eitemau" +
             "?$Dewiswch = teitl,Categorïau/teitl,Blog_x0020_Author/teitl" + 
             "&$ehangu = Blog_x0020_Author,Categorïau";

Rydych yn dweud SharePoint "roi imi y teitl ar gyfer pob categori (Categorïau/teitl). Cael y gwerthoedd gwirioneddol ar gyfer Teitl gan $ehanguing y rhestr categorïau." (Fy aralleirio tawel yn debyg eithaf llac, ond sut yr wyf yn dehongli'r ei).

Os ydych yn gwneud hyn drwy JavaScript a defnyddio Fiddler i edrych ar yr allbwn, y cewch rywbeth fel hyn yn ôl:

 

image

(Yr uchod yw gwrthrych JSON)

Yn cynnal chwiliad pobl drwy weddill

Rwy'n blogio ynghylch hyn ar wahân. Yr allwedd yw Nodwch paramedr sourceid eu gwerth yn y GUID y ffynhonnell cynnwys pobl leol. (Ffynonellau cynnwys arfer cael eu galw'n chwmpas ac mae'n fy-o-fy nid mor galed i alw popeth cwmpas i mi!).

Darllenwch fwy am y peth yma: http://www.mstechblogs.com/paul/?p=10385

 

</diwedd>

undefinedTanysgrifio i fy mlog.

Dilynwch fi ar Twitter yn http://www.twitter.com/pagalvin

Cyflym a hawdd: Creu Safle SharePoint Defnyddio REST

Ceir llawer o adnoddau o gwmpas sy'n dangos sut i wneud hyn, ond ni allai ddod o hyd i ddolen cynhwysfawr i, Felly dyma ni.

Gallwch greu safle SharePoint gan ddefnyddio API gweddill.  Dyma enghraifft llawn wedi'i bobi:

<!--
    SiteRequestForm.html: Casglu gwybodaeth ac yn creu safle ar gyfer y defnyddiwr.
-->

<canolfan>
<tabl>
    <tr>
        <TD>Enw'r safle:</TD>
        <TD><mewnbwn Math= "testun" Enw= "SiteName" id= "SiteName" /></TD>
    </tr>
    <tr>
        <TD colspan= "2">
            <mewnbwn Math= "gyflwyno" id"CreateSiteButton =" gwerth= "Creu safle" />
        </TD>
    </tr>
</tabl>
</canolfan>

<sgript src=".. /Plugins/jquery-1.11.0.min.JS"></sgript>

<sgript>
Roedd CreateSiteLogicContainer = {

    createSiteData: {
            "paramedrau": {
                __metadata: { "math": "SP. WebInfoCreationInformation" },
                Url: "Paultest1",
                Teitl: "Paultest1",
                Disgrifiad: "creu weddill we gan Paul!",
                Iaith: 1033,
                WebTemplate: "sts",
                UseUniquePermissions: ffug
            }
    },

    createSite: swyddogaeth () {

        jQuery.support.cors = wir;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").val();
        
        $.AJAX({
            url: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            dull: "SWYDD",

            Penynnau: {
                "Derbyn": "cais/json; odata = amleiriog",
                "cynnwys math": "cais/json;odata = amleiriog",
                "X-RequestDigest": $("#__REQUESTDIGEST").val()
            },

            data: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            llwyddiant: swyddogaeth () { rhybuddio("llwyddiant"); },
            gwall: swyddogaeth () { rhybuddio("gwall"); }

        });
    },

    wireUpForm: swyddogaeth () {
        $("#CreateSiteButton").cliciwch(swyddogaeth () {
            rhybuddio("Am i geisio creu safle.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</sgript>

Pan llwyddiannus, Rydych yn derbyn pecyn JSON yn ymateb fel hyn:

image

Fy meddyliau allweddol a'r gwersi a ddysgwyd o hyn yn cynnwys:

  • Mae'r dull hwn yn defnyddio jQuery.  Yn fy achos, Lleolir fy llyfrgell jQuery yn "… / ategion. "  Byddwch chi eisiau newid hynny i dynnu sylw at eich lleoliad JQ hoff.
  • Gall eich copïo a gludo beintiwyd cyfan hwnnw yn rhan we Golygydd cynnwys ar dudalen a dylai weithio ychydig iawn.  Byddwch chi eisiau newid pwynt gorffen galwad API a gwnewch yn siŵr eich bod yn cyfeirio at JQ gywir.
  • Mae'r URL yn o'i gymharu â gwaelodlin eich API.  Yn fy achos, Mae'n creu is-safleoedd oddi tano https://bigapplesharepoint.com
  • Nid oes angen i chi ddarparu cynnwys-darn. Rhai swyddi blog a MSDN Mae'r ddogfen yn awgrymu eich bod yn gwneud, ond a ddigwyddodd i mi awtomatig, Yr wyf yn cymryd yn cael ei drin gan yr alwad.ajax $ ei hun.
  • Mae y llinell hon yn ofynnol er mwyn osgoi ymateb "gwaharddedig": "X-RequestDigest": $("#__REQUESTDIGEST").val().  Mae yna ffyrdd eraill i wneud hynny, ond mae hyn yn eithaf braf.  Yr wyf wedi colli cysylltiad i blog a ddarperir y llwybr byr hwn.  H/T i chi, rhyfedd blogger!

Lwc dda a gobeithiaf y bydd hyn yn helpu rhywun allan.

</diwedd>

undefinedTanysgrifio i fy mlog.

Dilynwch fi ar Twitter yn http://www.twitter.com/pagalvin

Goresgyn Problem Blino gyda URLs cymharol yn SharePoint Chwim Launch

Yr oeddwn am i ychwanegu dolen at navigation lansio cyflym y dydd arall a dywedodd SharePoint wrthyf:

image

Fersiwn testun pur o hynny:

Sicrhau bod yr URL yn ddilys ac yn dechrau gyda naill ai cymeriad dilys (arwydd Rhif (#) neu slaes ymlaen (/)) neu brotocol gyda chymorth dilys (er enghraifft,, ' http://', ' https://', ' ffeil://', ' ftp://', ' e-bost:', ' newyddion:').

'Blech a brech yr!"Dywedais.

Gwasanaeth i hyn yw defnyddio JavaScript i ddarganfod cysylltiad hysbys yn lansio cyflym a diystyru ei ymddygiad.

I brofi hyn, ychwanegu cysylltiad newydd i'ch safle prawf thusly:

image

Defnyddiais jQuery. I'w datrys, cael rhai JavaScript a jQuery ar dudalen drwy ddefnyddio eich hoff dechneg a gyda llinell Cod fel hyn:

 

$(dogfen).barod( swyddogaeth () {

    $("1:cynnwys('Rhoi prawf' URL newydd')").cliciwch(swyddogaeth () { rhybuddio("Cliciwch newid ymddygiad!"); dychwelyd ffug;});

});

A Bob eich ewythr.

Bydd y botwm jQuery yn canfod pob <1> tag wedi "URL prawf newydd" yn ei enw. Efallai y byddwch am i ddod o hyd i-alaw a dibynnu ar eich cysylltiad a'ch o'r fath.

Y.click(swyddogaeth() diystyru beth bynnag byddai SharePoint wedi gwneud pan roedd y defnyddiwr wedi clicio. Gwnewch yn siŵr bod eich "dychwelyd ffug" neu fel arall bydd yn gwneud eich pethau ac wedyn yn ceisio y peth href yn rhy, bron yn sicr nad yw'n eich nod.

Gwnaed hyn a brawf mewn amgylchedd ar-lein SharePoint ond dylai weithio dda yn 2010 a gynharach rhy.

</diwedd>

undefinedTanysgrifio i fy mlog.

Dilynwch fi ar Twitter yn http://www.twitter.com/pagalvin

Cyflym a syml: SharePoint REST Call Dim ond Ffurflenni 100 Cofnodion

Dwi wedi gweithio ar safle we sy'n wynebu cyhoeddus am fy arfer SharePoint yma yn Efrog newydd ac mae'n defnyddio llawer o alwadau JavaScript a gweddill i dangos y cynnwys.

Ystod datblygu prif linell, Dwi'n creu set fach gyda dim ond 10 neu felly roedd rhesi yn rhestr bersonol a galw fy weddill ei dynnu oddi yno.  Unwaith yr wyf yn rhygnu ar y rhestr i gael ychydig gannoedd o rhesi o ddata i brofi ar gyfer twf a ragwelir, Yr oedd yr oeddwn yn mynd yn union 100 rhesi a dychwelyd yn ôl ar fy galwadau weddill.

Mae hwn yn rhywbeth syml iawn i fynd i'r afael â.  Yn fy achos (a chredaf yn y rhan fwyaf o achosion), galw weddill diofyn i SharePoint (ac o bosibl fel diwydiant safonol?) dychwelyd 100 rhesi.  I ddychwelyd mwy na diofyn, Defnyddiwch y paramedr $top ar eich galwad, fel yn:

GAEL /Insights Dev/_api/web/lists/GetByTitle('MockBlog')/eitemau?$Dewiswch = ID,Teitl,Categorïau/teitl,Blog_x0020_Author/teitl,DatePublished,BlogSummary&$ehangu = Blog_x0020_Author,Categorïau&$Hidlydd =&$brig = 9999

Cydiais 9999 yn yr achos hwn ers gwn growth-wise, Ni fydd mwy na 200 neu felly roedd rhesi yn ychwanegu at y rhestr hon yn y flwyddyn.  Os daw'n ungainly, gallwn weithredu rhai tudalennu i lawr y ffordd.

</diwedd>

undefinedTanysgrifio i fy mlog.

Dilynwch fi ar Twitter yn http://www.twitter.com/pagalvin

Cyflym a syml: Datrys "Paramedr URL annilys” broblem gyda UpdateListItems yn lists.asmx

Wrth weithio gyda UpdateListItems drwy lists.asmx, Mae'n hawdd i gynhyrchu y gwall:

Paramedr URL annilys.

Mae'r URL a ddarperir yn cynnwys gorchymyn annilys neu gwerth. Gwiriwch yr URL eto.

Gallwch gael y gwall hwn pan ydych yn anghofio cynnwys ID yn y rhestr o feysydd i ddiweddaru.  Mae hyn yn, fel llawer o hyn SP gwasanaethau gwe, yn groes i bob greddf ychydig ers y mae angen i chi gynnwys yr ID yn y priodoledd ID o y <Dull> elfen.  Ac nad ydych yn diweddaru ID a fwy na thebyg byth eisiau yn y lle cyntaf.

Gwaith hwn amlen SEBON:

<soapenv:Xmlns Amlen:soapenv =' http://schemas.xmlsoap.org/SOAP/Envelope/'>
  <soapenv:Corff>                      
    <UpdateListItems xmlns =' http://schemas.Microsoft.com/SharePoint/Soap/'>                     
      <Collddail>{C712E2EA-54E1-47AD-9D99-1848C7773E2F}</Collddail>                     
        <diweddariadau>                     
         <Swp OnError ="Yn parhau">
          <Dull ID ="1" Orchymyn ="Diweddariad">
            <Maes enw ="CooperativeLock">ar glo!</Maes>
            <Maes enw ="ID">1</Maes>
          </Dull>
        </Swp>                     
        </diweddariadau>                
      </UpdateListItems>             
  </soapenv:Corff>         
</soapenv:Amlen>

Os Mae eich gwared y ID cae wedyn cewch y neges "URL annilys paramedr" annifyr.

</diwedd>

undefinedTanysgrifio i fy mlog.

Dilynwch fi ar Twitter yn http://www.twitter.com/pagalvin

 

Caching Dyn tlawd yn JavaScript

[TL;Fersiwn DR: defnyddio briwsion i storio canlyniadau'r async galwadau; rendr canlyniadau'r gorffennol async galwadau ar unwaith ac wedyn eu dilysu ar ôl llwytho tudalen.]

Dwi wedi bod yn gweithio ar safle mewnrwyd SharePoint i cleient y nodweddion, ymhlith pethau eraill, mordwyo uwchradd stylized eu dewisiadau dewislen yn cael eu rheoli drwy'r rhestr bersonol hen rheolaidd.  Y syniad yw bod y cleient yn cael i reoli ddewislen "eu" safle heb sy'n effeithio ar neu'n cael eu heffeithio gan y mordwyo byd-eang a roddir allan gan ei.

(Mae rhywbeth hynod o thwyllodrus am ychwanegu CEWP sy'n pwyntio at ffeil HTML yn y llwythi rhai CSS a JS i bron popeth am ymddygiad y safle … yn ei newid yn sylfaenol ond mae hynny ar gyfer swydd arall)

Y Cod ar gyfer hwn eithaf syml:

  • Aros am y dudalen gorffen llwytho a gwneud async alw lwytho'n eitemau ar y fwydlen o restr gan ddefnyddio gweddill neu lists.asmx neu beth bynnag
  • Gan ddefnyddio jQuery, ddeinamig boblogi criw os <li>y tu mewn yn rhiant <st> (Gweler erthygl Christian Pinder yma am esboniad syml o hwn tecnnique)
  • Ddefnyddio CSS i wneud yr holl fformatio
  • Elw!

Y fan a'r lle yma yn boenus yw, bob tro y mae unrhyw un yn taro un o dudalennau y safle, Mae porwr gwe bod defnyddiwr yn estyn allan i gael eitemau oddi ar y rhestr.  Unwaith y bydd datblygiad yn gyflawn ac yn profi wedi profi pethau i fod yn sefydlog ac yn gyflawn, alwad hon yn ddiangen mwy nag 99% yr amser ers y fwydlen yn anaml yn newid.  Mae hefyd yn effeithio ar UI rhyfedd sy'n gyffredin yn y byd newydd hwn dewr o wefannau hyper-ajaxy – Mae y dudalen yn ei gwneud, a dim ond wedyn yw y fwydlen rendr.  Mae'n ansicr ac yn tynnu sylw yn fy marn i.  Ac yn ansicr. Felly, storio. 

Addaswyd y rhesymeg yr thusly:

  • Edrych ar gyfer briwsionyn yn y porwr sy'n cynnwys y fwydlen fel y darllenais ddiwethaf mae'n
    • Os yw dod o hyd i, ei wneud ar unwaith.  Peidiwch ag aros am y dudalen i orffen llwytho.  (Mae angen i chi wneud siwr yn eich HTML strategol y sefyllfa yma, ond nid yw'n anodd i'w wneud).
  • Aros am y dudalen gorffen llwytho a gwneud async alw lwytho'n eitemau ar y fwydlen o restr gan ddefnyddio gweddill neu lists.asmx neu beth bynnag
  • Cymharu beth gen i erbyn briwsionyn
    • Os yn cyfateb, STOPIO
    • Fel arall,, gan ddefnyddio jQuery, ddeinamig boblogi criw os <li>y yn <st>
  • Ddefnyddio CSS i wneud yr holl fformatio
  • Elw!

Rhai ohonoch yn mynd i'w ddweud, "hei! Nid oes na gwirioneddol storio digwydd yma ers eich bod yn darllen y fwydlen beth bynnag bob tro."  A ydych chi'n iawn – nid wyf yn ildio unrhyw fath o seibiant y gweinydd.  Ond oherwydd y galw async ac sy'n digwydd ar ôl y dudalen cychwynnol y mae pwysau'r HTML llawn gwneud, "deimlad" fwy ymatebol i'r defnyddiwr.  Mae y fwydlen yn gwneud yn eithaf gymaint ag y mae y dudalen yn tynnu.  Os bydd y fwydlen yn digwydd i newid, Mae y defnyddiwr yn destun ansicr ail-lunio o'r fwydlen, ond dim ond y un pryd.

Ceir rhai ffyrdd o wneud storio hwn yn fwy effeithiol a helpu allan y gweinydd ar yr un pryd:

  • Yn rheol bod y "storfa briwsionyn" yn ddilys am o leiaf 24 oriau neu rhai amserlen eraill. Cyn belled â'u nid oes dim briwsion wedi dod i ben, defnyddio ciplun fwydlen y briwsion a erioed wedi cyrraedd y gweinydd.

Wel... Dyna'r cyfan sy'n dod i'r meddwl ar hyn o bryd :). 

Os oes gan unrhyw un unrhyw syniadau glyfar yma byddwn yn hoffi gwybod eu.

Ac yn olaf – y gellir defnyddio'r dechneg hon ar gyfer pethau eraill.  Tudalen y cleient hwn mae nifer o bethau data yrru ar dudalennau amrywiol, newid llawer ohonynt yn gymharol anaml (fel unwaith yr wythnos neu unwaith y mis).  Os ydych chi'n targedu ardaloedd penodol o ymarferoldeb, Gallwch roi UI fwy ymatebol drwy dynnu cynnwys o storfa briwsionyn lleol a rendro ar unwaith.  Mae'n teimlo gyflymach i'r defnyddiwr hyd yn oed os nid ydych chi'n arbed y gweinydd unrhyw feiciau.  Chi Gall arbed y cylchoedd gweinydd drwy benderfynu ar rai amodau a sbardunau i annilysu'r hwn cache briwsionyn lleol.  Mae hynny'n gwbl sefyllfaol a stwff artsy ac mewn gwirionedd mwyaf o hwyl :). 

</diwedd>

undefinedTanysgrifio i fy mlog.

Dilynwch fi ar Twitter yn http://www.twitter.com/pagalvin

Sut i: Ffurfweddu Prawf Uned a Prawf Pwnc o dan sylw gyda QUnit.js a Blanket.js Am Swyddfa 365 SharePoint App

Intro

Dwi wedi bod yn archwilio uned profion a prawf darllediadau ar gyfer JavaScript ag rwy'n gweithio ar app SharePoint newydd ar gyfer SharePoint ar-lein yn y Swyddfa 365 gyfres.  Arweiniodd y llwybrau ymchwil amlwg i mi Qunit.JS a hawl ar ôl hynny, i Blanket.JS.

Mae QUnit yn gadael i mi sefydlu uned profion a eu grwpio mewn modiwlau.  Modiwl yn unig ffordd syml i drefnu profion cysylltiedig. (Nid wyf yn siŵr yr wyf ei ddefnyddio fel y bwriadwyd, ond mae'n gweithio i mi hyd yn hyn gyda'r set fach o brofion a diffiniais hyd yma).

Mae'r Blanket.js yn integreiddio â Qunit a bydd yn dangos y llinellau gwirioneddol o JavaScript a oedd – ac yn bwysicach – nid oedd gweithredu mewn gwirionedd yn ystod y profion yn rhedeg i mi.  Mae hyn yn "sylw" – ymdrinnir â llinellau y gweithredu gan y prawf ac nid eraill.

Rhwng sefydlu achosion prawf da a gwylio darllediadau, gallwn leihau'r risg y mae ein Cod yn cuddio diffygion.  Amseroedd da.

Qunit

Gan dybio bod gennych eich stiwdio gweledol prosiect yn sefydlu, dechrau drwy lawrlwytho y pecyn JavaScript o http://qunitjs.com.  Ychwanegu JavaScript a CSS cyfatebol at eich ateb.  Lofa yn edrych fel hyn:

image

Ffigur 1

Fel y gallwch weld, Oedd yn ei defnyddio 1.13.0 ar y pryd, ysgrifennais hwn post blog. Peidiwch ag anghofio i lawrlwytho ac ychwanegu ffeil CSS.

Bod allan y ffordd, cam nesaf yw i greu rhyw fath o brawf harnais a cyfeirnod y darnau Qunit.  Yr wyf yn profi yn griw o swyddogaethau mewn ffeil sgript o'r enw "QuizUtil.js" fel yr wyf wedi creu tudalen HTML o'r enw "QuizUtil_test.html" fel y dangosir:

image Ffigur 2

Yma yn y Cod:

<!DOCTYPE html>
<html xmlns= "http://www.W3.org/1999/xhtml">
<Pennaeth>
    <Teitl>Prawf QuizUtil â Qunit</Teitl>
    <cyswllt rel= "Taflen arddull" href=".. /CSS/qunit-1.13.0.CSS" />
    <sgript Math= testun/javascript"" src="QuizUtil.JS" data-clawr></sgript>
    <Math o sgript ="Text / javascript" src ="qunit-1.13.0.js"></sgript>
    <Math o sgript ="Text / javascript" src ="blanket.min.js"></sgript>

    <sgript>
        modiwl("getIDFromLookup");
        prawf("QuizUtil getIDFromLookupField", swyddogaeth () {
            Roedd goodValue = "1;#Paul Galvin";

            cyfartal(getIDFromLookupField(goodValue) + 1, 2), "ID o [" + goodValue + "] + 1 Dylid 2";
            cyfartal(getIDFromLookupField(heb ei ddiffinio), heb ei ddiffinio, "Dylai ddadl mewnbwn heb ei ddiffinio yn ôl canlyniad amhendant.");
            cyfartal(getIDFromLookupField(""), heb ei ddiffinio, "Dylai'r ddadl mewnbwn gwag yn dychwelyd gwerth heb ei ddiffinio.");
            cyfartal(getIDFromLookupField("gobbledigood3-thq;dkvn ada;skfja sdjfbvubvqrubqer0873407t534piutheqw;vn"), heb ei ddiffinio,"Dylid wastad yn dychwelyd convertible canlyniad i gyfanrif");
            cyfartal(getIDFromLookupField("2;#person arall"), "2", "A gwirio [2;#person arall].");
            cyfartal(getIDFromLookupField("9834524;#gwerth hir"), "9834524", "Prawf gwerth mawr.");
            notEqual(getIDFromLookupField("5;#unrhyw un", 6), 6, "Profion notEqual (5 Nid yw yn hafal i 6 ar gyfer sampl hwn: [5;#unrhyw un]");

        });

        modiwl("htmlEscape");
        prawf("QuizUtil htmlEscape()", swyddogaeth () {
            cyfartal(htmlEscape("<"), "&lt;", "Dianc sy'n llai na gweithredwr ('<')");
            cyfartal(htmlEscape("<dosbarth DIV =. "someclass">Rhywfaint o destun</div>"), "&lt;dosbarth DIV =&quot;someclass&quot;&gt;Rhywfaint o destun&lt;/div&gt;", "Llinyn prawf mwy cymhleth.");
        });

        modiwl("getDateAsCaml");
        prawf("QuizUtil getDateAsCaml()", swyddogaeth () {
            cyfartal(getDateAsCaml(newydd Dyddiad("12/31/2013")), "2013-12-31T:00:00:00", "Profi dyddiad galed codio: [12/31/2013]");
            cyfartal(getDateAsCaml(newydd Dyddiad("01/05/2014")), "2014-01-05T:00:00:00", "Profi dyddiad galed codio: [01/05/2014]");
            cyfartal(getDateAsCaml(newydd Dyddiad("01/31/2014")), "2014-01-31T:00:00:00", "Profi dyddiad galed codio: [01/31/2014]");
            cyfartal(getTodayAsCaml(), getDateAsCaml(newydd Dyddiad()), "getTodayAsCaml() Dylai cyfartal getDateAsCaml(Dyddiad newydd())");
            cyfartal(getDateAsCaml("nonsens gwerth"), heb ei ddiffinio, "Ceisio cael dyddiad gwerth nonsens.");
            cyfartal(getDateAsCaml(heb ei ddiffinio), heb ei ddiffinio, "Ceisio cael dyddiad y [heb ei ddiffinio] Dyddiad.");
        });

        modiwl("getParameterByName");
        prawf("QuizUtil getParameterByName (o'r llinyn ymholiad)", swyddogaeth () {
            cyfartal(getParameterByName(heb ei ddiffinio), heb ei ddiffinio, "Geisio diffinio paramedr dylai ddychwelyd heb ei ddiffinio.");
            cyfartal(getParameterByName("nad yw'n bodoli"), heb ei ddiffinio, "Ceisiwch gael gwerth paramedr pan wyddom nad yw y paramedr yn bodoli.");

        });

        modiwl("Cwcis");
        prawf("QuizUtil amrywiol swyddogaethau briwsion.", swyddogaeth () {
            cyfartal(setCookie('brofi", "1", -1), getCookieValue('brofi"), "Dylid cael briwsionyn sefydlais y gwaith.");
            cyfartal(setCookie("anycookie", "1", -1), wir, "Gosod coginio dilys dylid dychwelyd 'wir'.");
            cyfartal(setCookie("briwsionyn wallgof enw !@#$%"%\^&*(()?/><.,", "1", -1), wir, "Gosod enw briwsionyn gwael dylid dychwelyd 'gau'.");
            cyfartal(setCookie(heb ei ddiffinio, "1", -1), heb ei ddiffinio, "Heb ei ddiffinio fel yr enw briwsionyn yn pasio.");
            cyfartal(getCookieValue("nad yw'n bodoli"), "", "Briwsionyn nad oes prawf.");
        });

    </sgript>
</Pennaeth>
<corff>
    <div id"qunit ="></div>
    <div id= "qunit-gêm"></div>

</corff>
</html>

Ceir nifer o bethau yn digwydd yma:

  1. Cyfeirio at fy Cod (QuizUtil.js)
  2. Cyfeirio at Qunity.js
  3. Diffinio rhai modiwlau (getIDFromLookup, Briwsion, ac eraill)
  4. Gosod <div> Mae eu ID yw "qunit".

Yna, Dim ond yr wyf yn tynnu fyny dudalen hon a ydych yn cael rhywbeth fel hyn:

image

Ffigur 3

Os edrychwch chi ar draws top, Mae gennych ychydig o opsiynau, dau ohonynt yn ddiddorol:

  • Cuddio pasio profion: Eithaf amlwg.  Gall helpu eich llygaid yn unig weld y meysydd sy'n broblem ac nid llawer o annibendod.
  • Modiwl: (gollwng i lawr): Bydd hyn yn treiddio y profion i lawr at y grwpiau hynny yn unig o brofion rydych chi am.

O ran y profion eu hunain – ychydig o sylwadau:

  • Afraid dweud bod yn rhaid ichi ysgrifennu eich cod yn golygu ei bod yn cael ei brofi'n yn y lle cyntaf.  Gellir defnyddio'r offeryn yn helpu i orfodi'r ddisgyblaeth honno. Er enghraifft, Cefais swyddogaeth o'r enw "getTodayAsCaml()".  Nid yw hyn yn cael ei brofi'n iawn ers y mae'n cymryd oes dadl mewnbwn ac i brofi ar gyfer cydraddoldeb, Byddai angen i ddiweddaru y prawf Cod i adlewyrchu'r dyddiad cyfredol yn gyson.  Yr refactored ei gan ychwanegu paramedr mewnbynnu data yna pasio y dyddiad cyfredol pan am ddyddiad heddiw mewn fformat CAML.
  • Yn y fframwaith Qunit yn ddogfennau profion ei hun ac mae'n ymddangos yn eithaf cadarn.  Gall wneud pethau syml fel profion ar gyfer cydraddoldeb a hefyd wedi cael cefnogaeth ar gyfer galwadau arddull ajax ("go iawn" neu gwawdio gan ddefnyddio eich hoff mocker).
  • Mae mynd drwy'r broses hefyd yn eich gorfodi i feddwl drwy achosion ymyl – beth sy'n digwydd gyda "diffinio" neu trosglwyddir NWL swyddogaeth.  Ei gwneud yn gwbl syml i brofi y senarios hyn allan.  Stwff da.

Darllediadau gyda Blanket.js

Mae Blanket.js yn ategu Qunit drwy olrhain llinellau gwirioneddol Cod sy'n gweithredu yn ystod y cwrs o redeg eich profion.  Mae'n cyfuno'r hawl i Qunit felly er mae'n ap cyfan ar wahân, Mae'n chwarae ddel – mewn gwirionedd mae'n edrych fel mae'n un ap di-dor.

Mae hyn yn blanket.js yn gweithredu:

image Ffigur 4

image

Ffigur 5

(Mae gennych mewn gwirionedd i glicio ar y blwch ticio "Galluogi darllediadau" ar y brig [gweler Ffigur 3] i alluogi hyn.)

Y llinellau amlygir yn ffigur 5 Nid cael ei gweithredu gan unrhyw un o'r profion fy, Felly mae angen imi dyfeisio prawf a yw'n achosi iddynt a gweithredu os wyf eisiau sylw llawn.

Blanket.js yn gweithio drwy ddilyn y camau hyn yn cael:

  1. Llwytho i lawr o'r http://blanketjs.org/.
  2. Ychwanegu at eich prosiect
  3. Diweddaru eich tudalen harnais prawf (QuizUtil_test.html yn fy achos i) fel a ganlyn:
    1. Cyfeirio at y Cod
    2. Addurno eich <sgript> Cyfeirnod fel hyn:
    <sgript Math= testun/javascript"" src="QuizUtil.JS" data-clawr></sgript>

Mae Blanket.js yn cyflymu'r priodoledd "data-cyflenwi" a yw ei hud.  Mae ei bachau i Qunit, diweddaru UI i ychwanegu opsiwn "Galluogi darllediadau" a voila!

Crynodeb (TL; DR)

Defnyddio Qunit i ysgrifennu eich achosion prawf.

  • Llwytho
  • Ychwanegu at eich prosiect
  • Ysgrifennu tudalen brawf yn harneisio
  • Creu eich profion
    • Refactor rhai eich cod yn cael ei brofi'n
    • Fod yn greadigol!  Feddwl am ffoli, amhosibl senarios a'u profi beth bynnag.

Defnyddio blanket.js i sicrhau bod sylw

  • Gwnewch yn siŵr bod yn Qunit yn gweithio
  • Lawrlwytho blanket.js ac ychwanegu at eich prosiect
  • Ychwanegu at eich tudalen harnais prawf:
    • Ychwanegu cyfeiriad at blanket.js
    • Nodwedd "data-cyflenwi" i ychwanegu eich <sgript> diwrnod
  • Rhedeg eich profion Qunit.

Byth, oedd unrhyw un o'r blaen ac roedd rhai pethau elfennol a gweithio mewn llond llaw o oriau. 

Profion hapus!

</diwedd>

undefinedTanysgrifio i fy mlog.

Dilynwch fi ar Twitter yn http://www.twitter.com/pagalvin

Mae'r Suit diwethaf Byddwch Erioed Wear?

[Nodyn sydyn - mae hyn yn swydd eithaf hir ar agor ar gyfer fy swydd grŵp yma yn Efrog Newydd a oes angen i chi fyw yn yr ardal tri-wladwriaeth os oes gennych ddiddordeb.]

Ymunais Slalom Consulting dros 18 mis yn ôl ac mae hynny'n gwneud hyn yn fy swydd parhaol hiraf ers 2007. Doeddwn i ddim yn cynllunio yn y ffordd. Cyn gyfres o swydd hercian a ddechreuodd gyda fy naid i mewn i'r byd SharePoint, Yr oeddwn mewn un lle am un mlynedd ar ddeg. Rwyf wedi dod o hyd yn olaf newydd, lle parhaol i weithio ar gyfer y tymor hir yma yn Slalom.

Mae y lle hwn yn tyfu ac mae angen i mi rhywfaint o help i reoli hynny. Elwir fel arfer yn y math o help sydd ei angen arnaf "SharePoint Solutions Pensaer" er fy mod i wedi dod o hyd i'r gair pensaer fod dros a / neu ei ddefnyddio'n anghywir yn y gofod SharePoint ers cryn amser bellach yn. Rydw i wedi bod yn cael trafferth ar sut i flogio am hyn. Nid wyf am i wneud dim ond rhestru allan criw o bwyntiau bwled yn Dis / arddull Monster. Fy recriwtio cyfoedion rhagorol wedi bod yn gwneud hynny eisoes :). Felly, Penderfynais gymryd "diwrnod ym mywyd" dull. Darllenwch ef drosodd ac ystyried:

1) Os yw'n apelio a

2) P'un a ydych yn gwybod eich esgyrn y gallwch chi ei wneud.

Os ydych, gysylltu â mi (paul.galvin @ slalom.com) a gadewch i ni siarad.

Mae'r rhain yn yr hyn y gallwch ddisgwyl ei wneud mewn wythnos nodweddiadol / mis fel pensaer atebion ar fy nhîm:

  • Rhedeg prosiectau, aml yn fwy nag un ar y tro. Mae rhai prosiectau yn fawr ac felly byddech yn berchen ar y un prosiect. "Rhedeg" prosiect yn golygu bod gennych oruchwyliaeth a chyfrifoldeb am ansawdd cyffredinol y cyflwyno. Mewn bron mhob achos bydd gennych PM a thîm cryf iawn o devs, Bas, Pobl UX, ac ati, i'ch cefnogi. Ond byddwch yn y prif wyneb y cleient yn gweld, ymddiriedolaethau, ac ati. Does dim cuddio yn y cysgodion yn y rôl hon :). Byddwch bil y tro hwn a'r nod yw cadw ydych yn ddigon prysur i wneud hyn 80 y cant o'r amser.
  • Help gyda gwaith papur - Hychod, RFPS, deciau - yr holl bethau da. Rwy'n credu ein bod wedi ein proses Cynlluniau Gwaith i lawr 'n bert dynn a chadarn felly mae'n weddol fformiwläig. Os ydych chi'n defnyddio i hychod ysgrifennu heddiw, nid yw ein proses yn mynd i fod yn her i chi. RFPS - mae'r rhain yn ychydig yn galetach. Maent yn tueddu i fod yn bwrpasol o ran natur i ddechrau a RFPS fel arfer yn tynnu mewn gwahanol awduron lluosog. Mae'n da a drwg, ond yn dda ar y cyfan. Gall hyn gael scrambly pan fydd angen i gydbwyso angen am y gwasanaeth rhagorol i gwsmeriaid tra hefyd yn ceisio ennill gwaith newydd. Mae'n debyg na fydd yn berchen ar RFP, ond bydd gofyn i chi gyfrannu adrannau.
  • Galwadau gwerthu, ond heb fod yn agosach. Yn ystod y mis, gallwch ddisgwyl i fynd ar un neu ddau o werthiannau yn galw â'n tîm gwerthu. Chi fydd y busnesau bach a chanolig yn yr ystafell, cymryd nodiadau a helpu i lunio ateb. Fodd bynnag,, Ni fydd gofyn neu ddisgwyl i drin y cylch gwerthu oddi wrthych dechrau i'r diwedd. Nid oes angen i chi "gwerthu,"'Ch jyst angen i fod yn llais tawel o reswm arbenigol yn yr ystafell. Mae hyn yn adeiladu ymddiriedaeth a hyder, a dyna pam eich bod chi yno. Wrth gwrs, os ydych yn hoffi gwerthu, yna mae lle i chi i dyfu yma hefyd.
  • Cymorth gyda recriwtio. Mae gennym ryw fath o raglen atgyfeirio, felly os ydych yn gwybod y dylai Folks cryf iawn yn y gymuned yn eich barn chi fod yn rhan o Slalom, gallwch elwa yn y ffordd honno. Rydym wedi neilltuo recriwtwyr (sydd yn ardderchog) i wneud y gyfran fwyaf o'r math hwn o waith. Mae'r cymorth go iawn yn cyfweld ymgeiswyr - a ydynt yn cyd-fynd yn dda ddiwylliannol? A ydynt yn gwybod eu stwff? Gallant wneud * fy * bywyd yn haws? 🙂 Mae hyn yn dod mewn cyfnodau o newid sydyn, cwpl o weithiau y mis, er mewn rhai misoedd na fyddech yn ei wneud o gwbl.
  • Helpu i ddiffinio arferion gorau, ddatblygu ein IP ac yn ein gwneud yn fwy cystadleuol yn y farchnad. Rydych chi'n guy / gal profiadol. Rydych chi wedi bod o gwmpas y bloc - nid dim ond yn SharePoint, ond mae gennych brofiad mewn technolegau eraill ac wedi byw trwy da a drwg (hyd yn oed yn ofnadwy) prosiectau ar draws. O ganlyniad,, eich bod yn gwybod beth sy'n gweithio a beth nad yw'n gweithio. Byddwn am i chi rannu'r profiad hwnnw gyda ni o ddydd i ddydd mewn ystyr tactegol (h.y. redeg eich prosiectau yn dda iawn) ond hefyd yn strategol. "Arferion gorau" yn dipyn gorddefnyddio fel term a phetrusaf ei ddefnyddio. Y syniad sylfaenol yw eich bod yn dod i mewn fel person profiadol gyda phrofiad dwfn a pherthnasol ac rydym am i integreiddio y gorau o'ch gwersi a ddysgwyd i sut rydym yn ymgysylltu â chwsmeriaid o ddydd i ddydd.
  • Cael hwyl - Rydym yn griw integredig iawn. Yr wyf am osgoi eto platitude arall, ond mae'n wir yn addas yn yr achos hwn - rydym yn gweithio'n galed (math o) ac rydym yn chwarae hyd yn oed yn fwy anodd :). Mae 'na Aaron Sorkin fath o dynnu coes yma, yr ystafell bob amser yn llawn o bobl clyfar, rydym yn hoffi ein diod ac rydym yn trefnu nifer teg o ddigwyddiadau hwyl - noson ffilmiau, teithiau baseball (hyd yn oed os ydynt yn erchyll, timau ymarferol drwg).

Os gallwn i grynhoi'r cyfan mewn un gair, Byddwn yn defnyddio'r gair "arweinyddiaeth." Prosiectau Arweiniol, cymryd rôl arweiniol wrth adeiladu ar yr arfer (IP, adeiladu'r tîm), ac ati.

Ond arhoswch! Mae mwy o! Pam arall yn gweithio ar Slalom?

  • Undod ryfeddol o fwriad - mae pawb eisiau tyfu y peth hyn allan. "Y peth hwn" yn y Swyddfa yn Efrog newydd. Mae pawb ar y bwrdd gyda hyn.
  • Gwynt yn eich hwyliau - chwaer swyddfeydd, chwaer arferion - Slalom yn "wasanaeth llawn" corff ymgynghori. Yr wyf yn arwain i fyny yr arfer SharePoint (yn "Arweinydd Maes Ymarferiad" yn Lingo Slalom). Mae gen i chwaer arferion yn 11 swyddfeydd Slalom eraill. Felly hyd yn oed er fy mod i'n brenin cyn belled ag SharePoint yn y cwestiwn yma yn Slalom Efrog Newydd, Mae gen i arferion cyfoedion yn Chicago, Seattle, Dallas, Atlanta, Boston, ac ati. lle gallaf dynnu ar gymorth. Mae'n wir y gorau o ddau fyd - ymreolaeth sylweddol yma yn Efrog Newydd ond mae mynediad i tunnell o dalent ar draws y sefydliad.
  • Gwynt yn eich gwerthiannau (2) - Rydym yn gwneud mwy na SharePoint - llawer mwy. We do BI, CRM, UX, ymgynghori busnes, Symudol, datblygu arfer ac eraill. Rydym yn dda am draws gwerthu ymysg ein hunain ac rydym yn dda yn peintio - ac yn bwysicach, cyflwyno upon - darlun "wasanaeth llawn" ar gyfer ein cleientiaid. Mae hyn yn arbennig o apelio i mi. Rwyf wedi bod mewn nifer o Mudiadau llai gweithio ar gigs SharePoint ac yn teimlo'n rhwystredig drosodd a throsodd oherwydd ein bod yn dwll colomennod fel y "bobl SharePoint." Nid yw hynny'n digwydd gyda Slalom ac rydym yn cael i wneud mwy o waith diddorol o ganlyniad.
  • Model lleol - dim teithio.
  • Twf tymor hir - Slalom wedi bod yn mynd gangbusters. Mae llawer o dwf a sefydlogrwydd. Twf hefyd yn golygu bod angen i ni llogi arweinwyr heddiw i arwain timau newydd wrth i ni ychwanegu mwy o gleientiaid a staff i gefnogi cleientiaid hynny.

Gallwn fynd ymlaen, ond mae'n debyg eisoes wedi mynd rhy hir. Rwy'n credu fy mod i wedi dal y hanfod yma. Os ydych chi'n meddwl am newid swyddi ac mae hyn yn edrych yn dda i chi, gadewch i ni siarad.

Os ydych yn hapus yn eich swydd bresennol - gadewch i ni siarad beth bynnag :). Rydw i wedi bod mewn llawer o leoedd ac roedd yn iawn "hapus" ar y pryd. Slalom yn wahanol a byddwn yn croesawu cyfle i eich argyhoeddi o hynny.

</diwedd>

undefinedTanysgrifio i fy mlog.

Dilynwch fi ar Twitter yn http://www.twitter.com/pagalvin

Cyflym a hawdd: Gosod Maint a Eitemau mewn Bocs Rhestr mewn Ffenestri Store App

Mewn Store App Windows Rwy'n creu, Rwyf eisiau dangos y defnyddiwr gwahanol negeseuon gwybodaeth.  Dewisais listbox fel y dull i ddangos ei fod er mwyn iddynt sgrolio drwyddynt a'r holl bethau da. 

Mae'r negeseuon yn gwybodaeth yn unig, felly does dim angen i ddarparu popeth a gofod ychwanegol o'u cwmpas gan na all y defnyddiwr ddewis iddynt am unrhyw beth.  Mae ymddygiad diofyn y listbox yn darparu swm sylweddol o padin ac roeddwn i eisiau cael gwared ohono.  Wel .... nad ydych yn gallu gwneud y math yna o beth ar y listbox yn uniongyrchol.  FODD BYNNAG, gallwch chi ei wneud i eitemau yr ydych yn ychwanegu:

        preifat gwag AddGameStateLogMessage(llinyn theMessage)
        {
            Blwch testun t = newydd Blwch testun();
            t.Text = GameStateCounter     + ": " + theMessage;
            t.TextWrapping = TextWrapping.Wrap;
            t.MinWidth = 400;
            Trwch thisPadding = newydd Trwch(5, 0, 5, 0);
            t.Padding = thisPadding;
            t.FontSize = 12;

            ListBoxItem y = newydd ListBoxItem();
            li.Content = t;
            li.MaxHeight = 25;
            thisPadding = newydd Trwch(5, 0, 5, 0);
            li.Padding = thisPadding;

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

yn yr uchod, Rwy'n creu blwch testun a gosod ei ffont, ei padin, ac ati.

Nesaf, Yr wyf yn creu ListBoxItem a gosod ei chynnwys ar y blwch testun fformatio.

Yn olaf, Rwy'n mewnosoder y ListBoxItem i mewn i'r listbox.  (Yr wyf am ddangos negeseuon mwyaf diweddar ar frig y rhestr, Felly y mewnosoder(0,li) yn lle ychwanegu syml() gallu.).

Bydd yr yn addasu hyn ychydig cyn yr wyf yn hapus iawn gyda'r ymddygiad blwch rhestr ond mae patrwm a ddangosir uchod wedi bod yn gynhyrchiol iawn.  Gobeithio mae rhywun arall yn ei chael yn ddefnyddiol.

</diwedd>

undefinedTanysgrifio i fy mlog.

Dilynwch fi ar Twitter yn http://www.twitter.com/pagalvin