//package alraune
//
//import alraune.*
//import vgrechka.*
//
//class class SpitCompareOperationsPage : SpitPage {
//    override fun spit() {Spit()}
//    class Spit {
//        val params = AlGetParams()
//        val operationId = listOf(
//            getParamOrBailOut(params.id1),
//            getParamOrBailOut(params.id2))
//
//        val operations = operationId.map {
//            dbSelectMaybeOperationById(it)
//            ?: bailOutToLittleErrorPage(rawHtml(t("TOTE", "Операции с ID <b>$it</b> не существует")))
//        }
//
//        init {
//            operations.forEach {
//                if (it.orderId == null)
//                    bailOutToLittleErrorPage(t("TOTE", "Операция <b>${it.id} не относится к заказам</b>"))
//            }
//            if (operations[0].orderId != operations[1].orderId)
//                bailOutToLittleErrorPage(t("TOTE", "Операции относятся к разным заказам. Толку их сравнивать?"))
//        }
//        val operation0 = operations[0]; val operation1 = operations[1]
//
//        val afterness = mutableListOf(
//            params.afterness1.get() ?: Afterness.Before,
//            params.afterness2.get() ?: Afterness.After)
//
//        val afternessSelectDomid = listOf(nextJsIdent(), nextJsIdent())
//
//        init {
//            for (i in 0..1)
//                if (!info[i].hasStateBefore())
//                    afterness[i] = Afterness.After
//
//            val currentOrder = when (operation0) {
//                is OperationInfo.UpdateOrder_V1 -> dbSelectOrderById(operation0.data.orderAfterOperation.id)
//                else -> null
//            }
//
//            rctx2.htmlHeadTitle = when {
//                currentOrder != null ->
//                    AlText.shortOrder(currentOrder.id) + ": " +
//                        AlText.shortOperation(operation0.operationId) + " ${AlText.leftRightArrow} " +
//                        AlText.shortOperation(operation1.operationId)
//                else -> wtf()
//            }
//
//            spitUsualPage_withNewContext1 {
//                composeMinimalMainContainer {
//                    oo(composePageHeader(t("TOTE", "Сравниваем операции ${AlText.numString(operation0.operationId)} и ${AlText.numString(operation1.operationId)}")))
//
//                    val tableStyle = nextJsIdent()
//                    drooStylesheet("""
//                    .$tableStyle td {padding: 4px;}
//                    .$tableStyle td:first-child {padding-left: 0px;}
//                """)
//
//                    oo(div().style("margin-top: 1em;").with {
//                        if (currentOrder != null) {
//                            oo(div().with {
//                                oo(span(t("TOTE", "Заказ ") + AlText.numString(currentOrder.id))
//                                    .style("font-weight: bold;"))
//                                oo(span(currentOrder.documentTitle)
//                                    .style("margin-left: 0.5em;"))
//                            })
//                        }
//
//                        oo(table().className(tableStyle).with {
//                            oo(tr().with {
//                                oo(td().style("text-align: left;").add(t("TOTE", "Сравнить состояние")))
//                                oo(td().add(composeAfternessSelect(0)))
//                                oo(td().add(composeOperationDescrLine("1.", info[0])))
//                            })
//                            oo(tr().with {
//                                oo(td().style("text-align: left;").add(t("TOTE", "с состоянием")))
//                                oo(td().add(composeAfternessSelect(1)))
//                                oo(td().add(composeOperationDescrLine("2.", info[1])))
//                            })
//                        })
//                    })
//
//                    oo(div().style("margin-top: 0.5em;").with {
//                        oo(composeButton_primary(t("TOTE", "Поджигай"))
//                            .attachOnClickWhenDomReady("""
//                            const href = ${jsStringLiteral(makeUrlPart(`attic--SpitCompareOperationsPage`::class) {})}
//                                + "?${params.id1.name}=" + ${jsStringLiteral("" + operationId[0])}
//                                + "&${params.afterness1.name}=" + ${jsByIDSingle(afternessSelectDomid[0])}.val()
//                                + "&${params.id2.name}=" + ${jsStringLiteral("" + operationId[1])}
//                                + "&${params.afterness2.name}=" + ${jsByIDSingle(afternessSelectDomid[1])}.val()
//                            // console.log('href', href)
//                            ${!JsProgressyNavigate().jsHref("href")}
//                        """))
//                    })
//
//                    oo(div().style("margin-top: 1em; padding-top: 1em; border-top: 2px solid ${Color.Gray500};").with {
//                        when {
//                            operation0 is OperationInfo.UpdateOrder_V1 && operation1 is OperationInfo.UpdateOrder_V1 -> {
//                                val entity0 = bang(when (afterness[0]) {
//                                    Afterness.Before -> operation0.data.orderBeforeOperation
//                                    Afterness.After -> operation0.data.orderAfterOperation
//                                })
//                                val entity1 = bang(when (afterness[1]) {
//                                    Afterness.Before -> operation1.data.orderBeforeOperation
//                                    Afterness.After -> operation1.data.orderAfterOperation
//                                })
//                                drooOrderParamsComparison(entity0, entity1)
//                            }
//                            else -> wtf()
//                        }
//                    })
//                }
//            }
//        }
//
//        fun composeOperationDescrLine(num: String, info: OperationInfo) =
//            divFlexCenter().with {
//                oo(span().style("font-weight: bold; margin-right: 0.5em;")
//                    .add(num))
//                oo(composeOperationTitle2(info))
//            }
//
//        fun composeAfternessSelect(index: Int): AlTag {
//            val paramValue = afterness[index]
//            return select().id(afternessSelectDomid[index]).className("form-control").style("width: inherit;").with {
//                if (info[index].hasStateBefore())
//                    oo(option().value(Afterness.Before.name).selected(paramValue == Afterness.Before).add(t("TOTE", "до")))
//                oo(option().value(Afterness.After.name).selected(paramValue == Afterness.After).add(t("TOTE", "после")))
//            }
//        }
//    }
//
//}

