Domanda

Esiste un modo per modificare il valore predefinito della formula Time Intelligence Post??

Ho una dashboard in cui utilizzo i filtri Dalla data e Alla data, per calcolare i valori tra il periodo selezionato dall'utente, per questi filtri utilizzo il Formula post intelligenza temporale, tuttavia, l'impostazione predefinita quando l'utente accede alla pagina è sempre la data odierna su entrambi i filtri. (e da oggi ad oggi l'analisi non ha senso per questo)

Quello che mi piacerebbe è che la data di inizio sia qualcosa come 30 giorni prima della data odierna, ma non forzata nel report che riceve i filtri, voglio solo che il filtro abbia un valore predefinito e quindi lasciare che l'utente scelga quello che vuole.

Qualcuno sa qualcosa che si può fare o semplicemente non si può fare?

MODIFICARE:

Attraverso la ricerca su questo collegamento mi ha mostrato che non può essere fatto tramite Normal Ways:

sgrice ha posto questa domanda:Adoro il calendario e la facilità di collegarlo al mio cubo;tuttavia, non disponiamo mai dei dati per "Oggi", che è la data predefinita.Pertanto, le nostre dashboard sono sempre vuote quando vengono visualizzate per la prima volta e il nostro cliente deve selezionare una data.C'è un modo per modificare la data predefinita?

L'autore del post dice in una risposta al commento:

No, mi dispiace, ma lo inserirò come suggerimento di funzionalità.

Grazie,

Alison

Quindi non esiste un modo formale per farlo, quindi sto cercando di farlo in un altro modo.Quindi sto cercando di farlo in un modo più non documentato e oscuro, tramite Javascript.Gradirei aiuto per trovare un modo per farlo.

È stato utile?

Soluzione 3

L'ho risolto tramite JavaScript e JQuery.Fondamentalmente ho controllato cosa faceva il calendario e l'ho riprodotto, mi sono reso conto che regolava la visibilità del calendario quando hai fatto clic sul giorno, e poiché non mi interessava l'ho rimosso e ho chiamato un metodo con questo nome pps_TI_calendar_render passando tre parametri, uno era l'id del calendario td e gli altri due erano la data che hai selezionato in un nome completo.Ho controllato se accettasse solo due parametri e la data in un formato più semplice il risultato è questa chiamata JavaScript (nota che sto solo cambiando il primo calendario della data PPS):

pps_TI_calendar_render(  $('.pps_calendarToggleDown').first().parent().closest('td').attr('id'),'01/01/2010');

(Questo formato di data è mese/giorno/anno) Se si mette ad esempio il 14/01/2010, posizionerà il calendario nel primo febbraio del 2011.Quindi attenzione.

NOTA Nel primo parametro ho utilizzato una selezione JQuery per ottenere l'id che volevo, questo potrebbe essere modificato, ma il parametro deve essere l'id dell'elemento utilizzato da pps.

Spero che questo ti aiuti.

Altri suggerimenti

Ok, ho seguito questo thread per un po' e ho provato tanti metodi per farlo funzionare, alla fine mi sono fatto strada attraverso quasi tutto il JavaScript SP2010 e SP2007 e ho scoperto che quanto segue funziona su SP2010 e l'ho fatto funzionare in SP2007 con un prefisso diverso.

Passo 1:scopri quali sono i prefissi ID Javascript delle parti del tuo calendario.

  • Per fare ciò, avvia la dashboard in IE8 o IE9 e premi F12 per avviare Javascript Debugger.
  • Utilizza Javascript GetElementByTagName("TD") per ottenere un elenco completo di tutti i tag TD sulla pagina.
  • Cerca i tag che hanno un GUID nell'id e che terminano con _Selection e Selection_Toggle.
  • Queste saranno le parti del filtro del tuo calendario.Nota il prefisso iniziale (in SP2007 era ct_100_ in SP2010 era pps_)

Passo 2:aggiungi il seguente Javascript alla fine della tua pagina master utilizzata per le dashboard (guarda alla fine del post)

Passaggio 3:salva la pagina principale e aggiorna il browser e la data dovrebbe cambiare a ieri.

