SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Ampelfunktionen

Unbeantwortet Dieser Beitrag hat 22 Antworten

Ohne Rang
17 Beiträge
Trader erstellt 26 Sept. 2012 12:10
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

HEy there

Ich bin zurzeit dabei, ein Ampelsystem in unsere SHP Site einzubauen. Momentan teste ich noch, es will einfach nicht klappen und das ärgert mich langsam, da ich den Fehler nicht erkennen kann.

Zum Problem.

In einem einfachen Wertefeld (1000 bis 2000) möchte ich Ampelfunktionne einbauen: grün, falls <1300, gelb, falls =1300 und rot else (also grösser 1300).

Das kalkulierte Feld hat folgende Formel:

="Indikator#"&IF(Preis<1300,"ampelgreen",IF(Preis=1300,"ampelyellow","ampelred"))

so weit so gut.

Nun füge ich ein Jaca Script in einen Content Web Part ein , wähle hierfür  "edit HTML Source" und gib den folgenden Code ein:

<script type=”text/javascript” language=”javascript”>

var i=0;

var allCells = document.getElementsByTagName(“td”);

for(i=0;i<allCells.length; i++)

{

if(allCells[i].innerText.indexOf(“Indikator#”) == 0)

{

id = allCells[i].innerText.split(“#”)[1];

if (id == “ampelyellow”)

{

allCells[i].innerHTML = “<DIV><IMG src=’Website, wo ampelyellow abgelegt ist in SHP‘ /></DIV>”;

}

if (id == “ampelgreen”)

{

allCells[i].innerHTML = “<DIV><IMG src=’Website, wo ampelgreen abgelegt ist in SHP‘ /></DIV>”;

}

if (id == “ampelred”)

{

allCells[i].innerHTML = “<DIV><IMG src=’Website, wo ampelred abgelegt ist in SHP‘ /></DIV>”;

}

}

}

</script>

so weit so gut.

wenn ich nun aber auf den OK Knopf drücke, wird einfach nicht übernommen, im Gegenteil, ich erhalte noch die folgende Meldung:

"Warning: the HTML Source you entered might have been modified"

Danke sehr für eure rasche Antwort (Grüsse auch von Mehmet, er hat auch keinen Plan) ;)

 

 

Alle Antworten

Ohne Rang
4614 Beiträge
Michael Greth Als Antwort am 26 Sept. 2012 12:38
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Schau doch mal in diese Artikel rein vielleicht helfen die (oder die darin genannten weiteren Quellen)

http://blog.pathtosharepoint.com/2010/01/04/html-calculated-column-and-unicode-graphics/

http://blog.pathtosharepoint.com/2010/06/16/html-calculated-column-solutions-for-sp-2010-part-iv/

 

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 26 Sept. 2012 13:34
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das Content Editor Webpart manipuliert eigenmächtig den Quellcode, wenn es irgendwas davon für schädlich hält.

Lasse das Webpart weg, öffne die Seite in SharePoint Designer und füge Dein Script an einer passenden Stelle ohne Webpart ein. Aber innerhalb von PlaceHolderMain, am Besten ganz unten.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
17 Beiträge
Trader Als Antwort am 26 Sept. 2012 14:06
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

wenn du den Code anguckst, muss ich da was übersehen einzufügen oder stimmt der soweit? Mein Designer funktioniert noch nicht.

Habt ihr ne Erklärung bezüglich der Fehlermeldung?? Und die EIngabe im Content Edirot unter HTML Source sollte ja stimmtn oder?

Grüsse

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 26 Sept. 2012 14:09
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Der Code selbst könnte durchaus funktionieren (solange er unterhalb der Ansicht ist), aber die Meldung besagt ja, daß das Webpart den Code modifiziert habe. Was davon kommt denn in der Seite an, wenn Du sie im Browser aufrufst?

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
17 Beiträge
Trader Als Antwort am 26 Sept. 2012 14:45
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

meine Testliste besteht aus 3 Spalten, Automarke, Preis und Indikator, der eben ein Ampelsignal (den Verweis füge ich im Java Script dann ein bei der betreffenden Ampelfarbe) auf die Preisspalte anzeigt. Wenn ich nun, nachdem dieses kleine Fehmermeldungskästchen oben rechts aufgegangen war, die Seite refreshe, dann erscheint genau dasselbe wie vorhin, nämlich das Editor Web Part und die Liste, mit, aufgrund der in der berechneten Spalte eingegebenen Formel, dem Indikatortext: ampel#ampelgreen oder ampel#ampelred und das pendant zum yellow. Also unverändert...

Ohne Rang
17 Beiträge
Trader Als Antwort am 26 Sept. 2012 14:50
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

ich frage mich auch, ob diese Codeangabe:

var allCells = document.getElementsByTagName(“td”);

korrekt ist, da das td doch besagt, dass auf jede Zelle im table zugegriffen wird, Referenz ist aber nur die Preisspalte...

Muss ich da was ändern???

Ohne Rang
17 Beiträge
Trader Als Antwort am 26 Sept. 2012 15:32
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

habe jetzt den Designer 2010, was meinst du genau mit 2 " PlaceHolderMain"??

Danke

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 26 Sept. 2012 17:18
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Trader"]habe jetzt den Designer 2010, was meinst du genau mit 2 " PlaceHolderMain"??[/quote]

SharePoint benutzt Masterpages und Platzhalter. Mache Dich mit diesem Konzept von ASP.NET vertraut. Und öffne einfach mal die Seite in SharePoint Designer und schaue Dir dort den Quellcode an. Vielleicht weißt Du dann, was gemeint ist.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 26 Sept. 2012 17:17
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Trader"]da das td doch besagt, dass auf jede Zelle im table zugegriffen wird[/quote]

Das stimmt, damit gehst Du wirklich jede Tabellenzelle durch. Durch die Prüfung, ob die Zelle den gewünschten Wert enthält, sollte das aber egal sein (von der miesen Performance mal abgesehen).

Schaue Dir einfach mal den HTML-Quelltext der Seite an, wie genau das dort ausgegeben wird. Und benutze ggf. einen JavaScript-Debugger. Im IE z.B. über F12 erreichbar.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
22 Beiträge
Karsten Pohnke Als Antwort am 27 Sept. 2012 08:26
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

also bei mir funktioniert das Script obwohl die Meldung, dass der HTML Source geändert wurde, erscheint.

Hast Du die Hochkommata angepasst? Bei Dir stehen diese gerade als ” statt als " und das gleiche gilt auch bei den einfach!


Ohne Rang
17 Beiträge
Trader Als Antwort am 3 Okt. 2012 14:58
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Sali Karsten

Ich habe ne riisen Challenge für dich. Ich versuche in einer Liste eine fortlaufende Nummerieung zu erschaffen, die mir (wie in Excel die Row Funktion) auch bei der Löschung von Zeilen automatisch die Nummerieung anpasst, so dass die Fortführung gewährleistet ist, ohne Lücken. Das Problem besteht ja darin, dass in Sharepoint der Bezug im calculated Field auf eine andere Spalte besteht und nicht auf die Reihenanzahl ganz links am Rande wie in Excel.

Beste Grüsse

Simon (und Mehmet, der wiederum ein sehr grosses Interesse an deiner Antwort hat) ;)

Ohne Rang
17 Beiträge
Trader Als Antwort am 12 Okt. 2012 09:30
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich habe nochmal ne Frage:

Folgendes habe ich gemacht: Ich habe eine Liste kreiert, mit Deadline (Date field) und Days Left field (=calculated Field) mit folgender Formel:

=IF([Milestone order to FENT]=0,"No date",[Milestone order to FENT]-DATE(1970,1,1))

Darauf habe ich im beschriebenen Feld logischerweise grosse Zahlen erhalten (um die 15000, da ja auf 1970 rückdatiert wird).

Dann habe ich zusätzlich eine Spalte kreiert (Indikator, auch calculated field)  mit folgender Formel:

="Indikator#"&IF([Days Left]>14,"ampelgreen",IF(AND([Days Left]<=14,[Days Left]>2),"ampelyellow",IF(AND([Days Left]<=2,[Days Left]>=-5),"ampelred","Chrigu")))

an den zwei FOrmeln ist nichts auszusetzen, die funzen prima.

Dann hab ich in einem CEWP ein Java Script hinterlegt, und darauf hat es mir die Ampeln angezeigt, natürlich alle in grün (ampelgreen), da der Bezug ja auf die 15000er Zahlen gilt. So weit mal alles gut:

Nun möchte ich aber zusätzlich das Today field mit einem Workaround umgehen. Dazu muss programmiert werden und das hab ich folgendermassen gemacht:

Ich hab eine Weppartpage kreiert, im Designer geöffnet, dann meine obig beschriebene Liste eingefügt und ein Data Form Web Part erschaffen. Darauf bin ich in den Code gegangen und hab die einze Zeile mit dem Java Script ausgetauscht:

<DIV align = "right">
    <xsl:variable name="StrDaysLeft" select="@Days_x0020_Left" />
    <xsl:variable name="NbDaysLeft" select="number(translate(@Days_x0020_Left,',',''))" />
    <script type="text/javascript">
    var d = new Date();
    var StrDaysToDue = &apos;<xsl:value-of disable-output-escaping="no" select="$StrDaysLeft" />&apos;;
    var DaysToDue = &apos;<xsl:value-of disable-output-escaping="no" select="$NbDaysLeft" />&apos;;
    var DaysToToday = (d.getTime() / 86400000);
    if (StrDaysToDue == &quot;No due date&quot;)
    {
    document.write (StrDaysToDue);
    }
    else
    {
    var NumberOfDaysLeft = Math.round((DaysToDue - DaysToToday)*10)/10;
    if (NumberOfDaysLeft &gt;= 0)
    {
    document.write (NumberOfDaysLeft);
    }
    else
    {
    document.write (&quot;OVERDUE! &quot; + NumberOfDaysLeft);
    }
    }
    </script>
    </DIV>

und es hat auch prima funktioniert. Unter Site Asstes, wo ich die Wep Part Page abgelegt habe, wurde dann auch schön in Tagen die Differenz zw Deadline und Today angezeigt (z.B. 4.5 oder 15.6 oder auch -10.1). So weit eigentlich auch alles gut.

Nun aber die Ernüchterung:

Die Ampeln standen immernoch au grün, eigenlich sollten sie ja jetzt andere Farben einnehmen, aber da ich sie in der Liste kreiert habe und dann die Liste in die Web Part Page eingefügt und darauf dann im Designer das java angesetzt habe, vermute ich, dass die Ampeln, resp das dafür im CEWP hinterlegte Java nur in der Liste funktioniert und nicht im WebPart. Das ist natürlich nicht so sexy, zumal ich die WebPartPage ja in SHP schlecht bearbeiten kann.

Hat mir jemand eine Lösung, wie die Ampeln auf das neu definierte Days Left feld (also die schönen Zahlen, nicht 15000ner Zahlen) zugreifen kann??

Hab dafür auch extra oberdetailliert beschrieben ;)

