Как получить дескриптор диаграммы додзё, чтобы изменить ее размер?

У меня есть линейная диаграмма додзё, которая содержится на скрытой панели. Естественно, когда страница открыта, диаграмма имеет размеры по ширине и высоте по умолчанию. Однако, когда я отображаю панель, я хочу изменить размер диаграммы, чтобы она соответствовала панели. Я нашел оператор chart.resize(w,h), но не знаю, как его использовать. Как мне получить дескриптор самой диаграммы?

Я создаю диаграмму, используя это...

var chart3 = new dojox.charting.Chart2D("#{id:panelSimpleChart}");

но это просто указывает диаграмме, где отображать. На самом деле этот идентификатор не присваивается диаграмме, верно?

Я нашел сообщение со ссылкой на это...

var chart = dijit.byId("#{id:panelSimpleChart}");
if (chart != null ) {
    chart.resize(w,h);
}

но когда я пытаюсь это сделать, используя имя моей панели, диаграмма имеет значение null.

Кажется, это простой вопрос, но я немного сбит с толку. Может ли кто-нибудь указать мне в правильном направлении?

Это разметка содержащей панели...

<xp:panel id="panelSeatTotals">
    <xp:this.styleClass><![CDATA[#{javascript:"xspDisplayNone"}]]></xp:this.styleClass>

Итак, он визуализируется, но не отображается.

Вот еще немного кода (с удаленным ненужным материалом)

<xp:repeat id="repeat1" rows="50" var="asmydata"
    indexVar="asmyindex" value="#{view1}">
    <xp:panel id="panelAsmyDoc">
...
        <xp:table>
...
            <xp:panel id="panelSeatTotals">
                <xp:this.styleClass><![CDATA[#{javascript:"xspDisplayNone"}]]></xp:this.styleClass>
...
                <xp:tr>
                    <xp:td
                        style="padding-left:20.0%">
                        <xc:chartLine_AS></xc:chartLine_AS>
                    </xp:td>

Это из диаграммы cc:

<xp:panel id="panelSimpleChart"
        style="width:100%; height: 400px;height:200px">

    </xp:panel>

а сценарий...

makeCharts3 = function(){
    //line chart
   var chart3 = new dojox.charting.Chart2D("#{id:panelSimpleChart}");
...
}
XSP.addOnLoad(makeCharts3);

person Bob Cross    schedule 10.08.2017    source источник
comment
Основываясь на аналогичном вопросе здесь, на SO ( stackoverflow.com/questions/4610920/ ) это должно работать. Убедились ли вы, что по крайней мере узел DOM, для которого вы создали диаграмму, существует dojo.byId("#{id:panelSimpleChart}")? Вычисленный идентификатор мог измениться, если вы выполнили частичное обновление одного из родительских элементов...   -  person xpages-noob    schedule 10.08.2017
comment
Источник страницы показывает, что он есть div id=view:_id1:CompXPage:_id171:repeat1:0:_id778:panelSimpleChart   -  person Bob Cross    schedule 10.08.2017
comment
IMO, вы должны программно проверить, что узел с данным идентификатором существует с dojo.byId прямо перед попыткой получить диаграмму с dijit.byId.   -  person xpages-noob    schedule 10.08.2017
comment
о, подождите, я понимаю, что вы говорите, поскольку панель скрыта при открытии страницы, вычисленный идентификатор отличается от того, который он имеет, когда панель отображается, верно? Тогда есть ли способ восстановить этот идентификатор? - или мне нужно просто указать это явно, так как я знаю, что это будет?   -  person Bob Cross    schedule 10.08.2017
comment
Это зависит от того, что вы подразумеваете под скрытым. Он просто не отображается (на стороне клиента) или вообще не отображается (на стороне сервера)... Не могли бы вы добавить к своему вопросу соответствующую разметку XPage? Существует несколько возможных причин проблемы со ссылками, которую вы описываете.   -  person xpages-noob    schedule 10.08.2017
comment
Разметка была добавлена ​​в мой пост.   -  person Bob Cross    schedule 10.08.2017
comment
На самом деле я имел в виду всю соответствующую разметку. В любом случае: важно знать, находятся ли оба сегмента кода из вашего вопроса внутри повтора. В противном случае сгенерированные идентификаторы на стороне клиента не будут совпадать.   -  person xpages-noob    schedule 10.08.2017
comment
Я добавил больше кода в свой пост. Надеюсь, это поможет.   -  person Bob Cross    schedule 11.08.2017
comment
Находится ли весь код, связанный с диаграммой, внутри пользовательского элемента управления chartLine_AS?   -  person xpages-noob    schedule 11.08.2017
comment
Да, я добавил панель от cc.   -  person Bob Cross    schedule 11.08.2017
comment
Часть, где вы хотите получить диаграмму через dijit.byId, также находится внутри диаграммы cc?   -  person xpages-noob    schedule 11.08.2017
comment
Нет, это не так. Но это в рамках того же повторного контроля. Существует 4 варианта линейной диаграммы, поэтому я планировал поместить код изменения размера в обработчик события частичного обновления, событие OnComplete.   -  person Bob Cross    schedule 11.08.2017
comment
РЕШЕНО Спасибо, г-н xpages-noob, за ответ на мой призыв о помощи и за ваше экспертное понимание. Я решил визуализировать диаграмму ПОСЛЕ отображения содержащей ее панели, что позволило полностью избежать проблемы изменения размера. Итак, я скопировал свою функцию makechart из моего пользовательского элемента управления и поместил ее в кнопку на моей странице — внутри моей содержащей панели. После отображения панели пользователь должен выбрать, какую диаграмму отображать (помните, выбор из 4), поэтому в событии onComplete моих переключателей я вызываю свою новую кнопку Render для создания диаграммы. Это работает отлично. Еще раз спасибо за ваше терпение.   -  person Bob Cross    schedule 11.08.2017


Ответы (1)


РЕШЕНО Спасибо, г-н xpages-noob, за ответ на мой призыв о помощи и за ваше экспертное понимание. Я решил визуализировать диаграмму ПОСЛЕ отображения содержащей ее панели, что позволило полностью избежать проблемы изменения размера. Итак, я скопировал свою функцию makechart из моего пользовательского элемента управления и поместил ее в кнопку на моей странице — внутри моей содержащей панели. После отображения панели пользователь должен выбрать, какую диаграмму отображать (помните, выбор из 4), поэтому в событии onComplete моих переключателей я вызываю свою новую кнопку Render для создания диаграммы. Это работает отлично. Еще раз спасибо за ваше терпение.

person Bob Cross    schedule 11.08.2017