L'ho creato anche per una dashboard con due filtri di calendario per consentire il filtraggio dell'intervallo di date e questo imposterà la prima data su 11 giorni prima e la seconda data su ieri.Per qualsiasi domanda emil.swanepoel@live.co.za

<script type="text/JavaScript">


var isFirstLoad;
var calendarLoaded = false;
var srcID = "ctl00_m_WebPart_293af46d1c5c4320893d47f86614325bSelection";
var strDate = "Tue Aug 2 00:00:00 UTC+0200 2011";
var t;
var dateBackA = 1;
var dateBackB = 10;
testForCalendar();

function testForCalendar()
{
    isFirstLoad = true;
    if(calendarLoaded != true)
        t = setTimeout("waitForIt()", 5);
}

function waitForIt()
{
    var foundControl = -1;
    var t = document.getElementsByTagName("TD");
    var ts = "";
    var subDateFound = false;
    var xPoint = 0;
    for(var x = 0; x < t.length; x++)
    {
        if((t[x].id.indexOf("pps_") == 0) && t[x].id.indexOf("Selection_Toggle") > 0)
        {
            foundControl = x;
            ts = t[x].id.substring(0, t[x].id.indexOf("_Toggle"));
            xPoint = x;
            x = t.length;
        }
    }
    if(foundControl > -1)
    {
        if(isFirstLoad == true)
        {   
            if(t[xPoint].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.innerHTML.indexOf("Start Date:") > -1)
                calendarIntercept(ts, calendarDate(new Date(), dateBackB));
            else 
                calendarIntercept(ts, calendarDate(new Date(), dateBackA));
            waitForItSub(xPoint, ts);
            calendarLoaded = true;
            isFirstLoad = false;
        }
        else
            t = setTimeout("waitForIt()", 5);
    }
    else
        t = setTimeout("waitForIt()", 5);   
}

function waitForItSub(startPoint, firstTag)
{
    var foundControl = -1;
    var t = document.getElementsByTagName("TD");
    var tsub = "";
    var xPointNew = 0;
    for(var x = (startPoint++); x < t.length; x++)
    {
        if(t[x].id.indexOf(firstTag) == -1)
        {
            if((t[x].id.indexOf("pps_") == 0) && t[x].id.indexOf("Selection_Toggle") > 0)
            {
                foundControl = x;
                tsub = t[x].id.substring(0, t[x].id.indexOf("_Toggle"));
                xPointNew = x;
                x = t.length;
            }
        }
    }
    if(foundControl > -1)
    {
        if(isFirstLoad == true)
        {   
            if(t[xPointNew].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.innerHTML.indexOf("Start Date:") > -1)
                calendarIntercept(tsub, calendarDate(new Date(), dateBackB));
            else
                calendarIntercept(tsub, calendarDate(new Date(), dateBackA));
            calendarLoaded = true;
            isFirstLoad = false;
        }
    }
}

function calendarIntercept(inSrcID, inDate)
{
    strDate = (inDate.getMonth()+1) + "/" + inDate.getDate() + "/" + inDate.getFullYear(); 
    pps_TI_calendar_render ( inSrcID, strDate , strDate );
}

function calendarDate(inDate, daysBack)
{
    var returnValue = new Date();
    returnValue.setDate(returnValue.getDate() - daysBack);
    return returnValue;
}

</script>

È necessario creare due calendari, e poi mappare uno della data di inizio e uno per la data di fine. Questo è descritto in questo commento sul blog di performance Point.

La tecnica è la seguente:

  

Per lavorare con una data di inizio e di fine è necessario creare 2 calendari. Poi si collega un calendario <> e l'altra a <>. Come formula è sufficiente inserire giorno: Day.   Nel rapporto si dovrà creare un set chiamato 'DateRange' o qualcosa di simile.

WITH 
SET [DateRange] AS
   <<StartDate>>.Item(0) :  <<EndDate>>.Item(0)
SELECT
NON EMPTY 
[DateRange]
ON COLUMNS,
{ [Measures].[Price Total] }
ON ROWS
FROM [TurnoverCube]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top