besten Dank schon im voraus

Lg

Simon

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 12 Okt. 2012 09:50
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Dir fehlen da einfach Komponenten. Wenn Du eine bestimmte Listenansicht anpaßt (mit CEWP usw.) dann gilt das erstmal nur für die eine Seite. Wenn Du dann diese Ansicht auf einer anderen Seite einfügst, hat das nichts mit der ursprünglichen Ansicht zu tun. Sorge dafür, daß auf der Seite, auf der Du die Ampeln haben möchtest, alles vorhanden ist. Also XSLT, JavaScript usw. JavaScript muß übrigens immer unterhalb der Ansicht untergebracht werden.

Oder habe ich da etwas komplett falsch verstanden?

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
17 Beiträge
Trader Als Antwort am 12 Okt. 2012 10:15
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

die Ampeln habe ich alle auf der Liste untergebracht, jedoch verweisen sie auf die 15000ner Zahlen, somit alle grün.

Im Internet in anderen Foren hab ich gelesen, dass ich, um sozusagen eine sauberes Differenzfeld zw Deadline und heitigen Datum zu erhalten, eine Weppart page kreiern muss. Wie oben alles sauber beschrieben, füge ich dann die Liste da ein, verändere im Designer den Code (oder ergänze ihn) und die Days Left Anzeige ist umcodiert, jedoch die Ampeln immernoch alle auf grün. Die Liste, wo die Ampeln eingebaut sind, sind unter Lists abgelegt, das WebPart mit der migrierten Liste in einer anderen Seite (Site Assets).

