Как сделать статическое значение первым значением в списке с помощью JavaScript? ORACLE APEX - СПИСОК ЛЮБВИ

Я использую Oracle Application Express 4.2, и у меня есть LOV (список значений) со списком номеров рейсов в списке выбора. Это динамический список ценностей. Я хочу добавить статическое значение вверху списка выбора с надписью «Предстоящие». Я также хочу добавить статическое значение перед определенным полетом в списке выбора с надписью «Прошлые полеты». Таким образом, я могу различать в списке выбора, какие рейсы являются предстоящими, а какие - прошлыми. Мой динамический LOV в настоящее время называется P_100_FLIGHT_LOV2.

У меня ниже есть код JavaScript, который выполняется при загрузке страницы и добавляет статическое значение «Предстоящее» в мой список выбора, но добавляется в качестве последней опции. Я хочу, чтобы это было вверху и посередине перед определенным полетом. Как я могу добиться этого с помощью JavaScript?

Вот мой код JavaScript ниже:

var x = document.getElementById("P100_FLIGHT_LOV2");
 var option = document.createElement("option");
 option.text = "Upcoming";
 x.add(option);

Вот результаты этого JS-кода в настоящее время:

SPX-14
67P
OA-9
55S
DRAGONX
34R
UPCOMING ----------CURRENTLY AT BOTTOM OF SELECT LIST

Желаемый набор результатов, который я хочу достичь:

UPCOMING -----------STATIC VALUE
SPX-14
67P
OA-9
PAST FLIGHTS ---------STATIC VALUE
55S
DRAGONX
34R

person Chris M    schedule 12.01.2018    source источник


Ответы (4)


Я не знаю, как это сделать с помощью JavaScript, но я знаю, как это сделать с помощью Oracle. Итак, поехали.

SQL> with flight_schedule (flight, sched) as
  2  (select 'SPX-14' , to_date('12.01.2018 22:00', 'dd.mm.yyyy hh24:mi') from dual union
  3   select '67P'    , to_date('12.01.2018 22:15', 'dd.mm.yyyy hh24:mi') from dual union
  4   select 'OA-9'   , to_date('12.01.2018 22:40', 'dd.mm.yyyy hh24:mi') from dual union
  5   select '555'    , to_date('12.01.2018 18:30', 'dd.mm.yyyy hh24:mi') from dual union
  6   select 'DRAGONX', to_date('12.01.2018 19:00', 'dd.mm.yyyy hh24:mi') from dual union
  7   select '34R'    , to_date('12.01.2018 19:28', 'dd.mm.yyyy hh24:mi') from dual),
  8  static_values as
  9  (select 1 what, 'UPCOMING' statval from dual union
 10   select 3     , 'PAST FLIGHTS'     from dual
 11  ),
 12  --
 13  prep as
 14  (-- Static values
 15   select what, statval flight, null sched
 16     from static_values x
 17   union
 18   -- Upcoming flights
 19   select 2 what, flight, sched
 20     from flight_schedule
 21     where sched > sysdate
 22   union
 23   -- Past flights
 24   select 4 what, flight, sched
 25     from flight_schedule
 26     where sched <= sysdate
 27  )
 28  select flight, sched scheduled_time
 29  from prep
 30  order by what, sched;

FLIGHT       SCHEDULED_TIME
------------ ----------------
UPCOMING
SPX-14       12.01.2018 22:00
67P          12.01.2018 22:15
OA-9         12.01.2018 22:40
PAST FLIGHTS
555          12.01.2018 18:30
DRAGONX      12.01.2018 19:00
34R          12.01.2018 19:28

8 rows selected.

SQL>

Несколько примечаний:

  • текущая "системная дата" (относительно этого примера) - 12.01.2018 21:00
  • flight_schedule - это фактическая "таблица расписания полетов" с указанием рейсов и расписания.
  • они «объединены» со статическими значениями. Столбец WHAT показывает, где разместить эти значения (т. Е. Указывает на их позицию сортировки)
  • Таблица PREP подготавливает эти значения; статические тривиальны, а предстоящие и прошлые полеты зависят от "sysdate"

О да, еще кое-что: поскольку это Apex LoV, вам нужно будет выбрать точно два значения: display и return значение; что бы это было, вам лучше знать (возможно, ПОЛЕТ и его ID, или что-то в этом роде).

person Littlefoot    schedule 12.01.2018

Это код JavaScript, который мне нужен для добавления статического значения к моему существующему списку значений. Этот код JavaScript выполняется при загрузке страницы и добавляет статическое значение «Прошлые рейсы» к указанному параметру. Спасибо всем за помощь.

$('#P100_FLIGHT_LOV2 option[value="55S"]').before('<option value="Past">--- Past Flights ---</option>');
person Chris M    schedule 15.01.2018

Решение Javascript для этого не зависит от APEX. Поскольку APEX использует библиотеку jQuery этот SO-ответ должен это сделать.

(NB, я не предлагал закрывать этот вопрос как дубликат, потому что @Littlefoot также показал, что в APEX, в частности, есть другие способы сделать это без использования Javascript.)

person Tony Andrews    schedule 14.01.2018

Для этого удобнее всего использовать плагин Select2. Как написано на странице плагина, он совместим с версией 4.2.

В свойствах плагина нужно написать запрос, который возвращает 3 столбца. Третий - столбец для названий групп (UPCOMING и PAST FLIGHTS):

select 'SPX-14' display_value, 1 return_value, 'UPCOMING' group_name from dual union all
select '67P',     2, 'UPCOMING' from dual union all
select 'OA-9',    3, 'UPCOMING' from dual union all
select '55S',     4, 'PAST FLIGHTS' group_name from dual union all
select 'DRAGONX', 5, 'PAST FLIGHTS' from dual union all
select '34R',     6, 'PAST FLIGHTS' from dual

См. Пример «Группировка параметров» на странице Select2 страница плагина.

person Dmitriy    schedule 15.01.2018