Ejemplo n.º 1
0
        public static StageVm SwitchBlocksToStageVm(
            this core.Sorting.ISwitch[][] switchBlocks,
            int stageIndex,
            StageVmStyle stageVmStyle,
            int order,
            SortableVm sortableVm)
        {
            var kpVms = switchBlocks.ToKeyPairVms(stageIndex, stageVmStyle);

            return(new StageVm(
                       stageIndex: stageIndex,
                       stageVmStyle: stageVmStyle.ChangeSectionCount(switchBlocks.Length),
                       order: order,
                       keyPairVms: kpVms,
                       sortableVm: sortableVm.ChangeSectionCount(switchBlocks.Length)
                       ));
        }
Ejemplo n.º 2
0
        public static Tuple <StageVm, SortableVm> ToNextStep(this StageVm stageVm,
                                                             SortableVm sortableVm = null)
        {
            if (stageVm.SortableVm == null)
            {
                if (sortableVm == null)
                {
                    return(new Tuple <StageVm, SortableVm>(
                               item1: stageVm,
                               item2: null));
                }
                return(new Tuple <StageVm, SortableVm>(
                           item1: new StageVm(
                               stageIndex: stageVm.StageIndex,
                               stageVmStyle: stageVm.StageVmStyle,
                               order: stageVm.Order,
                               keyPairVms: stageVm.KeyPairVms,
                               sortableVm: sortableVm.ChangeSectionCount(stageVm.StageVmStyle.SortableVmStyle.SectionCount)),
                           item2: null));
            }

            if (stageVm.SortableVm.StageVmStep == StageVmStep.PostSort)
            {
                if (sortableVm == null)
                {
                    return(new Tuple <StageVm, SortableVm>(
                               item1: stageVm,
                               item2: null));
                }
                return(new Tuple <StageVm, SortableVm>(
                           item1: new StageVm(
                               stageIndex: stageVm.StageIndex,
                               stageVmStyle: stageVm.StageVmStyle,
                               order: stageVm.Order,
                               keyPairVms: stageVm.KeyPairVms,
                               sortableVm: sortableVm.ChangeSectionCount(stageVm.StageVmStyle.SortableVmStyle.SectionCount)
                               ),
                           item2: null));
            }

            switch (stageVm.SortableVm.StageVmStep)
            {
            case StageVmStep.Init:

                return(new Tuple <StageVm, SortableVm>(
                           item1: new StageVm(
                               stageIndex: stageVm.StageIndex,
                               stageVmStyle: stageVm.StageVmStyle,
                               order: stageVm.Order,
                               keyPairVms: stageVm.KeyPairVms,
                               sortableVm: stageVm.SortableVm.ToLeftStep(stageVm.KeyPairVms.ToArray())),
                           item2: null));

            case StageVmStep.Left:

                return(new Tuple <StageVm, SortableVm>(
                           item1: new StageVm(
                               stageIndex: stageVm.StageIndex,
                               stageVmStyle: stageVm.StageVmStyle,
                               order: stageVm.Order,
                               keyPairVms: stageVm.KeyPairVms,
                               sortableVm: stageVm.SortableVm.ToPreSortStep(stageVm.KeyPairVms.ToArray())),
                           item2: null));


            case StageVmStep.Presort:

                return(new Tuple <StageVm, SortableVm>(
                           item1: new StageVm(
                               stageIndex: stageVm.StageIndex,
                               stageVmStyle: stageVm.StageVmStyle,
                               order: stageVm.Order,
                               keyPairVms: stageVm.KeyPairVms.UpdateKeyPairVms(stageVm.SortableVm.PastSortableItemVms),
                               sortableVm: stageVm.SortableVm.ToPostSortStep()),
                           item2: stageVm.SortableVm.ToInitStep()));


            case StageVmStep.PostSort:

                return(new Tuple <StageVm, SortableVm>(
                           item1: new StageVm(
                               stageIndex: stageVm.StageIndex,
                               stageVmStyle: stageVm.StageVmStyle,
                               order: stageVm.Order,
                               keyPairVms: stageVm.KeyPairVms,
                               sortableVm: null),
                           item2: null));

            default:
                throw new Exception($"{stageVm.SortableVm.StageVmStep} not handled");
            }
        }