Сделать пагинацию в кусочках папайи DICOM Viewer, используя JavaScript
Я использую API папайи от GitHub
В этой программе просмотра папайи я хочу интегрировать несколько вещей.
Одним из них является нумерация страниц. если я пытаюсь редактировать этот API, я получаю сообщение об ошибке
Что я хочу:-
- В программе просмотра папайи NEXT, PREV работает нормально, но я хочу, чтобы при нажатии на кнопку ПЕРВЫЙ и последний срез перемещался.
- А также нумерация страниц будет 1,2,3,4... Если щелкнуть ОДИН, должен появиться первый срез.
Заранее спасибо
1 ответ
После того, как вы загрузите программу просмотра изображений Papaya Medical Research, выберите файл рабочей папки для тестирования, чтобы вы могли понять, как работает программа просмотра папайи Dicom.
Шаг 1:-
В папке js откройте файл constants.js и создайте константы
var MOVE_TO_FIRST_SLICE = "move-to-first-slice",
MOVE_TO_LAST_SLICE = "move-to-last-slice";
PAGINATION_LIST = "pagination-list";
Шаг 2:-
Теперь откройте viewer.js, создайте по клику функции FIRST, LAST и 1,2,3... слайсы (data-value).
$(this.container.containerHtml.find("#" + MOVE_TO_FIRST_SLICE + this.container.containerIndex)).click(function () {
viewer.firstLastSlice(false);
});
$(this.container.containerHtml.find("#" + MOVE_TO_LAST_SLICE + this.container.containerIndex)).click(function () {
viewer.firstLastSlice(true)
});
$(this.container.containerHtml.find("." + PAGINATION_LIST + this.container.containerIndex)).click(function () {
var id = $(this).data('value');
viewer.pagination(id);
});
Шаг 3:- И откройте main.js и создайте элементы
papaya.Container.fillContainerHTML = function (containerHTML, isDefault, params, replaceIndex) {
containerHTML.append("<button type='button' id='"+ (MOVE_TO_FIRST_SLICE + index) + "' class='" + MOVE_TO_FIRST_SLICE + "'>First</button> ");
containerHTML.append("<button type='button' id='"+ (PAPAYA_CONTROL_MAIN_INCREMENT_BUTTON_CSS + index) + "' class='" + PAPAYA_CONTROL_MAIN_INCREMENT_BUTTON_CSS + "'><</button> ");
var max = 23;
var slice;
for(slice=1; slice<=max; slice++){
containerHTML.append("<button id='"+ (PAGINATION_LIST + index) +"' class='"+ (PAGINATION_LIST + index) + "' data-value='" + slice + "' OnClick(" + slice +") >" + slice + "</button>");
}
containerHTML.append("<button id='"+ (PAPAYA_CONTROL_MAIN_DECREMENT_BUTTON_CSS + index) + "' class='" + PAPAYA_CONTROL_MAIN_DECREMENT_BUTTON_CSS + "'>></button> ");
containerHTML.append("<button type='button' id='"+ (MOVE_TO_LAST_SLICE + index) + "' class='" + MOVE_TO_LAST_SLICE + "'>Last</button> ");
containerHTML.append("<button type='button' id='"+ (GET_MAX_VALUE + index) + "' class='" + GET_MAX_VALUE + index + "'>TesT</button> ");
}
Шаг 4:-
Приведенные ниже функции важны для перемещения фрагментов viewer.js
//pagination 1,2,3
papaya.viewer.Viewer.prototype.pagination = function (id, paginationList) {
var max = this.volume.header.imageDimensions.zDim;
//console.log(id);
this.currentCoord.z = id;
this.gotoCoordinate(this.currentCoord);
};
// firstLastSlice
papaya.viewer.Viewer.prototype.firstLastSlice = function (flSlice, degree) {
var max = this.volume.header.imageDimensions.zDim;
if (degree === undefined) {
degree = 0;
}
if (flSlice) {
this.currentCoord.z = max;
} else {
this.currentCoord.z = 0;
}
this.gotoCoordinate(this.currentCoord);
};
объяснение
- viewer.js подсчитал общее количество ломтиков
this.volume.header.imageDimensions.zDim;
и сохранил общее количество в переменной Max. Еслиthis.currentCoord.z = max;
Это будет идти до последнего куска, еслиthis.currentCoord.z = 0;
Это переместится к первому срезу. - При разбиении на страницы кликните, чтобы передать значение данных в функцию нумерации viewer.js и, если
this.currentCoord.z = id
(id <=> data-value). Он будет перемещен в определенный фрагмент.
После нажатия с помощью этой функции this.gotoCoordinate(this.currentCoord);
ломтик переместится.