Как преобразовать Roku Scenegraph GridView в нижний регистр

Я работаю над приложением GridView для графа сцены. Все элементы строки написаны строчными буквами.

Я хотел бы преобразовать их в верхний регистр.

Я использую Roku Scenegraph Developer Extensions. (SGDex)

Я пробовал использовать UCase на RowAA. Это меняет заголовок на верхний регистр, но нарушает сценарий.

ie...

название: UCase (fieldInJsonAA)

    if fieldInJsonAA = "movies" or fieldInJsonAA = "series"

        mediaItemsArray = jsonAA[fieldInJsonAA]
        itemsNodeArray = []
        for each mediaItem in mediaItemsArray
            itemNode = ParseMediaItemToNode(mediaItem, fieldInJsonAA)
            itemsNodeArray.Push(itemNode)
        end for
        rowAA = {
           'title: fieldInJsonAA
           title: UCase(fieldInJsonAA)
           children: itemsNodeArray
        }

Метод, который я пробовал в примере, меняет заголовок строки на верхний регистр. Однако это нарушает сценарий.


person MarlonC    schedule 22.09.2019    source источник
comment
Вы можете показать ошибку, которую получаете?   -  person juliomalves    schedule 22.09.2019
comment
Ошибка не отображается. Заголовок строки отображается в верхнем регистре, но изображения плакатов исчезают, и при нажатии на выделенную строку ничего не происходит. Кажется, что сценарий реагирует только на заголовки строк в нижнем регистре.   -  person MarlonC    schedule 23.09.2019


Ответы (2)


Я понял. По умолчанию DetailsView ожидает, что заголовок строки будет в нижнем регистре, поэтому, когда я его изменил, он пропустил кнопку «воспроизведение» или «эпизод».

Изменяя представление «Подробности» следующим образом, это позволяет сценарию запускаться с верхним или нижним регистром.

Подробности Просмотр ...

`''' Default Code''' 

if currentItem.url <> invalid and currentItem.url <> "" 
    buttonsToCreate.Push({ title: "Play", id: "play" }) 
else if details.content.TITLE = "series" 
    buttonsToCreate.Push({ title: "Episodes", id: "episodes" }) 
end if 

''''''''

''' Updated Code that works with lower or upper case''' 

if currentItem.url <> invalid and currentItem.url <> "" 
    buttonsToCreate.Push({ title: "Play", id: "play" }) 
else if details.content.TITLE = "series" 
    buttonsToCreate.Push({ title: "Episodes", id: "episodes" }) 
else if details.content.TITLE = "SERIES" 
    buttonsToCreate.Push({ title: "Episodes", id: "episodes" }) 
end if 

''''''''`
person MarlonC    schedule 23.09.2019

Можете ли вы попробовать что-то вроде этого:

rowAA = {}
rowAA.title = UCase(fieldInJsonAA)
rowAA.children = itemsNodeArray

Or

rowAA = {}
rowAA["title"] = UCase(fieldInJsonAA)
rowAA["children"] = itemsNodeArray

РЕДАКТИРОВАТЬ: Я изначально понял, что скрипт не компилируется.

Я заметил, что в вашем методе ParseMediaItemNode вы передаете fieldInJsonAA без верхнего регистра, а затем после него в rowAA. Вы передаете тот же fieldInJsonAA, но с верхним регистром. Попробуйте передать его в верхнем регистре и в ParseMediaItemNode и проверьте, что происходит. Это дикая догадка, поскольку я мало что знаю о скрипте, который вы используете.

person U.Mitic    schedule 22.09.2019
comment
В любом случае я получаю точно такие же результаты. На самом деле происходит следующее: когда вы нажимаете на элемент строки, вы теряете кнопку воспроизведения (фильмы) или кнопку эпизода (сериала) в подробном просмотре. - person MarlonC; 23.09.2019
comment
Ой, жаль это слышать ... Я изначально понял, что скрипт не компилируется / ломается. Я заметил, что в вашем методе ParseMediaItemNode вы передаете fieldInJsonAA без верхнего регистра, а затем после него в rowAA. Вы передаете тот же fieldInJsonAA, но с верхним регистром. Попробуйте передать его в верхнем регистре и в ParseMediaItemNode и проверьте, что происходит. Это дикая догадка, поскольку я мало что знаю о скрипте, который вы используете. - person U.Mitic; 23.09.2019
comment
Спасибо за предложение, попробую. Скрипт, который я использую, представляет собой стандартный GridView от Roku SGDEX (расширения для разработчиков графических изображений). - person MarlonC; 23.09.2019
comment
Я понял. Мне также нужно было отредактировать DetailsView. В ответ добавлю свое решение. Спасибо. - person MarlonC; 23.09.2019