Einziges Problem ist eben, dass die Ampeln halt auf das Days Left der Liste referenzieren (also 15000ner Zahlen) und nicht auf das Days Left der migrierten Liste in der Web Part Page

Ohne Rang
17 Beiträge
Trader Als Antwort am 17 Okt. 2012 10:53
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

wäre super, wenn wir da ne Lösung finden könnten.

--> wie kann ich es schaffen, dass die Ampelspalte neu auf neuen Zahlen referenzieren (im Webpart) und nicht mehr auf die 15000ner in der Liste'?

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 17 Okt. 2012 16:00
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Tut mir echt leid, aber ich verstehe überhaupt nicht was Du meinst oder wo Dein Problem liegt :-(

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
17 Beiträge
Trader Als Antwort am 18 Okt. 2012 10:56
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

kannst du mir evt genauer verraten, wo genau und was du nicht verstehst?

noch ein anderer Ansatz.

Ist es möglich, das Differenzfeld (zw Deadline und Today date) im Designer direkt in der Liste zu bearbeiten ohne erst eine WebPartPage kreieren zu müssen?? Das hab ich mal ausprobiert, aber hab kein xslt View und somit die Codes nicht gleich editieren können (es hat mir die Liste gerade verrissen, nachdem ich die Codes der Liste im Designer verändert habe mit java).

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 18 Okt. 2012 11:41
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Eigentlich habe ich gar nichts verstanden, aber besonders nicht die Geschichte mit den 15.000

Und natürlich kannst Du auch eine Listenansicht direkt in SharePoint DEsigner öffnen. Das ist auch nur eine WebPart-Seite mit dem selben WebPart drauf.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
17 Beiträge
Trader Als Antwort am 18 Okt. 2012 15:58
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

das mit den 15000ern ist wegem dem calculated "Days Left" Feld, welches, wie oben in der Formel angezeigt, die Defferenz zw. Deadline und 1.1.1970 ausgibt (also bisschen mehr als 15000 Tage auf den Oktober 2012 bezogen).

Stimmt, die Liste kann ich natürlich in SharePoint Designer öffnen und editieren, habe aber komplett andere Codes, wie wenn ich eine WEP Part Page kreiere und in ein Web Part da die Liste einfüge und dann editiere. Ich wüsste schon gar nicht, wo ich meinen Code einfügen sollte, wenn ich die Liste direkt im Designer-Codeview bearbeite. Habs mal nach gutdünken gemacht und fand danach in SHP eine verrissenen Liste vor. Über das Erstellen einer WebPart Page funktionierte die übersetzung der 15000 Zahlen super (ich muss über 1.1.1970 gehen, um einen festen Wert zu haben, Today funktioniert ja nicht, mit Java berechne ich dann die Differenz zw Deadline und 1970 und Today und 1970, was mir ja dann mein ersuchtes Days Left Feld ausspuckt).

Schade ist einfach, dass ich in der WEBPART PAGE (also immer unterscheiden ob in der original Liste oder Liste eingefügt in WebPartPage) die neue Spalte nicht in die Liste (nun die original Liste abgelegt under Lists und nicht documents wie die Web Part Page) kopieren oder transferieren kann.

Verstehst du jetzt etwas mehr???

 

Ohne Rang
17 Beiträge
Trader Als Antwort am 18 Okt. 2012 16:01
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

zur Vervollständigung:

 Ich habe eine Liste erstellt,
und darin eine Spalte, die mir die Differenz zw Deadline u heutigem Datum
anzeigt (Formel: „=IF(Deadline=0,”No due date”,Deadline-DATE(1970,1,1))”)
Ich erhalte somit grosse Zahlen (15000ner) da rückdatiert wird auf den 1970.1.1.
Nun füge ich eine weitere Spalte ein, die Ampelspalte mit folgender Formel:
„=”Indikator#”&IF([Days Left]>7,”ampelgreen”,IF(AND([Days Left]0),”ampelyellow”,IF(AND([Days Left]=-2),”ampelred”,”Bombe”)))”
Dann, wie schon oben im Thread diskutiert wurde, füge ich das Java ein und die Ampel werden angezeigt (logischerweise nur in grün, da ja auf die 15000ner Werte referenziert wird).
Nun muss ich die grossen Tageswerte in echte Differenzen zw heute und Deadline übersetzen.
Dafür baue ich im SHPDesigner eine blanke Web Part Page, füge da meine Liste ein und gehe in
Den Code (habe ein Data Form Web Part). Dann ersetze ich die Days Left Zeile mit dem folgenden Code:

var d = new Date();
var StrDaysToDue = '';
var DaysToDue = '';
var DaysToToday = (d.getTime() / 86400000);
if (StrDaysToDue == "No due date")
{
document.write (StrDaysToDue);
}
else
{
var NumberOfDaysLeft = Math.round((DaysToDue – DaysToToday)*10)/10;
if (NumberOfDaysLeft >= 0)
{
document.write (NumberOfDaysLeft);
}
else
{
document.write ("OVERDUE! " + NumberOfDaysLeft);
}
}

Das funktioniert auch prima. Speichere ich und gehe dann ins SHP um gucke in der Liste nach, steht da immernoch der 15000ner Wert, ist ha logo, aber in Site Pages, wo ich die Web Part Page abgespeichert habe, sehe ich wunderschön, auf 1 Dezimalstelle gerundet, die Differenz (z.B. 10.6 oder -3.4) also super.
Nur leuchten alle Ampeln immernoch auf grün auf und da besteht nun mein Problem.
Ich habe im Designer in der WPPage zusätzlich noch das CEWP eingefügt mit dem Java für die Ampeln, damit die mit auch in dieser Page angezeigt werden. Das funktioniert auch, aber es leuchten alle auf grün, und referenzieren somit NICHT auf das neu übersetzte Days Left Feld, sondern immernoch auf die grossen Werte. Wie krieg ich das hin???

Lg
Simon

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 18 Okt. 2012 17:20
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

So langsam kapiere ich einigermaßen, was Du da treibst - hoffe ich jedenfalls.

Das ist alles viel zu kompliziert. Man kann die Anpassungen direkt im XSL der Datenansicht machen und dort auch eine heute-Funktion verwenden. Wie das grundsätzlich geht, habe ich hier mal beschrieben: http://blogs.evocom.de/af/archive/2011/04/07/datumsvergleiche-für-bedingte-formatierungen-in-datenansichten.aspx

Man muß es nur etwas erweitern, damit nicht die Tabellenzellen gefärbt werden, sondern eben ein Ampel-Icon ausgegeben.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
120 Beiträge
turrican 72 Als Antwort am 9 Okt. 2012 09:15
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Warum verwendest Du hierzu nicht die "Bedingte Formatierung" aus dem SharePoint Designer?